提交 4178d96f 编写于 作者: L Lorenzo Bianconi 提交者: Felix Fietkau

mt76: mt7663: check isr read return value in mt7663s_rx_work

In order to avoid using stale isr values, check return value from
sdio_readsb() in mt7663s_rx_work()
Tested-by: NSean Wang <sean.wang@mediatek.com>
Signed-off-by: NLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: NFelix Fietkau <nbd@nbd.name>
上级 1522ff73
...@@ -278,9 +278,12 @@ void mt7663s_rx_work(struct work_struct *work) ...@@ -278,9 +278,12 @@ void mt7663s_rx_work(struct work_struct *work)
/* disable interrupt */ /* disable interrupt */
sdio_claim_host(sdio->func); sdio_claim_host(sdio->func);
sdio_writel(sdio->func, WHLPCR_INT_EN_CLR, MCR_WHLPCR, NULL); sdio_writel(sdio->func, WHLPCR_INT_EN_CLR, MCR_WHLPCR, NULL);
sdio_readsb(sdio->func, intr, MCR_WHISR, sizeof(struct mt76s_intr)); ret = sdio_readsb(sdio->func, intr, MCR_WHISR, sizeof(*intr));
sdio_release_host(sdio->func); sdio_release_host(sdio->func);
if (ret < 0)
goto out;
trace_dev_irq(dev, intr->isr, 0); trace_dev_irq(dev, intr->isr, 0);
if (intr->isr & WHIER_RX0_DONE_INT_EN) { if (intr->isr & WHIER_RX0_DONE_INT_EN) {
...@@ -306,7 +309,7 @@ void mt7663s_rx_work(struct work_struct *work) ...@@ -306,7 +309,7 @@ void mt7663s_rx_work(struct work_struct *work)
queue_work(sdio->txrx_wq, &sdio->rx.recv_work); queue_work(sdio->txrx_wq, &sdio->rx.recv_work);
return; return;
} }
out:
/* enable interrupt */ /* enable interrupt */
sdio_claim_host(sdio->func); sdio_claim_host(sdio->func);
sdio_writel(sdio->func, WHLPCR_INT_EN_SET, MCR_WHLPCR, NULL); sdio_writel(sdio->func, WHLPCR_INT_EN_SET, MCR_WHLPCR, NULL);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册