]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: Check for missing VHT elements only for 5 GHz
authorIlan Peer <ilan.peer@intel.com>
Tue, 27 Aug 2024 08:39:20 +0000 (10:39 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 28 Aug 2024 10:39:50 +0000 (12:39 +0200)
Check for missing VHT Capabilities and VHT Operation elements in
association response frame only for 5 GHz links.

Fixes: 310c8387c638 ("wifi: mac80211: clean up connection process")
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20240827103920.dd711282d543.Iaba245cebc52209b0499d5bab7d8a8ef1df9dd65@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index acd4fe7039904b32d406e5a59d8ade43f71d6a34..6e99db7addf188bdcf1607ed6315a279044ea3ce 100644 (file)
@@ -4715,7 +4715,7 @@ static bool ieee80211_assoc_config_link(struct ieee80211_link_data *link,
            ((assoc_data->wmm && !elems->wmm_param) ||
             (link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_HT &&
              (!elems->ht_cap_elem || !elems->ht_operation)) ||
-            (link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT &&
+            (is_5ghz && link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT &&
              (!elems->vht_cap_elem || !elems->vht_operation)))) {
                const struct cfg80211_bss_ies *ies;
                struct ieee802_11_elems *bss_elems;
@@ -4763,19 +4763,22 @@ static bool ieee80211_assoc_config_link(struct ieee80211_link_data *link,
                        sdata_info(sdata,
                                   "AP bug: HT operation missing from AssocResp\n");
                }
-               if (!elems->vht_cap_elem && bss_elems->vht_cap_elem &&
-                   link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT) {
-                       elems->vht_cap_elem = bss_elems->vht_cap_elem;
-                       sdata_info(sdata,
-                                  "AP bug: VHT capa missing from AssocResp\n");
-               }
-               if (!elems->vht_operation && bss_elems->vht_operation &&
-                   link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT) {
-                       elems->vht_operation = bss_elems->vht_operation;
-                       sdata_info(sdata,
-                                  "AP bug: VHT operation missing from AssocResp\n");
-               }
 
+               if (is_5ghz) {
+                       if (!elems->vht_cap_elem && bss_elems->vht_cap_elem &&
+                           link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT) {
+                               elems->vht_cap_elem = bss_elems->vht_cap_elem;
+                               sdata_info(sdata,
+                                          "AP bug: VHT capa missing from AssocResp\n");
+                       }
+
+                       if (!elems->vht_operation && bss_elems->vht_operation &&
+                           link->u.mgd.conn.mode >= IEEE80211_CONN_MODE_VHT) {
+                               elems->vht_operation = bss_elems->vht_operation;
+                               sdata_info(sdata,
+                                          "AP bug: VHT operation missing from AssocResp\n");
+                       }
+               }
                kfree(bss_elems);
        }