mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 01:28:59 +00:00
ee5b593435
This showed up primarily on rt2x00
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry-picked from commit d1ea575baa
)
36 lines
1.2 KiB
Diff
36 lines
1.2 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Mon, 22 Nov 2021 21:39:38 +0100
|
|
Subject: [PATCH] mac80211: fix rate control for retransmitted frames
|
|
|
|
Since retransmission clears info->control, rate control needs to be called
|
|
again, otherwise the driver might crash due to invalid rates.
|
|
|
|
Cc: stable@vger.kernel.org # 5.14+
|
|
Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi>
|
|
Reported-by: Robert W <rwbugreport@lost-in-the-void.net>
|
|
Fixes: 03c3911d2d67 ("mac80211: call ieee80211_tx_h_rate_ctrl() when dequeue")
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/net/mac80211/tx.c
|
|
+++ b/net/mac80211/tx.c
|
|
@@ -1835,15 +1835,15 @@ static int invoke_tx_handlers_late(struc
|
|
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
|
|
ieee80211_tx_result res = TX_CONTINUE;
|
|
|
|
+ if (!ieee80211_hw_check(&tx->local->hw, HAS_RATE_CONTROL))
|
|
+ CALL_TXH(ieee80211_tx_h_rate_ctrl);
|
|
+
|
|
if (unlikely(info->flags & IEEE80211_TX_INTFL_RETRANSMISSION)) {
|
|
__skb_queue_tail(&tx->skbs, tx->skb);
|
|
tx->skb = NULL;
|
|
goto txh_done;
|
|
}
|
|
|
|
- if (!ieee80211_hw_check(&tx->local->hw, HAS_RATE_CONTROL))
|
|
- CALL_TXH(ieee80211_tx_h_rate_ctrl);
|
|
-
|
|
CALL_TXH(ieee80211_tx_h_michael_mic_add);
|
|
CALL_TXH(ieee80211_tx_h_sequence);
|
|
CALL_TXH(ieee80211_tx_h_fragment);
|