mac80211: don't send deferred frames outside the SP
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 17 Mar 2016 14:51:41 +0000 (16:51 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 5 Apr 2016 09:16:50 +0000 (11:16 +0200)
commitfacde7f332f91353c7a6d34c9cff6b329cc0c3ab
treeeca4b41c29d7350fa7ab97fb1c9eec8546b442f3
parentc2d45923e3df43b58bddf80debd8e22edd5077bf
mac80211: don't send deferred frames outside the SP

Frames that are sent between
ampdu_action(IEEE80211_AMPDU_TX_START) and the move to the
HT_AGG_STATE_OPERATIONAL state are buffered.
If we try to start an A-MPDU session while the peer is
sleeping and polling frames with U-APSD, we may have frames
that will be buffered by ieee80211_tx_prep_agg. These frames
have IEEE80211_TX_CTL_NO_PS_BUFFER set since they are sent to
a sleeping client and possibly IEEE80211_TX_STATUS_EOSP.
If the frame is buffered, we need clear these two flags
since they will be re-sent after the move to
HT_AGG_STATE_OPERATIONAL state which is very likely to
happen after the SP ends.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c