[PATCH] net: txgbe: use vector 0 for misc interrupts without MSI-X

[email protected]
Newsgroups gmane.linux.kernel.stable,gmane.linux.network
Message-ID <CALruWrXs490+d7tx82mLG3rmH_H-svkwA=zXggr0qOeEhG3GmA@mail.gmail.com>
In non-MSI-X mode, queue and miscellaneous interrupts share vector 0.
TXGBE_INTR_MISC(wx) instead selects the MSI-X-only miscellaneous vector,
leaving vector 0 masked after it is serviced. Use BIT(0) for the
non-MSI-X fallback at each miscellaneous interrupt unmask site.

Fixes: e37546ad1f9b ("net: wangxun: revert the adjustment of the IRQ
vector sequence")
Signed-off-by: Diego Fernando Mancera Gomez <[email protected]>
---
 drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
b/drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
index 8746318ad3bc..6b5542cb2161 100644
--- a/drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
+++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_irq.c
@@ -31,7 +31,10 @@ void txgbe_irq_enable(struct wx *wx, bool queues)
 	wr32(wx, WX_PX_MISC_IEN, misc_ien);

 	/* unmask interrupt */
-	wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
+	if (wx->pdev->msix_enabled)
+		wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
+	else
+		wx_intr_enable(wx, BIT(0));
 	if (queues)
 		wx_intr_enable(wx, TXGBE_INTR_QALL(wx));
 }
@@ -183,7 +186,10 @@ static irqreturn_t txgbe_misc_irq_thread_fn(int
irq, void *data)
 		nhandled++;
 	}

-	wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
+	if (wx->pdev->msix_enabled)
+		wx_intr_enable(wx, TXGBE_INTR_MISC(wx));
+	else
+		wx_intr_enable(wx, BIT(0));
 	return (nhandled > 0 ? IRQ_HANDLED : IRQ_NONE);
 }
-- 
2.54.0.windows.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.