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)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 15 Jun 2021 14:05:19 +0000 (17:05 +0300)
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
drivers/net/wireless/ath/ath11k/mac.c

index 9d0ff150ec30f17304ecf435e9009035b790868a..eb52332dbe3f137005daa80ef77ea9a2b537b541 100644 (file)
@@ -5379,11 +5379,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",
@@ -5391,6 +5386,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) {