summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_var.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix typo, it is MPDU not MDPU.bschmidt2011-05-211-1/+1
|
* First step on removing the harcoded RX/TX stream and MCS0-15 assumptions.bschmidt2011-03-131-0/+4
| | | | | | | | | Initialize ic_rxstream/ic_txstream with 2, for compatibility reasons. Introduce 4 new HTC flags, which are used in addition to ic_rxstream and ic_txstream to compute the hc_mcsset content and also for initializing ni_htrates. The number of spatial streams is enough to determine support for MCS0-31 but not for MCS32-76 as well as some TX parameters in the hc_mcsset field.
* Instead of using the AMRR ratectl algo as default for drivers which havebschmidt2010-11-061-2/+1
| | | | | | | | | | | | | | | the IEEE80211_C_RATECTL flag set, default to NONE for all drivers. Only if a driver calls ieee80211_ratectl_init() check if the NONE algo is still selected and try to use AMRR in that case. Drivers are still free to use any other algo by calling ieee80211_ratectl_set() prior to the ieee80211_ratectl_init() call. After this change it is now safe to assume that a ratectl algo is always available and selected, which renders the IEEE80211_C_RATECTL flag pretty much useless. Therefore revert r211314 and 211546. Reviewed by: rpaulo MFC after: 2 weeks
* Introduce IEEE80211_C_RATECTL, drivers which use the ratectl frameworkbschmidt2010-08-141-1/+2
| | | | | | should set this capability. MFC after: 2 weeks
* Add ic_rxstream and ic_txstream. These variables hold the number of RXrpaulo2010-04-281-1/+2
| | | | | | | streams and the number of TX streams respectively. Obtained from: //depot/user/rpaulo/80211n/... Sponsored by: iXsystems, inc.
* net80211 rate control framework (net80211 ratectl).rpaulo2010-04-071-1/+4
| | | | | | | | | | | | | | | | | This framework allows drivers to abstract the rate control algorithm and just feed the framework with the usable parameters. The rate control framework will now deal with passing the parameters to the selected algorithm. Right now we have AMRR (the default) and RSSADAPT but there's no way to select one with ifconfig, yet. The objective is to have more rate control algorithms in the net80211 stack so all drivers[0] can use it. Ideally, we'll have the well-known sample rate control algorithm in the net80211 at some point so all drivers can use it (not just ath). [0] all drivers that do rate control in software, that is. Reviewed by: bschmidt, thompsa, weyongo MFC after: 1 months
* Constify vap argument of ieee80211_{note,discard}* functions.rpaulo2010-03-311-6/+6
| | | | MFC after: 1 week
* Add a new field for extended HT capabilities.rpaulo2010-03-231-1/+4
| | | | | | Submitted by: Alexander Egorenkov <egorenar at gmail.com> MFC after: 2 weeks Sponsored by: iXsystems, inc.
* Use the iflladdr_event event to keep the mac address on the vap in sync withthompsa2010-01-191-1/+2
| | | | | | | the parent wirless interface. If the user passed in a mac address or it was autogenerated then flag this to avoid trashing it on update. This will fix wlan+lagg in a post vap world.
* Fix #ifdefs so that GCC 4.4 doesn't complain about it.trasz2010-01-081-3/+3
| | | | Reviewed by: rpaulo
* Implementation of the upcoming Wireless Mesh standard, 802.11s, on therpaulo2009-07-111-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | net80211 wireless stack. This work is based on the March 2009 D3.0 draft standard. This standard is expected to become final next year. This includes two main net80211 modules, ieee80211_mesh.c which deals with peer link management, link metric calculation, routing table control and mesh configuration and ieee80211_hwmp.c which deals with the actually routing process on the mesh network. HWMP is the mandatory routing protocol on by the mesh standard, but others, such as RA-OLSR, can be implemented. Authentication and encryption are not implemented. There are several scripts under tools/tools/net80211/scripts that can be used to test different mesh network topologies and they also teach you how to setup a mesh vap (for the impatient: ifconfig wlan0 create wlandev ... wlanmode mesh). A new build option is available: IEEE80211_SUPPORT_MESH and it's enabled by default on GENERIC kernels for i386, amd64, sparc64 and pc98. Drivers that support mesh networks right now are: ath, ral and mwl. More information at: http://wiki.freebsd.org/WifiMesh Please note that this work is experimental. Also, please note that bridging a mesh vap with another network interface is not yet supported. Many thanks to the FreeBSD Foundation for sponsoring this project and to Sam Leffler for his support. Also, I would like to thank Gateworks Corporation for sending me a Cambria board which was used during the development of this project. Reviewed by: sam Approved by: re (kensmith) Obtained from: projects/mesh11s
* Add ieee80211_ageq; a facility for staging packets that requiresam2009-07-051-0/+5
| | | | | | | | | | | | | | | | | | | long-term work before they can be serviced. Packets are tagged and assigned an age (in seconds) at the point they are added to the queue. If a packet is not retrieved before it's age expires it is reclaimed. Tagging can take two forms: a reference to an ieee80211_node (as happens in the tx path) or an opaque token in cases where there is no reference or the node structure is not stable (i.e. it's going to be destroyed). o add ic_stageq to replace the per-node wds staging queue used for dynamic wds o add ieee80211_mac_hash for building ageq tokens; this computes a 32-bit hash from an 802.11 mac address (copied from the bridge) o while here fix a stray ';' noticed in IEEE80211_PSQ_INIT Reviewed by: rpaulo Approved by: re (kensmith)
* Revamp 802.11 action frame handling:sam2009-07-051-3/+4
| | | | | | | | | | | | | | 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)
* iv_flags_ext is full, make room by moving HT-related flags to a newsam2009-06-071-20/+28
| | | | iv_flags_ht word
* o add bits for STBC and Greenfieldsam2009-06-061-5/+8
| | | | o fix some comments
* o station mode channel switch supportsam2009-06-041-1/+2
| | | | | | | | | | o IEEE80211_IOC_CHANSWITCH fixups: - restrict to hostap vaps - return EOPNOTSUPP instead of EINVAL when applied to !hostap vap or to a vap w/o 11h enabled - interpret count of 0 to mean cancel the current CSA Reviewed by: rpaulo, avatar
* Fix monitor mode vaps to work as intended:sam2009-06-021-2/+3
| | | | | | | o track # bpf taps on monitor mode vaps instead of # monitor mode vaps o spam monitor mode taps on tx/rx o fix ieee80211_radiotap_rx_all to dispatch frames only if the vap is up o while here print radiotap (and superg) state in show com
* pad data structures to enable integration of future features w/o abi breakagesam2009-06-011-0/+2
|
* Overhaul monitor mode handling:sam2009-05-201-4/+37
| | | | | | | | | | | | | | | | | | | | | | | | 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
* make superg/fast-frames state dynamically-allocated (and indirect offsam2009-05-021-9/+3
| | | | | the com structure instead of embedded); this reduces the overhead when not configured and reduces visibility of the contents
* Create a taskqueue for each wireless interface which provides a serialisedthompsa2009-05-021-5/+33
| | | | | | | | | | | | | | | | | | | | | | | sleepable context for net80211 driver callbacks. This removes the need for USB and firmware based drivers to roll their own code to defer the chip programming for state changes, scan requests, channel changes and mcast/promisc updates. When a driver callback completes the hardware state is now guaranteed to have been updated and is in sync with net80211 layer. This nukes around 1300 lines of code from the wireless device drivers making them more readable and less race prone. The net80211 layer has been updated as follows - all state/channel changes are serialised on the taskqueue. - ieee80211_new_state() always queues and can now be called from any context - scanning runs from a single taskq function and executes to completion. driver callbacks are synchronous so the channel, phy mode and rx filters are guaranteed to be set in hardware before probe request frames are transmitted. Help and contributions from Sam Leffler. Reviewed by: sam
* add IEEE80211_FEXT_4ADDR to indicate ieee80211_encap should do 4-addresssam2009-04-261-2/+3
| | | | | encapsulation when relaying frames; this reduces the cost of the test and enables use for situations other than "sta vap + dwds"
* don't depend on includes to get definitions of struct ieee80211_tx_ampdusam2009-04-261-0/+2
| | | | and ieee80211_rx_ampdu; these should've been part of r191552
* allow drivers to hook ampdu rx start/stopsam2009-04-261-0/+6
|
* add iv_recv_ctl method to allow hooking rx ctl frame handlingsam2009-04-261-0/+2
|
* Change if_output to take a struct route as its fourth argument in orderkmacy2009-04-161-1/+1
| | | | | | to allow passing a cached struct llentry * down to L2 Reviewed by: rwatson
* o add a capability for drivers that require 802.3 encapsulation ofsam2009-04-081-2/+3
| | | | | | | frames passed down through the transmit path o mark ndis requiring 802.3 encap'd frames Reviewed by: "Paul B. Mahol" <onemda@gmail.com>, thompsa
* Hoist 802.11 encapsulation up into net80211:sam2009-03-301-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | o call ieee80211_encap in ieee80211_start so frames passed down to drivers are already encapsulated o remove ieee80211_encap calls in drivers o fixup wi so it recreates the 802.3 head it requires from the 802.11 header contents o move fast-frame aggregation from ath to net80211 (conditional on IEEE80211_SUPPORT_SUPERG): - aggregation is now done in ieee80211_start; it is enabled when the packets/sec exceeds ieee80211_ffppsmin (net.wlan.ffppsmin) and frames are held on a staging queue according to ieee80211_ffagemax (net.wlan.ffagemax) to wait for a frame to combine with - drivers must call back to age/flush the staging queue (ath does this on tx done, at swba, and on rx according to the state of the tx queues and/or the contents of the staging queue) - remove fast-frame-related data structures from ath - add ieee80211_ff_node_init and ieee80211_ff_node_cleanup to handle per-node fast-frames state (we reuse 11n tx ampdu state) o change ieee80211_encap calling convention to include an explicit vap so frames coming through a WDS vap are recognized w/o setting M_WDS With these changes any device able to tx/rx 3Kbyte+ frames can use fast-frames. Reviewed by: thompsa, rpaulo, avatar, imp, sephe
* MFP mesh11s:rpaulo2009-03-301-1/+1
| | | | Add mesh debugging bit replacing the now deprecated RADKEYS.
* o add ic_rt to track the rate table for the current channel; this enablessam2009-03-291-0/+2
| | | | | calculation of packet transmit times to do things like check txop limits o remove equivalent driver code and convert to use net80211 state
* Eliminate ic_myaddr so changing the mac address of a device works correctly:sam2009-03-291-2/+2
| | | | | | | | | | | o remove ic_myaddr from ieee80211com o change ieee80211_ifattach to take the mac address of the physical device and use that to setup the lladdr. o replace all references to ic_myaddr in drivers by IF_LLADDR o related cleanups (e.g. kill dead code) PR: kern/133178 Reviewed by: thompsa, rpaulo
* Minor cleanups of tdma protocol handling:sam2009-03-181-1/+1
| | | | | | | | | | | o break out version-related code to simplify rev'ing the protocol o add parameter validation macros so checks that appear multiple places are consistent (and easy to change) o add protocol version check when looking for a scan candidate o improve scan debug output format o rewrite beacon update handling to calculate a bitmask of changed values and pass that down through the driver callback so drivers can optimize work o do slot bounds check before use when parsing received beacons
* remove ic_stats; it was intended to accumulate stats from vaps as theysam2009-02-131-1/+0
| | | | were reaped but was never used and is inaccessible
* oops, fix octal escape sequencesam2009-02-111-1/+1
|
* fix mis-numbering of IEEE80211_MSG_BITSsam2009-02-111-4/+4
|
* change ic_getradiocaps driver callback to include the max # channelssam2009-01-271-1/+1
| | | | so callers know the size of the array passed down
* o make %b msg bit defines public (to user apps too)sam2009-01-271-0/+31
| | | | o rename IEEE80211_C_CRYPTO_BITS to IEEE80211_CRYPTO_BITS
* TDMA support for long distance point-to-point links using ath devices:sam2009-01-081-2/+13
| | | | | | | | | | | | | | | o add net80211 support for a tdma vap that is built on top of the existing adhoc-demo support o add tdma scheduling of frame transmission to the ath driver; it's conceivable other devices might be capable of this too in which case they can make use of the 802.11 protocol additions etc. o add minor bits to user tools that need to know: ifconfig to setup and configure, new statistics in athstats, and new debug mask bits While the architecture can support >2 slots in a TDMA BSS the current design is intended (and tested) for only 2 slots. Sponsored by: Intel
* Fix definition of IEEE80211_CHAN_MAX; it was defined as 255 butsam2008-12-151-1/+1
| | | | | | | really was meant to be 256. Adjust usage accordingly and replace bogus usage of this value in checking IEEE channel #'s. NB: this causes an ABI change; ifconfig must be recompiled
* correct sortingsam2008-11-231-1/+1
|
* New ap-side power save implementation; the main change is to allow driverssam2008-10-261-1/+1
| | | | | to queue frames previously encapsulated on a separate high priority list that is dispatched before the unencapsulated frames (to preserve order).
* Sync BAR frame handling with out of tree work:sam2008-10-251-0/+3
| | | | | | | | | | | | | 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
* RIFS support; needs driver callback for dynamic state changesam2008-09-221-0/+2
|
* MIMO power save support; still needs callbacks for notifying driverssam2008-09-211-0/+1
| | | | of dynamic state change in station mode.
* Crypto api changes:sam2008-09-211-1/+1
| | | | | | | | | | | | | | o don't use the key index to identify when the driver has been asked to allocate a key slot, use an explicit flag; allows drivers to force s/w fallback for entries in the global table o change callback api to allocate driver resources for a crypto key: - de-const the key parameter so drivers can muck with the flags - on callback failure don't automatically try to setup s/w crypto; instead the driver must now mark the key entry for s/w crypto and the caller will re-attach the cipher module NB: api change permits drivers more control over fallback to s/w crypto (e.g. based on a limited number of h/w key slots)
* Change the calling convention for ic_node_alloc to deal withsam2008-06-071-1/+2
| | | | | | | | | | | | some longstanding issues: o pass the vap since it's now the "coin of the realm" and required to do things like set initial tx parameters in private node state for use prior to association o pass the mac address as cards that maintain outboard station tables require this to create an entry (e.g. in ibss mode) o remove the node table reference, we only have one node table and it's unlikely this will change so this is not needed to find the com structure
* Add ieee80211_suspend_all and ieee80211_resume_all forsam2008-05-281-0/+1
| | | | brute force suspend/resume handling of vaps.
* Minor cleanup of vap create work:sam2008-05-121-1/+6
| | | | | | | | | | | | | o add IEEE80211_C_STA capability to indicate sta mode is supported (was previously assumed) and mark drivers as capable o add ieee80211_opcap array to map an opmode to the equivalent capability bit o move IEEE80211_C_OPMODE definition to where capabilities are defined so it's clear it should be kept in sync (on future additions) o check device capabilities in clone create before trying to create a vap; this makes driver checks unneeded o make error codes return on failed clone request unique o temporarily add console printfs on clone request failures to aid in debugging; these will move under DIAGNOSTIC or similar before release
* add DFS capability bit and use it to auto-enable DFS supportsam2008-05-111-0/+1
|
* Multi-bss (aka vap) support for 802.11 devices.sam2008-04-201-183/+328
| | | | | | | | | | | 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)
OpenPOWER on IntegriCloud