[PATCH] e1000: No-delay link detection at interface up
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Fri, 15 Dec 2006 09:42:34 +0000 (10:42 +0100)
committerJeff Garzik <jeff@garzik.org>
Tue, 26 Dec 2006 20:51:30 +0000 (15:51 -0500)
Currently after an interface up, the link state is detected 2 seconds later
when the first watchdog timer runs. This patch changes that by triggering
the hardware to generate a link-change interrupt from the up() function
instead. This has the result that the link state gets detected immediately
and without races. This has the potential to speed up booting since a normal
distribution boot process waits for a link before DHCP is attempted.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/e1000/e1000_main.c

index b06b51a552760b2283fca56b25b5c487c65e7123..8c4924f1f7ed21f57a02f8c8dce47711eaeb2c3c 100644 (file)
@@ -556,7 +556,8 @@ e1000_up(struct e1000_adapter *adapter)
 
        clear_bit(__E1000_DOWN, &adapter->flags);
 
-       mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
+       /* fire a link change interrupt to start the watchdog */
+       E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_LSC);
        return 0;
 }