There was a change to the e1000 gigabit ethernet driver in kernel 2.4.27-pre1 that removed an interrupt processing fix for 82547 chips. The comment in the source says "Back out the CSA fix for 82547 as it continues to cause systems lock-ups with production system". Without this fix, I have been getting network communication timeouts under high load with syslog messages such as "NETDEV WATCHDOG: eth0: transmit timed out". When I put the fix back in (with the patch below), the timeouts go away. Can you tell me anything more about why this fix was removed from the driver? Should I expect to have problems with the fix put back in? I am using a SuperMicro P4SCI motherboard with dual built-in PRO/1000 ethernet ports. The output of lspci -n is as follows: 01:01.0 Class 0200: 8086:1075 03:0a.0 Class 0200: 8086:1076 Thanks, Anthony J. Battersby Cybernetics diff -urN linux-2.4.27-vanilla/drivers/net/e1000/e1000_main.c linux-2.4.27-e1000/drivers/net/e1000/e1000_main.c --- linux-2.4.27-vanilla/drivers/net/e1000/e1000_main.c Sat Aug 7 19:26:05 2004 +++ linux-2.4.27-e1000/drivers/net/e1000/e1000_main.c Thu Aug 12 16:13:41 2004 @@ -2120,10 +2120,26 @@ __netif_rx_schedule(netdev); } #else + /* Writing IMC and IMS is needed for 82547. + Due to Hub Link bus being occupied, an interrupt + de-assertion message is not able to be sent. + When an interrupt assertion message is generated later, + two messages are re-ordered and sent out. + That causes APIC to think 82547 is in de-assertion + state, while 82547 is in assertion state, resulting + in dead lock. Writing IMC forces 82547 into + de-assertion state. + */ + if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2) + e1000_irq_disable(adapter); + for(i = 0; i < E1000_MAX_INTR; i++) if(!e1000_clean_rx_irq(adapter) & !e1000_clean_tx_irq(adapter)) break; + + if(hw->mac_type == e1000_82547 || hw->mac_type == e1000_82547_rev_2) + e1000_irq_enable(adapter); #endif return IRQ_HANDLED; - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html