mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
Revert "r8169: don't try to disable interrupts if NAPI is, scheduled already"
commit eabb8a9be1e4a12f3bf37ceb7411083e3775672d upstream. This reverts commit7274c4147a. Ken reported that RTL8125b can lock up if gro_flush_timeout has the default value of 20000 and napi_defer_hard_irqs is set to 0. In this scenario device interrupts aren't disabled, what seems to trigger some silicon bug under heavy load. I was able to reproduce this behavior on RTL8168h. Fix this by reverting7274c4147a. Fixes:7274c4147a("r8169: don't try to disable interrupts if NAPI is scheduled already") Cc: stable@vger.kernel.org Reported-by: Ken Milmore <ken.milmore@gmail.com> Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://lore.kernel.org/r/9b5b6f4c-4f54-4b90-b0b3-8d8023c2e780@gmail.com Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0db279c7c2
commit
69ed8fc12b
@@ -4607,10 +4607,8 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
|
|||||||
rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
|
rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (napi_schedule_prep(&tp->napi)) {
|
rtl_irq_disable(tp);
|
||||||
rtl_irq_disable(tp);
|
napi_schedule(&tp->napi);
|
||||||
__napi_schedule(&tp->napi);
|
|
||||||
}
|
|
||||||
out:
|
out:
|
||||||
rtl_ack_events(tp, status);
|
rtl_ack_events(tp, status);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user