]> git.baikalelectronics.ru Git - kernel.git/commit
staging: qlge: Fix irq masking in INTx mode
authorBenjamin Poirier <bpoirier@suse.com>
Fri, 27 Sep 2019 10:11:55 +0000 (19:11 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Oct 2019 15:17:44 +0000 (17:17 +0200)
commit3ac6c57b137c8bd4f2eeb9cf9c949a074d2582c5
treefe68530fecc59c73b24cf948b89cc7b5904b4d3f
parent23c8c04a1d3420128df92af5311915da5a253e0e
staging: qlge: Fix irq masking in INTx mode

Tracing the driver operation reveals that the INTR_EN_EN bit (per-queue
interrupt control) does not immediately prevent rx completion interrupts
when the device is operating in INTx mode. This leads to interrupts being
raised while napi is scheduled/running. Those interrupts are ignored by
qlge_isr() and falsely reported as IRQ_NONE thanks to the irq_cnt scheme.
This in turn can cause frames to loiter in the receive queue until a later
frame leads to another rx interrupt that will schedule napi.

Use the INTR_EN_EI bit (master interrupt control) instead.

Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Link: https://lore.kernel.org/r/20190927101210.23856-2-bpoirier@suse.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/qlge/qlge_main.c