diff mbox series

ath11k: Avoid mgmt tx count underflow

Message ID 1585567028-9242-1-git-send-email-srirrama@codeaurora.org (mailing list archive)
State New, archived
Headers show
Series ath11k: Avoid mgmt tx count underflow | expand

Commit Message

Sriram R March 30, 2020, 11:17 a.m. UTC
The mgmt tx count reference is incremented/decremented on every mgmt tx and on
tx completion event from firmware.
In case of an unexpected mgmt tx completion event from firmware,
the counter would underflow. Avoid this by decrementing
only when the tx count is greater than 0.

Signed-off-by: Sriram R <srirrama@codeaurora.org>
---
 drivers/net/wireless/ath/ath11k/wmi.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Kalle Valo April 6, 2020, 4:24 p.m. UTC | #1
Sriram R <srirrama@codeaurora.org> wrote:

> The mgmt tx count reference is incremented/decremented on every mgmt tx and on
> tx completion event from firmware.
> In case of an unexpected mgmt tx completion event from firmware,
> the counter would underflow. Avoid this by decrementing
> only when the tx count is greater than 0.
> 
> Signed-off-by: Sriram R <srirrama@codeaurora.org>
> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>

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

800113ff4b1d ath11k: Avoid mgmt tx count underflow
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c
index e7ce369..d999c47 100644
--- a/drivers/net/wireless/ath/ath11k/wmi.c
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
@@ -3740,8 +3740,9 @@  static int wmi_process_mgmt_tx_comp(struct ath11k *ar, u32 desc_id,
 
 	ieee80211_tx_status_irqsafe(ar->hw, msdu);
 
-	WARN_ON_ONCE(atomic_read(&ar->num_pending_mgmt_tx) == 0);
-	atomic_dec(&ar->num_pending_mgmt_tx);
+	/* WARN when we received this event without doing any mgmt tx */
+	if (atomic_dec_if_positive(&ar->num_pending_mgmt_tx) < 0)
+		WARN_ON_ONCE(1);
 
 	return 0;
 }