From: Lorenzo Bianconi Date: Fri, 6 Apr 2012 18:48:15 +0000 (+0200) Subject: mac80211: fix an issue in ieee80211_tx_info count field management X-Git-Tag: v3.12-rc1~3113^2~410^2~71 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d01b31604c55c52e08fbc6fc160137a12983df64;p=kernel%2Fkernel-generic.git mac80211: fix an issue in ieee80211_tx_info count field management I noticed a possible issue in the status count field management of the ieee80211_tx_info data structure. In particular, when the AGGR processing is employed, status.rates[].count is set just for the first frame and not for others belonging to the same burst, leading to wrong statistic data in the mac80211 debug file system. Signed-off-by: Lorenzo Bianconi Signed-off-by: John W. Linville --- diff --git a/net/mac80211/status.c b/net/mac80211/status.c index 5f8f89e..05f257a 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c @@ -355,7 +355,13 @@ void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb) int rtap_len; for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { - if (info->status.rates[i].idx < 0) { + if ((info->flags & IEEE80211_TX_CTL_AMPDU) && + !(info->flags & IEEE80211_TX_STAT_AMPDU)) { + /* just the first aggr frame carry status info */ + info->status.rates[i].idx = -1; + info->status.rates[i].count = 0; + break; + } else if (info->status.rates[i].idx < 0) { break; } else if (i >= hw->max_report_rates) { /* the HW cannot have attempted that rate */