]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
staging: wfx: fix frame reordering
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Tue, 25 Aug 2020 08:58:23 +0000 (10:58 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 Oct 2020 09:11:15 +0000 (10:11 +0100)
[ Upstream commit 7373f31c4b5e382e5117b71a6792e8005c45aa50 ]

When mac80211 debug is enabled, the trace below appears:

    [60744.340037] wlan0: Rx A-MPDU request on aa:bb:cc:97:60:24 tid 0 result -524

This imply that ___ieee80211_start_rx_ba_session will prematurely exit
and frame reordering won't be enabled.

Fixes: e5da5fbd77411 ("staging: wfx: fix CCMP/TKIP replay protection")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200825085828.399505-7-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/wfx/sta.c

index 4e30ab17a93d488f670d5810edde3f013f4092f2..7dace7c17bf5c3db52022096537493cd7d6c6841 100644 (file)
@@ -682,15 +682,16 @@ int wfx_ampdu_action(struct ieee80211_hw *hw,
                     struct ieee80211_vif *vif,
                     struct ieee80211_ampdu_params *params)
 {
-       /* Aggregation is implemented fully in firmware,
-        * including block ack negotiation. Do not allow
-        * mac80211 stack to do anything: it interferes with
-        * the firmware.
-        */
-
-       /* Note that we still need this function stubbed. */
-
-       return -ENOTSUPP;
+       // Aggregation is implemented fully in firmware
+       switch (params->action) {
+       case IEEE80211_AMPDU_RX_START:
+       case IEEE80211_AMPDU_RX_STOP:
+               // Just acknowledge it to enable frame re-ordering
+               return 0;
+       default:
+               // Leave the firmware doing its business for tx aggregation
+               return -ENOTSUPP;
+       }
 }
 
 int wfx_add_chanctx(struct ieee80211_hw *hw,