]> git.baikalelectronics.ru Git - kernel.git/commit
mac80211: release multiple ACs in uAPSD, fix more-data bug
authorJohannes Berg <johannes.berg@intel.com>
Wed, 8 Jan 2014 16:45:07 +0000 (17:45 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 10 Jan 2014 08:43:34 +0000 (09:43 +0100)
commitbfaae8065826f2be720355dcd44058bd218caa32
treed026bb050177719db0c35c77f4bf1c72f2ccd3e9
parentd729a1585c8011a70a48635223d9f1a6719fac26
mac80211: release multiple ACs in uAPSD, fix more-data bug

When a response for PS-Poll or a uAPSD trigger frame is sent, the
more-data bit should be set according to 802.11-2012 11.2.1.5 h),
meaning that it should indicate more data on the relevant ACs
(delivery-enabled or nondelivery-enabled for uAPSD or PS-Poll.)

In, for example, the following scenario:
 * 1 frame on VO queue (either in driver or in mac80211)
 * at least 1 frame on VI queue (in the driver)
 * both VO/VI are delivery-enabled
 * uAPSD trigger frame received

The more-data flag to the driver would not be set, even though
it should be.

While fixing this, I noticed that we should really release frames
from multiple ACs where there's data buffered in the driver for
the corresponding TIDs.

To address all this, restructure the code a bit to consider all
ACs if we only release driver frames or only buffered frames.
This also addresses the more-data bug described above as now the
TIDs will all be marked as released, so the driver will have to
check the number of frames.

While at it, clarify some code and comments and remove the found
variable, replacing it with the appropriate sw/hw release check.

Reported-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/sta_info.c