|
@@ -3239,7 +3239,7 @@ static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata,
|
|
|
|
|
|
if (!ieee80211_amsdu_realloc_pad(local, skb, sizeof(rfc1042_header) +
|
|
|
2 + pad))
|
|
|
- goto out;
|
|
|
+ goto out_recalc;
|
|
|
|
|
|
ret = true;
|
|
|
data = skb_push(skb, ETH_ALEN + 2);
|
|
@@ -3256,11 +3256,13 @@ static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata,
|
|
|
head->data_len += skb->len;
|
|
|
*frag_tail = skb;
|
|
|
|
|
|
- flow->backlog += head->len - orig_len;
|
|
|
- tin->backlog_bytes += head->len - orig_len;
|
|
|
-
|
|
|
- fq_recalc_backlog(fq, tin, flow);
|
|
|
+out_recalc:
|
|
|
+ if (head->len != orig_len) {
|
|
|
+ flow->backlog += head->len - orig_len;
|
|
|
+ tin->backlog_bytes += head->len - orig_len;
|
|
|
|
|
|
+ fq_recalc_backlog(fq, tin, flow);
|
|
|
+ }
|
|
|
out:
|
|
|
spin_unlock_bh(&fq->lock);
|
|
|
|