]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2024 14:37:22 +0000 (16:37 +0200)
[ Upstream commit 67bb124cd9ae38870667e4f9c876ef8e0f82ec44 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/mac80211/mlme.c

index 0a4a25a10eaea48f4ef8a4cfd626e724be4c22ee..9e3d2ed9cf67806a50a59d0fa49c61071690808b 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);
        }