Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <Robert.Olsson@...>
Cc: <elendil@...>, <jesse.brandeburg@...>, <slavon@...>, <netdev@...>, <linux-kernel@...>
Date: Friday, January 18, 2008 - 8:11 am

From: Robert Olsson <Robert.Olsson@data.slu.se>
Date: Wed, 16 Jan 2008 18:07:38 +0100


Yes, this semaphore thing is highly problematic.  In the most crucial
areas where network driver consistency matters the most for ease of
understanding and debugging, the Intel drivers choose to be different
:-(

The way the napi_disable() logic breaks out from high packet load in
net_rx_action() is it simply returns even leaving interrupts disabled
when a pending napi_disable() is pending.

This is what trips up the semaphore logic.

Robert, give this patch a try.

In the long term this semaphore should be completely eliminated,
there is no justification for it.

Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 0c9a6f7..76c0fa6 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -632,6 +632,7 @@ e1000_down(struct e1000_adapter *adapter)
 
 #ifdef CONFIG_E1000_NAPI
 	napi_disable(&adapter->napi);
+	atomic_set(&adapter->irq_sem, 0);
 #endif
 	e1000_irq_disable(adapter);
 
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index 2ab3bfb..9cc5a6b 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -2183,6 +2183,7 @@ void e1000e_down(struct e1000_adapter *adapter)
 	msleep(10);
 
 	napi_disable(&adapter->napi);
+	atomic_set(&adapter->irq_sem, 0);
 	e1000_irq_disable(adapter);
 
 	del_timer_sync(&adapter->watchdog_timer);
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index d2fb88d..4f63839 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -296,6 +296,11 @@ ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog)
 {
 	struct net_device *netdev = adapter->netdev;
 
+#ifdef CONFIG_IXGB_NAPI
+	napi_disable(&adapter->napi);
+	atomic_set(&adapter->irq_sem, 0);
+#endif
+
 	ixgb_irq_disable(adapter);
 	free_irq(adapter->pdev->irq, netdev);
 
@@ -304,9 +309,7 @@ ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog)
 
 	if(kill_watchdog)
 		del_timer_sync(&adapter->watchdog_timer);
-#ifdef CONFIG_IXGB_NAPI
-	napi_disable(&adapter->napi);
-#endif
+
 	adapter->link_speed = 0;
 	adapter->link_duplex = 0;
 	netif_carrier_off(netdev);
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index de3f45e..a4265bc 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1409,9 +1409,11 @@ void ixgbe_down(struct ixgbe_adapter *adapter)
 	IXGBE_WRITE_FLUSH(&adapter->hw);
 	msleep(10);
 
+	napi_disable(&adapter->napi);
+	atomic_set(&adapter->irq_sem, 0);
+
 	ixgbe_irq_disable(adapter);
 
-	napi_disable(&adapter->napi);
 	del_timer_sync(&adapter->watchdog_timer);
 
 	netif_carrier_off(netdev);
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Badalian Vyacheslav, (Wed Jan 16, 5:02 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Badalian Vyacheslav, (Mon Jan 21, 2:54 am)
RE: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Brandeburg, Jesse, (Tue Jan 15, 5:53 pm)
RE: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Brandeburg, Jesse, (Thu Jan 17, 3:09 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Arnaldo Carvalho de Melo, (Thu Jan 17, 5:40 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Robert Olsson, (Wed Jan 16, 1:07 pm)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, David Miller, (Fri Jan 18, 8:11 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Robert Olsson, (Mon Jan 21, 9:27 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Robert Olsson, (Fri Jan 18, 9:00 am)
RE: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Brandeburg, Jesse, (Sun Jan 20, 5:20 am)
Re: [REGRESSION] 2.6.24-rc7: e1000: Detected Tx Unit Hang, Andrey Rahmatullin, (Sun Jan 20, 5:28 am)