Message ID | 1458226302-6086-1-git-send-email-emmanuel.grumbach@intel.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
On Thu, 2016-03-17 at 16:51 +0200, Emmanuel Grumbach wrote: > 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. > Applied. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 485e30a..114509a 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c @@ -1118,9 +1118,7 @@ static bool ieee80211_tx_prep_agg(struct ieee80211_tx_data *tx, queued = true; info->control.vif = &tx->sdata->vif; info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING; - info->flags &= ~IEEE80211_TX_TEMPORARY_FLAGS | - IEEE80211_TX_CTL_NO_PS_BUFFER | - IEEE80211_TX_STATUS_EOSP; + info->flags &= ~IEEE80211_TX_TEMPORARY_FLAGS; __skb_queue_tail(&tid_tx->pending, skb); if (skb_queue_len(&tid_tx->pending) > STA_MAX_TX_BUFFER) purge_skb = __skb_dequeue(&tid_tx->pending);
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> --- net/mac80211/tx.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)