wifi: ath11k: fix monitor vdev creation with firmware recovery
authorNagarajan Maran <quic_nmaran@quicinc.com>
Fri, 14 Oct 2022 15:50:54 +0000 (21:20 +0530)
committerKalle Valo <quic_kvalo@quicinc.com>
Fri, 28 Oct 2022 13:40:22 +0000 (16:40 +0300)
During firmware recovery, the monitor interface is not
getting created in the driver and firmware since
the respective flags are not updated properly.

So after firmware recovery is successful, when monitor
interface is brought down manually, firmware assertion
is observed, since we are trying to bring down the
interface which is not yet created in the firmware.

Fix this by updating the monitor flags properly per
phy#, during firmware recovery.

Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Nagarajan Maran <quic_nmaran@quicinc.com>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20221014155054.11471-1-quic_nmaran@quicinc.com
drivers/net/wireless/ath/ath11k/core.c

index 35a5de3a0a8a3bb6b4ec1b29d6a68c58f5d53f77..0ab2f190f1ecb0a8c98d641f6f8ad8729a0cb119 100644 (file)
@@ -1677,6 +1677,10 @@ void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab)
                             ath11k_mac_tx_mgmt_pending_free, ar);
                idr_destroy(&ar->txmgmt_idr);
                wake_up(&ar->txmgmt_empty_waitq);
+
+               ar->monitor_vdev_id = -1;
+               clear_bit(ATH11K_FLAG_MONITOR_STARTED, &ar->monitor_flags);
+               clear_bit(ATH11K_FLAG_MONITOR_VDEV_CREATED, &ar->monitor_flags);
        }
 
        wake_up(&ab->wmi_ab.tx_credits_wq);