diff mbox series

[v2] wifi: ath11k: fix monitor vdev creation with firmware recovery

Message ID 20221014155054.11471-1-quic_nmaran@quicinc.com (mailing list archive)
State Accepted
Commit f3ca72b0327101a074a871539e61775d43908ca4
Delegated to: Kalle Valo
Headers show
Series [v2] wifi: ath11k: fix monitor vdev creation with firmware recovery | expand

Commit Message

Nagarajan Maran Oct. 14, 2022, 3:50 p.m. UTC
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>
---
v2:
 - added "wifi" to the patch title.
---
 drivers/net/wireless/ath/ath11k/core.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Kalle Valo Oct. 28, 2022, 1:40 p.m. UTC | #1
Nagarajan Maran <quic_nmaran@quicinc.com> wrote:

> 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>

Patch applied to ath-next branch of ath.git, thanks.

f3ca72b03271 wifi: ath11k: fix monitor vdev creation with firmware recovery
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 35a5de3a0a8a..0ab2f190f1ec 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -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);