summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_superg.h
Commit message (Collapse)AuthorAgeFilesLines
* Atheros SuperG bug fixes, as part of hunting down kern/174283.adrian2012-12-091-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The stageqdepth (global, over all staging queues) was being kept incorrectly. It was being incremented whenever things were added, but only decremented during a flush. During active fast frames activity it wasn't being decremented, resulting in it always having a non-zero value during normal fast-frames operation. It was only used when checking if the aging queue should be checked; we may as well just defer to each of those staging queue counters (which look correct, thankfully.) Whilst I'm here, add locking assertions in the staging queue add/remove functions. The current crash shows that the staging queue has one frame, but only has a tail pointer set (the head pointer being set to NULL.) I'd like to grab a few more crashes where these locking assertions are in place so I can narrow down the issue between "somehow locking is messed up and things are racy" and "the stage queue head/tail pointer manipulation logic is subtly wrong." Tested: * AR5416 STA, AR5413 AP; with FastFrames enabled in the AR5416 HAL. PR: kern/174283
* Don't panic if the stageq here is empty; just fall through with NULLadrian2012-12-091-0/+8
| | | | | | | | | | | pointers and leave the stage queue flush routine to just do nothing (since both head and tail here will be NULL.) This should quieten the "stageq empty" panic where the stageq itself is empty, but it won't fix the second KASSERT() here "staging queue empty" as that's likely a different underlying problem. PR: kern/174283
* make superg/fast-frames state dynamically-allocated (and indirect offsam2009-05-021-7/+32
| | | | | the com structure instead of embedded); this reduces the overhead when not configured and reduces visibility of the contents
* Hoist 802.11 encapsulation up into net80211:sam2009-03-301-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* o move tdma+superg protocol defs out of public viewsam2009-03-261-0/+27
| | | | | o add #ifdef _KERNEL to superg+tdma include files so they can be used by user code to get the protocol defs
* Fix enough bits so that fast frames work again:sam2009-03-261-1/+2
| | | | | | 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
* split Atheros SuperG support out into it's own file that's included onlysam2009-03-241-0/+56
with a new IEEE80211_SUPPORT_SUPERG option
OpenPOWER on IntegriCloud