You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.5 KiB
67 lines
2.5 KiB
From f30e80d55daf9076a95b661bb1ea9d9a00d8b8fb Mon Sep 17 00:00:00 2001
|
|
From: Igor Russkikh <irusskik@redhat.com>
|
|
Date: Fri, 6 Nov 2020 18:36:28 -0500
|
|
Subject: [PATCH 011/139] [netdrv] net: aquantia: linkstate irq should be
|
|
oneshot
|
|
|
|
Message-id: <1604687916-15087-12-git-send-email-irusskik@redhat.com>
|
|
Patchwork-id: 338435
|
|
Patchwork-instance: patchwork
|
|
O-Subject: [RHEL8.4 BZ 1857861 011/139] net: aquantia: linkstate irq should be oneshot
|
|
Bugzilla: 1857861
|
|
RH-Acked-by: David Arcari <darcari@redhat.com>
|
|
RH-Acked-by: John Linville <linville@redhat.com>
|
|
RH-Acked-by: Tony Camuso <tcamuso@redhat.com>
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/1857861
|
|
|
|
commit 5c47e3ba6fe52465603cf9d816b3371e6881d649
|
|
Author: Igor Russkikh <Igor.Russkikh@aquantia.com>
|
|
Date: Fri Aug 30 12:08:36 2019 +0000
|
|
|
|
net: aquantia: linkstate irq should be oneshot
|
|
|
|
Declaring threaded irq handler should also indicate the irq is
|
|
oneshot. It is oneshot indeed, because HW implements irq automasking
|
|
on trigger.
|
|
|
|
Not declaring this causes some kernel configurations to fail
|
|
on interface up, because request_threaded_irq returned an err code.
|
|
|
|
The issue was originally hidden on normal x86_64 configuration with
|
|
latest kernel, because depending on interrupt controller, irq driver
|
|
added ONESHOT flag on its own.
|
|
|
|
Issue was observed on older kernels (4.14) where no such logic exists.
|
|
|
|
Fixes: 4c83f170b3ac ("net: aquantia: link status irq handling")
|
|
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
|
|
Reported-by: Michael Symolkin <Michael.Symolkin@aquantia.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
|
|
Signed-off-by: Igor Russkikh <irusskik@redhat.com>
|
|
|
|
Cc: David Arcari <darcari@redhat.com>
|
|
Cc: Igor Russkikh <irusskik@redhat.com>
|
|
Signed-off-by: Jan Stancek <jstancek@redhat.com>
|
|
---
|
|
drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
index e1392766e21e..8f66e7817811 100644
|
|
--- a/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
+++ b/drivers/net/ethernet/aquantia/atlantic/aq_nic.c
|
|
@@ -393,7 +393,7 @@ int aq_nic_start(struct aq_nic_s *self)
|
|
self->aq_nic_cfg.link_irq_vec);
|
|
err = request_threaded_irq(irqvec, NULL,
|
|
aq_linkstate_threaded_isr,
|
|
- IRQF_SHARED,
|
|
+ IRQF_SHARED | IRQF_ONESHOT,
|
|
self->ndev->name, self);
|
|
if (err < 0)
|
|
goto err_exit;
|
|
--
|
|
2.13.6
|
|
|