* [PATCH 0/1] wil6210: fix support for sparrow chipsets
@ 2025-03-04 1:21 s.gottschall
2025-03-04 1:21 ` [PATCH 1/1] " s.gottschall
2025-06-07 14:43 ` [PATCH 0/1] " Jeff Johnson
0 siblings, 2 replies; 3+ messages in thread
From: s.gottschall @ 2025-03-04 1:21 UTC (permalink / raw)
To: linux-wireless; +Cc: Sebastian Gottschall
From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
the wil6210 driver irq handling code is unconditionally writing
edma irq registers which are supposed to be only used on Talyn chipsets.
This however leade to a chipset hang on the older sparrow chipset
generation and firmware will not even boot.
Fix that by simply checking for edma support before handling these
registers.
Tested on Netgear R9000
Sebastian Gottschall (1):
wil6210: fix support for sparrow chipsets
drivers/net/wireless/ath/wil6210/interrupt.c | 26 ++++++++++++--------
1 file changed, 16 insertions(+), 10 deletions(-)
--
2.35.3
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/1] wil6210: fix support for sparrow chipsets
2025-03-04 1:21 [PATCH 0/1] wil6210: fix support for sparrow chipsets s.gottschall
@ 2025-03-04 1:21 ` s.gottschall
2025-06-07 14:43 ` [PATCH 0/1] " Jeff Johnson
1 sibling, 0 replies; 3+ messages in thread
From: s.gottschall @ 2025-03-04 1:21 UTC (permalink / raw)
To: linux-wireless; +Cc: Sebastian Gottschall
From: Sebastian Gottschall <s.gottschall@dd-wrt.com>
the wil6210 driver irq handling code is unconditionally writing
edma irq registers which are supposed to be only used on Talyn chipsets.
This however leade to a chipset hang on the older sparrow chipset
generation and firmware will not even boot.
Fix that by simply checking for edma support before handling these
registers.
Tested on Netgear R9000
Signed-off-by: Sebastian Gottschall <s.gottschall@dd-wrt.com>
---
drivers/net/wireless/ath/wil6210/interrupt.c | 26 ++++++++++++--------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/ath/wil6210/interrupt.c b/drivers/net/wireless/ath/wil6210/interrupt.c
index 67172385a5d6..89d4394cedcf 100644
--- a/drivers/net/wireless/ath/wil6210/interrupt.c
+++ b/drivers/net/wireless/ath/wil6210/interrupt.c
@@ -179,9 +179,11 @@ void wil_mask_irq(struct wil6210_priv *wil)
wil_dbg_irq(wil, "mask_irq\n");
wil6210_mask_irq_tx(wil);
- wil6210_mask_irq_tx_edma(wil);
+ if (wil->use_enhanced_dma_hw)
+ wil6210_mask_irq_tx_edma(wil);
wil6210_mask_irq_rx(wil);
- wil6210_mask_irq_rx_edma(wil);
+ if (wil->use_enhanced_dma_hw)
+ wil6210_mask_irq_rx_edma(wil);
wil6210_mask_irq_misc(wil, true);
wil6210_mask_irq_pseudo(wil);
}
@@ -190,10 +192,12 @@ void wil_unmask_irq(struct wil6210_priv *wil)
{
wil_dbg_irq(wil, "unmask_irq\n");
- wil_w(wil, RGF_DMA_EP_RX_ICR + offsetof(struct RGF_ICR, ICC),
- WIL_ICR_ICC_VALUE);
- wil_w(wil, RGF_DMA_EP_TX_ICR + offsetof(struct RGF_ICR, ICC),
- WIL_ICR_ICC_VALUE);
+ if (wil->use_enhanced_dma_hw) {
+ wil_w(wil, RGF_DMA_EP_RX_ICR + offsetof(struct RGF_ICR, ICC),
+ WIL_ICR_ICC_VALUE);
+ wil_w(wil, RGF_DMA_EP_TX_ICR + offsetof(struct RGF_ICR, ICC),
+ WIL_ICR_ICC_VALUE);
+ }
wil_w(wil, RGF_DMA_EP_MISC_ICR + offsetof(struct RGF_ICR, ICC),
WIL_ICR_ICC_MISC_VALUE);
wil_w(wil, RGF_INT_GEN_TX_ICR + offsetof(struct RGF_ICR, ICC),
@@ -845,10 +849,12 @@ void wil6210_clear_irq(struct wil6210_priv *wil)
offsetof(struct RGF_ICR, ICR));
wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_TX_ICR) +
offsetof(struct RGF_ICR, ICR));
- wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_RX_ICR) +
- offsetof(struct RGF_ICR, ICR));
- wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_TX_ICR) +
- offsetof(struct RGF_ICR, ICR));
+ if (wil->use_enhanced_dma_hw) {
+ wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_RX_ICR) +
+ offsetof(struct RGF_ICR, ICR));
+ wil_clear32(wil->csr + HOSTADDR(RGF_INT_GEN_TX_ICR) +
+ offsetof(struct RGF_ICR, ICR));
+ }
wil_clear32(wil->csr + HOSTADDR(RGF_DMA_EP_MISC_ICR) +
offsetof(struct RGF_ICR, ICR));
wmb(); /* make sure write completed */
--
2.35.3
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 0/1] wil6210: fix support for sparrow chipsets
2025-03-04 1:21 [PATCH 0/1] wil6210: fix support for sparrow chipsets s.gottschall
2025-03-04 1:21 ` [PATCH 1/1] " s.gottschall
@ 2025-06-07 14:43 ` Jeff Johnson
1 sibling, 0 replies; 3+ messages in thread
From: Jeff Johnson @ 2025-06-07 14:43 UTC (permalink / raw)
To: linux-wireless, s.gottschall
On Tue, 04 Mar 2025 08:21:30 +0700, s.gottschall@dd-wrt.com wrote:
> the wil6210 driver irq handling code is unconditionally writing
> edma irq registers which are supposed to be only used on Talyn chipsets.
> This however leade to a chipset hang on the older sparrow chipset
> generation and firmware will not even boot.
> Fix that by simply checking for edma support before handling these
> registers.
>
> [...]
Applied, thanks!
[1/1] wil6210: fix support for sparrow chipsets
commit: 593963660919a97a4546acfd706dac93625724f5
Best regards,
--
Jeff Johnson <jeff.johnson@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-06-07 14:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-04 1:21 [PATCH 0/1] wil6210: fix support for sparrow chipsets s.gottschall
2025-03-04 1:21 ` [PATCH 1/1] " s.gottschall
2025-06-07 14:43 ` [PATCH 0/1] " Jeff Johnson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox