1/*- 2 * Copyright (c) 2001 Atsushi Onoe 3 * Copyright (c) 2002-2009 Sam Leffler, Errno Consulting 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 11 unchanged lines hidden (view full) --- 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_output.c 193655 2009-06-07 22:00:22Z sam $"); |
29 30#include "opt_inet.h" 31#include "opt_wlan.h" 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/mbuf.h> 36#include <sys/kernel.h> --- 224 unchanged lines hidden (view full) --- 261 * ADDBA request and wait for a reply. The frame being 262 * encapsulated will go out w/o using A-MPDU, or possibly 263 * it might be collected by the driver and held/retransmit. 264 * The default ic_ampdu_enable routine handles staggering 265 * ADDBA requests in case the receiver NAK's us or we are 266 * otherwise unable to establish a BA stream. 267 */ 268 if ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) && |
269 (vap->iv_flags_ht & IEEE80211_FHT_AMPDU_TX) && |
270 (m->m_flags & M_EAPOL) == 0) { 271 const int ac = M_WME_GETAC(m); 272 struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[ac]; 273 274 ieee80211_txampdu_count_packet(tap); 275 if (IEEE80211_AMPDU_RUNNING(tap)) { 276 /* 277 * Operational, mark frame for aggregation. --- 1570 unchanged lines hidden (view full) --- 1848 /* XXX else complain? */ 1849 } 1850 frm = ieee80211_add_xrates(frm, &ni->ni_rates); 1851 if (capinfo & IEEE80211_CAPINFO_SPECTRUM_MGMT) { 1852 frm = ieee80211_add_powercapability(frm, 1853 ic->ic_curchan); 1854 frm = ieee80211_add_supportedchannels(frm, ic); 1855 } |
1856 if ((vap->iv_flags_ht & IEEE80211_FHT_HT) && |
1857 ni->ni_ies.htcap_ie != NULL && 1858 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_HTCAP) 1859 frm = ieee80211_add_htcap(frm, ni); 1860 if (vap->iv_flags & IEEE80211_F_WPA1) { 1861 if (vap->iv_wpa_ie != NULL) 1862 frm = add_ie(frm, vap->iv_wpa_ie); 1863 /* XXX else complain */ 1864 } 1865 if ((ic->ic_flags & IEEE80211_F_WME) && 1866 ni->ni_ies.wme_ie != NULL) 1867 frm = ieee80211_add_wme_info(frm, &ic->ic_wme); |
1868 if ((vap->iv_flags_ht & IEEE80211_FHT_HT) && |
1869 ni->ni_ies.htcap_ie != NULL && 1870 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_VENDOR) 1871 frm = ieee80211_add_htcap_vendor(frm, ni); 1872#ifdef IEEE80211_SUPPORT_SUPERG 1873 if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS)) { 1874 frm = ieee80211_add_ath(frm, 1875 IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS), 1876 ((vap->iv_flags & IEEE80211_F_WPA) == 0 && --- 256 unchanged lines hidden (view full) --- 2133 if (vap->iv_flags & IEEE80211_F_WPA1) { 2134 if (vap->iv_wpa_ie != NULL) 2135 frm = add_ie(frm, vap->iv_wpa_ie); 2136 /* XXX else complain? */ 2137 } 2138 if (vap->iv_flags & IEEE80211_F_WME) 2139 frm = ieee80211_add_wme_param(frm, &ic->ic_wme); 2140 if (IEEE80211_IS_CHAN_HT(bss->ni_chan) && |
2141 (vap->iv_flags_ht & IEEE80211_FHT_HTCOMPAT) && |
2142 legacy != IEEE80211_SEND_LEGACY_11B) { 2143 frm = ieee80211_add_htcap_vendor(frm, bss); 2144 frm = ieee80211_add_htinfo_vendor(frm, bss); 2145 } 2146#ifdef IEEE80211_SUPPORT_SUPERG 2147 if ((vap->iv_flags & IEEE80211_F_ATHEROS) && 2148 legacy != IEEE80211_SEND_LEGACY_11B) 2149 frm = ieee80211_add_athcaps(frm, bss); --- 272 unchanged lines hidden (view full) --- 2422 frm = add_ie(frm, vap->iv_wpa_ie); 2423 /* XXX else complain */ 2424 } 2425 if (vap->iv_flags & IEEE80211_F_WME) { 2426 bo->bo_wme = frm; 2427 frm = ieee80211_add_wme_param(frm, &ic->ic_wme); 2428 } 2429 if (IEEE80211_IS_CHAN_HT(ni->ni_chan) && |
2430 (vap->iv_flags_ht & IEEE80211_FHT_HTCOMPAT)) { |
2431 frm = ieee80211_add_htcap_vendor(frm, ni); 2432 frm = ieee80211_add_htinfo_vendor(frm, ni); 2433 } 2434#ifdef IEEE80211_SUPPORT_SUPERG 2435 if (vap->iv_flags & IEEE80211_F_ATHEROS) { 2436 bo->bo_ath = frm; 2437 frm = ieee80211_add_athcaps(frm, ni); 2438 } --- 371 unchanged lines hidden --- |