]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
r8169: improve RTL8168b FIFO overflow workaround
authorHeiner Kallweit <hkallweit1@gmail.com>
Sun, 22 Mar 2020 18:03:56 +0000 (19:03 +0100)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 9 Nov 2020 13:47:40 +0000 (14:47 +0100)
BugLink: https://bugs.launchpad.net/bugs/1900624
[ Upstream commit 6b02e407cbf8d421477ebb7792cd6380affcd313 ]

So far only the reset bit it set, but the handler executing the reset
is not scheduled. Therefore nothing will happen until some other action
schedules the handler. Improve this by ensuring that the handler is
scheduled.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Ian May <ian.may@canonical.com>
drivers/net/ethernet/realtek/r8169_main.c

index 1c48e525a00640df4d4ded025d79c77772480c79..94fe51f5505a6967de73d78e714d942104448c36 100644 (file)
@@ -6293,8 +6293,7 @@ static irqreturn_t rtl8169_interrupt(int irq, void *dev_instance)
        if (unlikely(status & RxFIFOOver &&
            tp->mac_version == RTL_GIGA_MAC_VER_11)) {
                netif_stop_queue(tp->dev);
-               /* XXX - Hack alert. See rtl_task(). */
-               set_bit(RTL_FLAG_TASK_RESET_PENDING, tp->wk.flags);
+               rtl_schedule_task(tp, RTL_FLAG_TASK_RESET_PENDING);
        }
 
        rtl_irq_disable(tp);