mac80211: account TX MSDUs properly with segmentation offload
authorJohannes Berg <johannes.berg@intel.com>
Tue, 23 Jun 2015 09:50:52 +0000 (11:50 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 17 Jul 2015 13:38:28 +0000 (15:38 +0200)
If an SKB will be segmented by the driver, count it for multiple
MSDUs that are being transmitted rather than just a single.

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

index c0d6af809640ff6aedd745f9acda9170f4e14ea0..d14f3618069f0a8a3fde60620aad6f7054d731cf 100644 (file)
@@ -2771,7 +2771,11 @@ static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata,
                sdata->sequence_number += 0x10;
        }
 
-       sta->tx_msdu[tid]++;
+       if (skb_shinfo(skb)->gso_size)
+               sta->tx_msdu[tid] +=
+                       DIV_ROUND_UP(skb->len, skb_shinfo(skb)->gso_size);
+       else
+               sta->tx_msdu[tid]++;
 
        info->hw_queue = sdata->vif.hw_queue[skb_get_queue_mapping(skb)];