aboutsummaryrefslogtreecommitdiff
path: root/sys/net80211/ieee80211_ht.c
Commit message (Collapse)AuthorAgeFilesLines
* Add a new field for extended HT capabilities.Rui Paulo2010-03-231-2/+11
| | | | | | | | | Submitted by: Alexander Egorenkov <egorenar at gmail.com> MFC after: 2 weeks Sponsored by: iXsystems, inc. Notes: svn path=/head/; revision=205513
* Unbreak build by removing a code bit that is only related to other codeRui Paulo2010-03-181-1/+1
| | | | | | | in my branch. Notes: svn path=/head/; revision=205281
* Fix a couple of bugs with 802.11n:Rui Paulo2010-03-181-23/+64
| | | | | | | | | | | | | | o Process the BAR frame on the adhoc, mesh and sta modes o Fix the format of the ADDBA reply frame o Fix references to the spec section numbers Also, print the all the MCS rates in bootverbose. Sponsored by: iXsystems, Inc. Obtained from: //depot/user/rpaulo/80211n/... Notes: svn path=/head/; revision=205277
* Revamp 802.11 action frame handling:Sam Leffler2009-07-051-343/+365
| | | | | | | | | | | | | | | | | o add a new facility for components to register send+recv handlers o ieee80211_send_action and ieee80211_recv_action now use the registered handlers to dispatch operations o rev ieee80211_send_action api to enable passing arbitrary data o rev ieee80211_recv_action api to pass the 802.11 frame header as it may be difficult to locate o update existing IEEE80211_ACTION_CAT_BA and IEEE80211_ACTION_CAT_HT handling o update mwl for api rev Reviewed by: rpaulo Approved by: re (kensmith) Notes: svn path=/head/; revision=195377
* Correct ieee80211_gettid:Sam Leffler2009-06-091-1/+1
| | | | | | | | | | | | | o don't increment extracted tid, this was a vestige of IEEE80211_NONQOS_TID being defined as 0 (w/ real tid's +1) o handle 4-address frames (add IEEE80211_IS_DSTODS to check if an 802.11 header is DSTODS) Submitted by: cbzimmer Reviewed by: avatar Notes: svn path=/head/; revision=193840
* iv_flags_ext is full, make room by moving HT-related flags to a newSam Leffler2009-06-071-37/+37
| | | | | | | iv_flags_ht word Notes: svn path=/head/; revision=193655
* distribute sysctl decls so global variables can be made staticSam Leffler2009-05-301-8/+23
| | | | Notes: svn path=/head/; revision=193115
* Overhaul monitor mode handling:Sam Leffler2009-05-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | o replace DLT_IEEE802_11 support in net80211 with DLT_IEEE802_11_RADIO and remove explicit bpf support from wireless drivers; drivers now use ieee80211_radiotap_attach to setup shared data structures that hold the radiotap header for each packet tx/rx o remove rx timestamp from the rx path; it was used only by the tdma support for debugging and was mostly useless due to it being 32-bits and mostly unavailable o track DLT_IEEE80211_RADIO bpf attachments and maintain per-vap and per-com state when there are active taps o track the number of monitor mode vaps o use bpf tap and monitor mode vap state to decide when to collect radiotap state and dispatch frames; drivers no longer explicitly directly check bpf state or use bpf calls to tap frames o handle radiotap state updates on channel change in net80211; drivers should not do this (unless they bypass net80211 which is almost always a mistake) o update various drivers to be more consistent/correct in handling radiotap o update ral to include TSF in radiotap'd frames o add promisc mode callback to wi Reviewed by: cbzimmer, rpaulo, thompsa Notes: svn path=/head/; revision=192468
* allow drivers to hook ampdu rx start/stopSam Leffler2009-04-261-10/+23
| | | | Notes: svn path=/head/; revision=191552
* o change ieee80211_mgmt_output to take a raw xmit parameters block soSam Leffler2008-10-261-1/+9
| | | | | | | | | | | | the net80211 layer has complete control over the handling of mgt frames (in particular, the ac, tx rate, and retry count); this also allows us to purge the M_LINK0 flag that was attached to mbufs to mark them as needing encryption for shared key auth o change ieee80211_send_setup to take a tid parameter so it can be used to setup QoS frames Notes: svn path=/head/; revision=184282
* Sync BAR frame handling with out of tree work:Sam Leffler2008-10-251-52/+181
| | | | | | | | | | | | | | | | o correct BAR frame construction for AMPDU o retransmit BAR frames until ACK'd or timeout (use tunables to control behaviour, default is very aggressive) o defer seq# update until BAR frame is ACK'd o add BAR response handling callback for driver to interpose and push new state to device or push pending aggregates While here also: o add backpointer to node in the per-tid tx aggregation data structure o move ampdu tx state setup/teardown work to separate functions Notes: svn path=/head/; revision=184280
* cleanup after mergeSam Leffler2008-09-221-1/+0
| | | | Notes: svn path=/head/; revision=183258
* Fix handling of shortgi: use the local configuration (and implicitlySam Leffler2008-09-221-0/+20
| | | | | | | | device capabilities) to decide whether to use short gi. Drivers inspect ni_flags to decide whether to send a frame w/ short sgi. Notes: svn path=/head/; revision=183257
* RIFS support; needs driver callback for dynamic state changeSam Leffler2008-09-221-2/+22
| | | | Notes: svn path=/head/; revision=183256
* MIMO power save support; still needs callbacks for notifying driversSam Leffler2008-09-211-2/+50
| | | | | | | of dynamic state change in station mode. Notes: svn path=/head/; revision=183255
* Revamp ht ie handling:Sam Leffler2008-09-211-42/+98
| | | | | | | | | | | | | | | | | | o change ieee80211_parse_htcap and ieee80211_parse_htinfo to save only internal state obtained from the ie's; no dynamic state such as ni_chw is altered o add ieee80211_ht_updateparams to parse ht cap+info ie's and update dynamic node state o change ieee80211_ht_node_init to not take an htcap ie that is parsed; instead have the caller make a separate call as one caller wants to parse the ie while another wants to parse both cap+info ie's and update state so can better do this with ieee80211_ht_updateparams These changes fix sta mode state handling where the node's channel width was shifted to ht20/ht40 prematurely. Notes: svn path=/head/; revision=183254
* don't propagate ht bss occupancy changes to legacy vaps;Sam Leffler2008-09-211-0/+3
| | | | | | | they won't have an htinfo ie to update Notes: svn path=/head/; revision=183253
* change ieee80211_ampdu_stop to take an explicit reason codeSam Leffler2008-09-211-5/+7
| | | | Notes: svn path=/head/; revision=183250
* simplify debug msgSam Leffler2008-09-211-3/+2
| | | | Notes: svn path=/head/; revision=183249
* Cleanup AMPDU handling:Sam Leffler2008-09-211-4/+12
| | | | | | | | | | | | | | | | | | | | | | | | | For receive: o explicitly tag rx frames w/ M_AMPDU instead of passing frames through the reorder processing according to the node having HT and the frame being QoS data o relax ieee80211_ampdu_reorder asserts to allow any frame to be passed in, unsuitable frames are returned to the caller for normal processing; this permits drivers that cannot inspect the PLCP to mark all data frames as potential ampdu candidates with only a small penalty o add M_AMPDU_MPDU to identify frames resubmitted from the reorder q For transmit: o tag aggregation candidates with M_AMPDU_MPDU o fix the QoS ack policy set in ampdu subframes; we only support immediate BA streams which should be marked for "normal ack" to get implicit block ack behaviour; interestingly certain vendor parts BA'd frames with the 11e BA ack policy set o do not assign a sequence # to aggregation candidates; this must be done when frames are submitted for transmit (NB: this can/will be handled better when aggregation is pulled up to net80211) Notes: svn path=/head/; revision=183247
* Always update ic_lastnonht so we track overlapping legacy bssSam Leffler2008-09-211-10/+9
| | | | | | | | | | properly; was doing this only on a change in the protection mode so the advertised protection mode in the beacon would oscillate. Submitted by: Chris Zimmermann Notes: svn path=/head/; revision=183246
* Cleanup starting seq# for tx ampdu:Sam Leffler2008-09-211-3/+5
| | | | | | | | | o use txa_start to form the addba request and purge txa_seqstart o fill txa_start before calling ic_addba_request to permit drivers to override when they handle seq# generation (e.g. mwl) Notes: svn path=/head/; revision=183245
* o kill IEEE80211_NODE_PSUPDATE; it was never usedSam Leffler2008-09-061-7/+5
| | | | | | | | o kill IEEE80211_NODE_CHWUPDATE; it's use was pointless and it was defined wrong (overlap w/ existing flags) Notes: svn path=/head/; revision=182831
* put back placeholder commentSam Leffler2008-09-061-0/+1
| | | | Notes: svn path=/head/; revision=182830
* o validate the ba policy in addba responseSam Leffler2008-09-061-1/+27
| | | | | | | | o leave a check for the max ba window disabled; we accept out of range values and just truncate them but may want to act differently in the future Notes: svn path=/head/; revision=182829
* add IEEE80211_NODE_HT_ALL to collect up all the HT-related node flagsSam Leffler2008-09-061-2/+1
| | | | Notes: svn path=/head/; revision=182828
* don't do ampdu reordering of fragments; they should never happenSam Leffler2008-09-061-1/+15
| | | | Notes: svn path=/head/; revision=182827
* moreve the aggregation q; it's not being used andSam Leffler2008-09-061-4/+0
| | | | | | | there's a better way to do this Notes: svn path=/head/; revision=182826
* add missing lock for htinfo updateSam Leffler2008-08-021-0/+2
| | | | | | | Submitted by: Chris Zimmermann Notes: svn path=/head/; revision=181197
* correct construction of delba action frame; don't shift+mask the initiatorSam Leffler2008-07-051-1/+1
| | | | | | | | | argument Submitted by: Marvell Notes: svn path=/head/; revision=180309
* use the current left edge of the BA window when forming ADDBA requestSam Leffler2008-05-111-3/+4
| | | | | | | so an existing session is re-established with the correct seq# Notes: svn path=/head/; revision=178953
* Multi-bss (aka vap) support for 802.11 devices.Sam Leffler2008-04-201-226/+365
| | | | | | | | | | | | | | Note this includes changes to all drivers and moves some device firmware loading to use firmware(9) and a separate module (e.g. ral). Also there no longer are separate wlan_scan* modules; this functionality is now bundled into the wlan module. Supported by: Hobnob and Marvell Reviewed by: many Obtained from: Atheros (some bits) Notes: svn path=/head/; revision=178354
* o correct typo that broke check when handling addba responseSam Leffler2008-02-011-1/+2
| | | | | | | | | | o add a comment about the ht rates being for 20MHz channels w/ long GI; needs a separate fix after more thought MFC after: 3 days Notes: svn path=/head/; revision=175877
* correct sta mode setup: adopt ap's ampdu density and max ampdu sizeSam Leffler2007-11-231-2/+8
| | | | | | | | | instead of using local settings MFC after: 3 days Notes: svn path=/head/; revision=173865
* correct termination check doing amsdu de-aggregationSam Leffler2007-11-081-4/+3
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=173462
* sync 11n support with vap code base; many changes based on interopSam Leffler2007-11-021-193/+686
| | | | | | | | | testing with all major vendors MFC after: 1 week Notes: svn path=/head/; revision=173273
* o add IEEE80211_RATE_MCS to use instead of naked constant (for marking MCS)Sam Leffler2007-09-181-1/+2
| | | | | | | | | | o correct ieee80211_rate2media handling of MCS o correct rate HT announcements for 11n devices Approved by: re (blanket wireless) Notes: svn path=/head/; revision=172226
* Update beacon handling to sync w/ vap code base:Sam Leffler2007-09-171-3/+33
| | | | | | | | | | | | | | | | | | | | | | o add driver callback to handle notification of beacon changes; this is required for devices that manage beacon frames themselves (devices must override the default handler which does nothing) o move beacon update-related flags from ieee80211com to the beacon offsets storage (or handle however a driver wants) o expand beacon offsets structure with members needed for 11h/dfs and appie's o change calling convention for ieee80211_beacon_alloc and ieee80211_beacon_update o add overlapping bss support for 11g; requires driver to pass beacon frames from overlapping bss up to net80211 which is not presently done by any driver o move HT beacon contents update to a routine in the HT code area Reviewed by: avatar, thompsa, sephe Approved by: re (blanket wireless) Notes: svn path=/head/; revision=172211
* Miscellaneous fixups to 802.11 defs:Sam Leffler2007-09-051-1/+1
| | | | | | | | | | | | | | | | o update 11n definitions to D2.0 spec o add IEEE80211_CAPINFO_SPECTRUM_MGMT for DFS support o add CSA ie definition for DFS support o purge some unused definitions o correct 802.11 reason and status codes o correct reason code returned when a sta tries to associate to an ap operating with WPA/RSN but without a WPA/RSN ie Reviewed by: thompsa, avatar Approved by: re (blanket wireless) Notes: svn path=/head/; revision=172055
* Update 802.11 wireless support:Sam Leffler2007-06-111-0/+1472
o major overhaul of the way channels are handled: channels are now fully enumerated and uniquely identify the operating characteristics; these changes are visible to user applications which require changes o make scanning support independent of the state machine to enable background scanning and roaming o move scanning support into loadable modules based on the operating mode to enable different policies and reduce the memory footprint on systems w/ constrained resources o add background scanning in station mode (no support for adhoc/ibss mode yet) o significantly speedup sta mode scanning with a variety of techniques o add roaming support when background scanning is supported; for now we use a simple algorithm to trigger a roam: we threshold the rssi and tx rate, if either drops too low we try to roam to a new ap o add tx fragmentation support o add first cut at 802.11n support: this code works with forthcoming drivers but is incomplete; it's included now to establish a baseline for other drivers to be developed and for user applications o adjust max_linkhdr et. al. to reflect 802.11 requirements; this eliminates prepending mbufs for traffic generated locally o add support for Atheros protocol extensions; mainly the fast frames encapsulation (note this can be used with any card that can tx+rx large frames correctly) o add sta support for ap's that beacon both WPA1+2 support o change all data types from bsd-style to posix-style o propagate noise floor data from drivers to net80211 and on to user apps o correct various issues in the sta mode state machine related to handling authentication and association failures o enable the addition of sta mode power save support for drivers that need net80211 support (not in this commit) o remove old WI compatibility ioctls (wicontrol is officially dead) o change the data structures returned for get sta info and get scan results so future additions will not break user apps o fixed tx rate is now maintained internally as an ieee rate and not an index into the rate set; this needs to be extended to deal with multi-mode operation o add extended channel specifications to radiotap to enable 11n sniffing Drivers: o ath: add support for bg scanning, tx fragmentation, fast frames, dynamic turbo (lightly tested), 11n (sniffing only and needs new hal) o awi: compile tested only o ndis: lightly tested o ipw: lightly tested o iwi: add support for bg scanning (well tested but may have some rough edges) o ral, ural, rum: add suppoort for bg scanning, calibrate rssi data o wi: lightly tested This work is based on contributions by Atheros, kmacy, sephe, thompsa, mlaier, kevlo, and others. Much of the scanning work was supported by Atheros. The 11n work was supported by Marvell. Notes: svn path=/head/; revision=170530