summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_output.c
Commit message (Collapse)AuthorAgeFilesLines
* The draft spec doesn't say beacon frames need to have a wildcard BSSID,rpaulo2009-10-231-7/+1
| | | | | | so remove the mesh code necessary for that. MFC after: 2 days
* Implement the missing support for updating the mesh conf number ofrpaulo2009-10-191-0/+12
| | | | | | neighbors via ieee80211_beacon_notify(). MFC after: 3 days
* revert OACTIVE part of r195845; instead fix the comment so it does not refersam2009-07-241-1/+13
| | | | | | to the old hack removed in r193312 Approved by: re (implicit)
* o kill old code no longer needed after r193312sam2009-07-241-14/+3
| | | | | | o count output packets+errors for frames sent through ieee80211_output Approved by: re (kensmith)
* More mesh bits, namely:rpaulo2009-07-201-17/+32
| | | | | | | | | | | | | | * bridge support (sam) * handling of errors (sam) * deletion of inactive routing entries * more debug msgs (sam) * fixed some inconsistencies with the spec. * decap is now specific to mesh (sam) * print mesh seq. no. on ifconfig list mesh * small perf. improvements Reviewed by: sam Approved by: re (kib)
* Implementation of the upcoming Wireless Mesh standard, 802.11s, on therpaulo2009-07-111-58/+245
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* do not strip M_MORE_DATA on packets coming through ieee80211_start;sam2009-06-081-3/+4
| | | | | | frames coming out of the ps q may have this set and removing it causes the 802.11 header to not indicate more frames follow which can result in the sta going to sleep and missing them
* teach ieee80211_classify about ipv6 packetssam2009-06-071-1/+23
| | | | Reviewed by: bz, rrs
* iv_flags_ext is full, make room by moving HT-related flags to a newsam2009-06-071-5/+5
| | | | iv_flags_ht word
* Fix spelling of MAC check for 8.x version of MAC Framework, not noticed duerwatson2009-06-051-1/+3
| | | | | | | to a lack of an opt_mac.h include, which I won't add for now as options MAC will soon move to opt_global.h. Spotted by: pjd
* o station mode channel switch supportsam2009-06-041-1/+1
| | | | | | | | | | 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
* Overhaul monitor mode handling:sam2009-05-201-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Store the tx seq# of an 802.11 frame in the mbuf pkthdr; this will besam2009-04-271-0/+4
| | | | | | | | | | used for s/w retransmit schemes that want to access this information w/o the overhead of decoding the raw frame. Note this also allows drivers to record this information w/o writing the frame when the seq# is obtained through an out-of-band mechanism (e.g. when a h/w assigned seq# is reported in a descriptor on tx done notification). Reviewed by: sephe, avatar
* add IEEE80211_FEXT_4ADDR to indicate ieee80211_encap should do 4-addresssam2009-04-261-4/+3
| | | | | encapsulation when relaying frames; this reduces the cost of the test and enables use for situations other than "sta vap + dwds"
* hoist ampdu tx aggregation setup from ieee80211_encap to ieee80211_startsam2009-04-261-37/+36
| | | | | where it was meant all along (the code was in encap because ampdu was implemented pre vaps)
* stash the node pointer in the mbuf before doing ff aggregration so thissam2009-04-261-8/+7
| | | | is done in only one place
* don't fragment ampdu aggregatessam2009-04-261-1/+1
|
* uniformly mark mbufs that pass through the tx path with M_MCAST; driverssam2009-04-261-15/+22
| | | | can now use this flag instead of inspecting the contents
* add missing part of r191537 that should have read: hoist DLT_IEEE802_11sam2009-04-261-4/+0
| | | | bpf tap from ieee80211_encap up to ieee80211_start
* fix commentsam2009-04-261-3/+1
|
* add missing DLT_IEEE802_11 bpf tap in ieee80211_startsam2009-04-261-0/+4
|
* fixup ieee80211_output handling:sam2009-04-261-1/+11
| | | | | | o correct bpf handling, send 'em to the right tap o do accouting o mark mbufs holding multicast frames
* Change if_output to take a struct route as its fourth argument in orderkmacy2009-04-161-2/+2
| | | | | | 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-8/+10
| | | | | | | 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
* fix whitespacesam2009-04-031-1/+1
|
* o update dwds mcast handling after hoisting ieee80211_encap: frames needsam2009-04-031-3/+2
| | | | | | to be encapsulated before dispatching to the driver o eliminate M_WDS now that we call ieee80211_encap directly and can supply the wds vap to indicate a 4-address frame should be created
* Hoist 802.11 encapsulation up into net80211:sam2009-03-301-18/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix enough bits so that fast frames work again:sam2009-03-261-11/+35
| | | | | | o include ath ie in beacon frames o fix probe response check for including ath ie o add ieee80211_add_athcap shorthand for ap-side ie additions
* need to adjust htinfo offset when csa is insertedsam2009-03-261-0/+1
|
* adjust tdma ie offset when beacon frame contents changessam2009-03-261-0/+6
|
* split Atheros SuperG support out into it's own file that's included onlysam2009-03-241-211/+26
| | | | with a new IEEE80211_SUPPORT_SUPERG option
* Remove leftover comment because we now use a flag to check for associd.rpaulo2009-03-191-1/+0
| | | | Discussed with: sam
* mark M_LASTFRAG at the last fragment.weongyo2009-02-091-0/+3
| | | | | Reviewed by: sam MFC after: 3 weeks
* TDMA support for long distance point-to-point links using ath devices:sam2009-01-081-2/+24
| | | | | | | | | | | | | | | 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
* follow prevailing stylesam2008-12-311-1/+1
|
* Replace adhoc checks in ieee80211_start with a per-node flag thatsam2008-12-151-3/+1
| | | | | | | | indicates if an association id is required before outbound traffic is permitted. This cleans up the previous change that broke mcast traffic "to the stack" in ap mode as a side effect. Reviewed by: sephe, thompsa, weongyo
* convert calls to IFQ_HANDOFF to if_transmitkmacy2008-11-221-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).
* introduce M_ENCAP flag to mark packets encapsulated w/ an 802.11 headersam2008-10-261-0/+6
|
* fix comment that belonged w/ previous commitsam2008-10-261-3/+2
|
* change ieee80211_send_probereq to supply raw xmit parameters so it cansam2008-10-261-2/+19
| | | | control how frames are handled by the driver
* change ieee80211_send_nulldata to send a QoS Null Data frame to asam2008-10-261-14/+51
| | | | | | QoS-enabled station; this makes inactivity handling follow the spec as previously it would probe inactive stations w/ a Null Data (no QoS) data frame
* o change ieee80211_mgmt_output to take a raw xmit parameters block sosam2008-10-261-26/+33
| | | | | | | | | 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
* fix old merge botch that causes gaps in the tx seq# space for QoS framessam2008-10-261-1/+0
|
* fix associd check for adhoc modesam2008-10-251-18/+13
| | | | Reviewed by: jhay
* Cleanup AMPDU handling:sam2008-09-211-3/+23
| | | | | | | | | | | | | | | | | | | | | | 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)
* reorder RSN/WPA2 ie in beacon and probe response frames to complysam2008-07-071-13/+13
| | | | | | with IEEE802.11-2007 spec Submitted by: Chris Zimmermann
* Split s/w crypt/mic attributes to allow future hackery; this changesam2008-05-281-1/+1
| | | | should be a noop.
* Multi-bss (aka vap) support for 802.11 devices.sam2008-04-201-738/+1288
| | | | | | | | | | | 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)
* Add padding for anticipated functionalitykmacy2007-12-071-1/+1
| | | | | | | | | | | | - vimage - TOE - multiq - host rtentry caching Rename spare used by 80211 to if_llsoftc Reviewed by: rwatson, gnn MFC after: 1 day
OpenPOWER on IntegriCloud