mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 05:24:12 +08:00
carl9170: fix tx_ampdu_upload counter
tx_ampdu_upload was not decreased when an a-MPDU frame had to be kicked out from the tx_pending queues. This broke ampdu aggregation, because the scheduler waits until tx_ampdu_upload drops to zero, before making the next aggregate. Signed-off-by: Christian Lamparter <chunkeey@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
042c53f6e8
commit
cb139ecc0c
@ -230,8 +230,15 @@ static void carl9170_flush(struct ar9170 *ar, bool drop_queued)
|
||||
for (i = 0; i < ar->hw->queues; i++) {
|
||||
struct sk_buff *skb;
|
||||
|
||||
while ((skb = skb_dequeue(&ar->tx_pending[i])))
|
||||
while ((skb = skb_dequeue(&ar->tx_pending[i]))) {
|
||||
struct ieee80211_tx_info *info;
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
if (info->flags & IEEE80211_TX_CTL_AMPDU)
|
||||
atomic_dec(&ar->tx_ampdu_upload);
|
||||
|
||||
carl9170_tx_status(ar, skb, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1462,6 +1469,7 @@ static void carl9170_op_sta_notify(struct ieee80211_hw *hw,
|
||||
skb_queue_walk_safe(&ar->tx_pending[i], skb, tmp) {
|
||||
struct _carl9170_tx_superframe *super;
|
||||
struct ieee80211_hdr *hdr;
|
||||
struct ieee80211_tx_info *info;
|
||||
|
||||
super = (void *) skb->data;
|
||||
hdr = (void *) super->frame_data;
|
||||
@ -1470,6 +1478,11 @@ static void carl9170_op_sta_notify(struct ieee80211_hw *hw,
|
||||
continue;
|
||||
|
||||
__skb_unlink(skb, &ar->tx_pending[i]);
|
||||
|
||||
info = IEEE80211_SKB_CB(skb);
|
||||
if (info->flags & IEEE80211_TX_CTL_AMPDU)
|
||||
atomic_dec(&ar->tx_ampdu_upload);
|
||||
|
||||
carl9170_tx_status(ar, skb, false);
|
||||
}
|
||||
spin_unlock_bh(&ar->tx_pending[i].lock);
|
||||
|
Loading…
Reference in New Issue
Block a user