mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 12:06:22 +07:00
wimax/i2400m/sdio: clear the INTR status bit after reading size
In order to avoid issues during high-load traffic, the interrupt status register has to be cleared ONLY after the RX size is read. Signed-off-by: Cindy H Kao <cindy.h.kao@intel.com> Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
This commit is contained in:
parent
2093586de2
commit
339ccc362c
@ -138,6 +138,11 @@ void i2400ms_rx(struct i2400ms *i2400ms)
|
||||
ret = rx_size;
|
||||
goto error_get_size;
|
||||
}
|
||||
/*
|
||||
* Hardware quirk: make sure to clear the INTR status register
|
||||
* AFTER getting the data transfer size.
|
||||
*/
|
||||
sdio_writeb(func, 1, I2400MS_INTR_CLEAR_ADDR, &ret);
|
||||
|
||||
ret = -ENOMEM;
|
||||
skb = alloc_skb(rx_size, GFP_ATOMIC);
|
||||
@ -209,7 +214,6 @@ void i2400ms_irq(struct sdio_func *func)
|
||||
dev_err(dev, "RX: BUG? got IRQ but no interrupt ready?\n");
|
||||
goto error_no_irq;
|
||||
}
|
||||
sdio_writeb(func, 1, I2400MS_INTR_CLEAR_ADDR, &ret);
|
||||
i2400ms_rx(i2400ms);
|
||||
error_no_irq:
|
||||
d_fnend(6, dev, "(i2400ms %p) = void\n", i2400ms);
|
||||
|
Loading…
Reference in New Issue
Block a user