]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: ks8851: Avoid excess softirq scheduling
authorMarek Vasut <marex@nabladev.com>
Wed, 15 Apr 2026 23:09:45 +0000 (01:09 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 18 Apr 2026 19:14:19 +0000 (12:14 -0700)
The code injects a packet into netif_rx() repeatedly, which will add
it to its internal NAPI and schedule a softirq, and process it. It is
more efficient to queue multiple packets and process them all at the
local_bh_enable() time.

Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Fixes: e0863634bf9f ("net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs")
Cc: stable@vger.kernel.org
Signed-off-by: Marek Vasut <marex@nabladev.com>
Link: https://patch.msgid.link/20260415231020.455298-2-marex@nabladev.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/micrel/ks8851_common.c

index 6c375647b24de6fb1a18720d50a70a2221397457..4afbb40bc0e4a6aa6779ad18a91f3d9382e9f91c 100644 (file)
@@ -373,9 +373,12 @@ static irqreturn_t ks8851_irq(int irq, void *_ks)
        if (status & IRQ_LCI)
                mii_check_link(&ks->mii);
 
-       if (status & IRQ_RXI)
+       if (status & IRQ_RXI) {
+               local_bh_disable();
                while ((skb = __skb_dequeue(&rxq)))
                        netif_rx(skb);
+               local_bh_enable();
+       }
 
        return IRQ_HANDLED;
 }