mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
tsnep: Fix NAPI scheduling
[ Upstream commit ea852c17f5 ]
According to the NAPI documentation networking/napi.rst, drivers which
have to mask interrupts explicitly should use the napi_schedule_prep()
and __napi_schedule() calls.
No problem seen so far with current implementation. Nevertheless, let's
align the implementation with documentation.
Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b09c1359e4
commit
78ac1e7dec
@@ -65,8 +65,11 @@ static irqreturn_t tsnep_irq(int irq, void *arg)
|
||||
|
||||
/* handle TX/RX queue 0 interrupt */
|
||||
if ((active & adapter->queue[0].irq_mask) != 0) {
|
||||
tsnep_disable_irq(adapter, adapter->queue[0].irq_mask);
|
||||
napi_schedule(&adapter->queue[0].napi);
|
||||
if (napi_schedule_prep(&adapter->queue[0].napi)) {
|
||||
tsnep_disable_irq(adapter, adapter->queue[0].irq_mask);
|
||||
/* schedule after masking to avoid races */
|
||||
__napi_schedule(&adapter->queue[0].napi);
|
||||
}
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
@@ -77,8 +80,11 @@ static irqreturn_t tsnep_irq_txrx(int irq, void *arg)
|
||||
struct tsnep_queue *queue = arg;
|
||||
|
||||
/* handle TX/RX queue interrupt */
|
||||
tsnep_disable_irq(queue->adapter, queue->irq_mask);
|
||||
napi_schedule(&queue->napi);
|
||||
if (napi_schedule_prep(&queue->napi)) {
|
||||
tsnep_disable_irq(queue->adapter, queue->irq_mask);
|
||||
/* schedule after masking to avoid races */
|
||||
__napi_schedule(&queue->napi);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user