]> www.infradead.org Git - linux.git/commitdiff
net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()
authorJinjie Ruan <ruanjinjie@huawei.com>
Wed, 11 Sep 2024 09:44:44 +0000 (17:44 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 13 Sep 2024 03:35:04 +0000 (20:35 -0700)
disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Fixes: bbb96dc7fa1a ("enetc: Factor out the traffic start/stop procedures")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Link: https://patch.msgid.link/20240911094445.1922476-3-ruanjinjie@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/enetc/enetc.c

index 5c45f42232d326cbaa2e55f77ee045fd19de4068..f04f42ea60c0f74ca11dcd944d4559eecc69f4f0 100644 (file)
@@ -2305,12 +2305,11 @@ static int enetc_setup_irqs(struct enetc_ndev_priv *priv)
 
                snprintf(v->name, sizeof(v->name), "%s-rxtx%d",
                         priv->ndev->name, i);
-               err = request_irq(irq, enetc_msix, 0, v->name, v);
+               err = request_irq(irq, enetc_msix, IRQF_NO_AUTOEN, v->name, v);
                if (err) {
                        dev_err(priv->dev, "request_irq() failed!\n");
                        goto irq_err;
                }
-               disable_irq(irq);
 
                v->tbier_base = hw->reg + ENETC_BDR(TX, 0, ENETC_TBIER);
                v->rbier = hw->reg + ENETC_BDR(RX, i, ENETC_RBIER);