]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mac80211: fix MPDU length parsing for EHT 5/6 GHz
authorBenjamin Berg <benjamin.berg@intel.com>
Tue, 11 Mar 2025 11:17:04 +0000 (12:17 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 12 Mar 2025 08:29:14 +0000 (09:29 +0100)
The MPDU length is only configured using the EHT capabilities element on
2.4 GHz. On 5/6 GHz it is configured using the VHT or HE capabilities
respectively.

Fixes: cf0079279727 ("wifi: mac80211: parse A-MSDU len from EHT capabilities")
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Link: https://patch.msgid.link/20250311121704.0634d31f0883.I28063e4d3ef7d296b7e8a1c303460346a30bf09c@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/eht.c

index 7a3116c36df9f489eebd85b26d27f5c2545fb9d2..fd41046e3b681b753e6cc7ddf82046e4bc5df9b3 100644 (file)
@@ -2,7 +2,7 @@
 /*
  * EHT handling
  *
- * Copyright(c) 2021-2024 Intel Corporation
+ * Copyright(c) 2021-2025 Intel Corporation
  */
 
 #include "ieee80211_i.h"
@@ -76,6 +76,13 @@ ieee80211_eht_cap_ie_to_sta_eht_cap(struct ieee80211_sub_if_data *sdata,
        link_sta->cur_max_bandwidth = ieee80211_sta_cap_rx_bw(link_sta);
        link_sta->pub->bandwidth = ieee80211_sta_cur_vht_bw(link_sta);
 
+       /*
+        * The MPDU length bits are reserved on all but 2.4 GHz and get set via
+        * VHT (5 GHz) or HE (6 GHz) capabilities.
+        */
+       if (sband->band != NL80211_BAND_2GHZ)
+               return;
+
        switch (u8_get_bits(eht_cap->eht_cap_elem.mac_cap_info[0],
                            IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_MASK)) {
        case IEEE80211_EHT_MAC_CAP0_MAX_MPDU_LEN_11454: