ath11k: send beacon template after vdev_start/restart during csa
authorSeevalamuthu Mariappan <seevalam@codeaurora.org>
Tue, 25 May 2021 13:30:28 +0000 (15:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Jul 2021 14:56:22 +0000 (16:56 +0200)
[ Upstream commit 979ebc54cf13bd1e3eb6e21766d208d5de984fb8 ]

Firmware has added assert if beacon template is received after
vdev_down. Firmware expects beacon template after vdev_start
and before vdev_up. This change is needed to support MBSSID EMA
cases in firmware.

Hence, Change the sequence in ath11k as expected from firmware.
This new change is not causing any issues with older
firmware.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1.r3-00011-QCAHKSWPL_SILICONZ-1
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1.r4-00008-QCAHKSWPL_SILICONZ-1

Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices")
Signed-off-by: Seevalamuthu Mariappan <seevalam@codeaurora.org>
[sven@narfation.org: added tested-on/fixes information]
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210525133028.2805615-1-sven@narfation.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ath/ath11k/mac.c

index 0738c784616f15edfa87896666b8369be7678238..cc0c30ceaa0d470b9b084966c8681eda5f25b002 100644 (file)
@@ -5123,11 +5123,6 @@ ath11k_mac_update_vif_chan(struct ath11k *ar,
                if (WARN_ON(!arvif->is_up))
                        continue;
 
-               ret = ath11k_mac_setup_bcn_tmpl(arvif);
-               if (ret)
-                       ath11k_warn(ab, "failed to update bcn tmpl during csa: %d\n",
-                                   ret);
-
                ret = ath11k_mac_vdev_restart(arvif, &vifs[i].new_ctx->def);
                if (ret) {
                        ath11k_warn(ab, "failed to restart vdev %d: %d\n",
@@ -5135,6 +5130,11 @@ ath11k_mac_update_vif_chan(struct ath11k *ar,
                        continue;
                }
 
+               ret = ath11k_mac_setup_bcn_tmpl(arvif);
+               if (ret)
+                       ath11k_warn(ab, "failed to update bcn tmpl during csa: %d\n",
+                                   ret);
+
                ret = ath11k_wmi_vdev_up(arvif->ar, arvif->vdev_id, arvif->aid,
                                         arvif->bssid);
                if (ret) {