mac80211: provide race-free 64-bit traffic counters
Make the TX bytes/packets counters race-free by keeping them per AC so concurrent TX on queues can't cause lost or wrong updates. This works since each station belongs to a single interface. While at it also make the bytes counters 64-bit. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -991,15 +991,18 @@ static ieee80211_tx_result debug_noinline
|
||||
ieee80211_tx_h_stats(struct ieee80211_tx_data *tx)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
int ac = -1;
|
||||
|
||||
if (!tx->sta)
|
||||
return TX_CONTINUE;
|
||||
|
||||
tx->sta->tx_packets++;
|
||||
skb_queue_walk(&tx->skbs, skb) {
|
||||
ac = skb_get_queue_mapping(skb);
|
||||
tx->sta->tx_fragments++;
|
||||
tx->sta->tx_bytes += skb->len;
|
||||
tx->sta->tx_bytes[ac] += skb->len;
|
||||
}
|
||||
if (ac >= 0)
|
||||
tx->sta->tx_packets[ac]++;
|
||||
|
||||
return TX_CONTINUE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user