diff mbox

ath10k: Reduce warning messages during rx without proper channel context

Message ID 1462893136-16051-1-git-send-email-mohammed@qca.qualcomm.com (mailing list archive)
State Accepted
Commit 6270acd71234eec9e507037abb1492989eb110d6
Delegated to: Kalle Valo
Headers show

Commit Message

Mohammed Shafi Shajakhan May 10, 2016, 3:12 p.m. UTC
From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>

WARN_ON_ONCE when we receive packets for self peer when mac80211
had not assigned a proper channel context. This scenario happens
in QCA4019 when we start the AP via hostapd in background and start
it once again in the background without killing the previous instance!
This happens intermittently when we start / stop hostapd in a while loop
(incase the hostapd is not properly killed).  This results in mac80211
chancontext to be unassigned, while the self peer continuous receive
packets in target operating channel. This results in lot of call traces
in the rx path. Make this as a WARN_ON_ONCE to avoid flooding the console
which result in rebooting low memory systems, while still reporting the
warning once that we are receiving packets in target operating channel and
to indicate that something is happening which is not the expected result.

WARNING: CPU: 0 PID: 0 at ath/ath10k/htt_rx.c:803
[<c0318838>] (warn_slowpath_null) from [<bf4a0104>]
(ath10k_htt_rx_h_channel+0xe0/0x1b8 [ath10k_core])
[<bf4a0104>] (ath10k_htt_rx_h_channel [ath10k_core]) from
[<bf4a025c>] (ath10k_htt_rx_h_ppdu+0x80/0x288 [ath10k_core])
[<bf4a025c>] (ath10k_htt_rx_h_ppdu [ath10k_core]) from
[<bf4a1a9c>] (ath10k_htt_txrx_compl_task+0x724/0x9d4 [ath10k_core])
[<bf4a1a9c>] (ath10k_htt_txrx_compl_task [ath10k_core])

Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/htt_rx.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kalle Valo May 24, 2016, 5:53 p.m. UTC | #1
Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> wrote:
> From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>
> 
> WARN_ON_ONCE when we receive packets for self peer when mac80211
> had not assigned a proper channel context. This scenario happens
> in QCA4019 when we start the AP via hostapd in background and start
> it once again in the background without killing the previous instance!
> This happens intermittently when we start / stop hostapd in a while loop
> (incase the hostapd is not properly killed).  This results in mac80211
> chancontext to be unassigned, while the self peer continuous receive
> packets in target operating channel. This results in lot of call traces
> in the rx path. Make this as a WARN_ON_ONCE to avoid flooding the console
> which result in rebooting low memory systems, while still reporting the
> warning once that we are receiving packets in target operating channel and
> to indicate that something is happening which is not the expected result.
> 
> WARNING: CPU: 0 PID: 0 at ath/ath10k/htt_rx.c:803
> [<c0318838>] (warn_slowpath_null) from [<bf4a0104>]
> (ath10k_htt_rx_h_channel+0xe0/0x1b8 [ath10k_core])
> [<bf4a0104>] (ath10k_htt_rx_h_channel [ath10k_core]) from
> [<bf4a025c>] (ath10k_htt_rx_h_ppdu+0x80/0x288 [ath10k_core])
> [<bf4a025c>] (ath10k_htt_rx_h_ppdu [ath10k_core]) from
> [<bf4a1a9c>] (ath10k_htt_txrx_compl_task+0x724/0x9d4 [ath10k_core])
> [<bf4a1a9c>] (ath10k_htt_txrx_compl_task [ath10k_core])
> 
> Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com>

Thanks, 1 patch applied to ath.git:

3b0499e9ce42 ath10k: reduce warning messages during rx without proper channel context
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/htt_rx.c b/drivers/net/wireless/ath/ath10k/htt_rx.c
index cc979a4..77d9200 100644
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
@@ -748,7 +748,7 @@  ath10k_htt_rx_h_peer_channel(struct ath10k *ar, struct htt_rx_desc *rxd)
 	if (WARN_ON_ONCE(!arvif))
 		return NULL;
 
-	if (WARN_ON(ath10k_mac_vif_chan(arvif->vif, &def)))
+	if (WARN_ON_ONCE(ath10k_mac_vif_chan(arvif->vif, &def)))
 		return NULL;
 
 	return def.chan;