Thread (7 messages) 7 messages, 3 authors, 2006-11-30

Re: Realtek 8139 driver (8139too.c) TX Timeout doesn't allow interrupt handler to disable receive interrupts at high bi-directional traffic

From: Francois Romieu <romieu@fr.zoreil.com>
Date: 2006-11-29 22:46:32

Stephen Hemminger [off-list ref] :
[...]
quoted hunk ↗ jump to hunk
@@ -1682,12 +1685,11 @@ static void rtl8139_tx_timeout_task (voi
 	rtl8139_tx_clear (tp);
 	spin_unlock_irq(&tp->lock);
 
+	netif_poll_enable();
                          ^ -> dev
+
 	/* ...and finally, reset everything */
-	if (netif_running(dev)) {
-		rtl8139_hw_start (dev);
-		netif_wake_queue (dev);
-	}
-	spin_unlock_bh(&tp->rx_lock);
+	rtl8139_hw_start (dev);
+	netif_wake_queue (dev);
 }
rtl8139_hw_start() may mess with cur_rx, whence a race with rtl8139_rx()
if an in-flight interruption enables it a bit too fast. I'd rather go
with:
[...]

	rtl8139_tx_clear (tp);

	rtl8139_hw_start (dev);
	netif_wake_queue (dev);
   
	netif_poll_enable(dev);
	spin_unlock_irq(&tp->lock);
}

Otherwise the patch is cool.

-- 
Ueimor
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help