]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: ath12k: use link specific bss_conf as well in ath12k_mac_vif_cache_flush()
authorBaochen Qiang <quic_bqiang@quicinc.com>
Mon, 9 Dec 2024 02:41:46 +0000 (10:41 +0800)
committerJeff Johnson <jeff.johnson@oss.qualcomm.com>
Mon, 24 Feb 2025 16:01:14 +0000 (08:01 -0800)
Commit 3952657848c0 ("wifi: ath12k: Use mac80211 vif's link_conf instead of
bss_conf") aims at, where applicable, replacing all usage of vif's bss_conf
with link specific bss_conff, but missed one instance in
ath12k_mac_vif_cache_flush(). This results in wrong configurations passed
to ath12k_mac_bss_info_changed() when the link in question is not the default
link.

Change to use the link specific bss_conf to fix this issue.

Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0-03427-QCAHMTSWPL_V1.0_V2.0_SILICONZ-1.15378.4

Fixes: 3952657848c0 ("wifi: ath12k: Use mac80211 vif's link_conf instead of bss_conf")
Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
Link: https://patch.msgid.link/20241209024146.3282-1-quic_bqiang@quicinc.com
Signed-off-by: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
drivers/net/wireless/ath/ath12k/mac.c

index 27d2fad1b915cae7eecb082a72e914e22849fab3..3e3afdc56fc968f9901fcd6302be2a90f3d1f874 100644 (file)
@@ -8346,6 +8346,7 @@ static void ath12k_mac_vif_cache_flush(struct ath12k *ar, struct ath12k_link_vif
        struct ieee80211_vif *vif = ath12k_ahvif_to_vif(ahvif);
        struct ath12k_vif_cache *cache = ahvif->cache[arvif->link_id];
        struct ath12k_base *ab = ar->ab;
+       struct ieee80211_bss_conf *link_conf;
 
        int ret;
 
@@ -8364,7 +8365,13 @@ static void ath12k_mac_vif_cache_flush(struct ath12k *ar, struct ath12k_link_vif
        }
 
        if (cache->bss_conf_changed) {
-               ath12k_mac_bss_info_changed(ar, arvif, &vif->bss_conf,
+               link_conf = ath12k_mac_get_link_bss_conf(arvif);
+               if (!link_conf) {
+                       ath12k_warn(ar->ab, "unable to access bss link conf in cache flush for vif %pM link %u\n",
+                                   vif->addr, arvif->link_id);
+                       return;
+               }
+               ath12k_mac_bss_info_changed(ar, arvif, link_conf,
                                            cache->bss_conf_changed);
        }