sfc: Do not call netif_{stop,wake}_queue() before register_netdev
authorSteve Hodgson <shodgson@solarflare.com>
Mon, 1 Sep 2008 11:48:20 +0000 (12:48 +0100)
committerJeff Garzik <jgarzik@redhat.com>
Wed, 3 Sep 2008 13:53:47 +0000 (09:53 -0400)
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/net/sfc/efx.c

index d41a6e34da7d0ae52418228589fd2537942a965a..be9382faf19df7371b90afe3a5bf2418b9a03402 100644 (file)
@@ -1027,7 +1027,8 @@ static void efx_start_all(struct efx_nic *efx)
        /* Mark the port as enabled so port reconfigurations can start, then
         * restart the transmit interface early so the watchdog timer stops */
        efx_start_port(efx);
-       efx_wake_queue(efx);
+       if (efx_dev_registered(efx))
+               efx_wake_queue(efx);
 
        efx_for_each_channel(channel, efx)
                efx_start_channel(channel);
@@ -1102,8 +1103,8 @@ static void efx_stop_all(struct efx_nic *efx)
 
        /* Stop the kernel transmit interface late, so the watchdog
         * timer isn't ticking over the flush */
-       efx_stop_queue(efx);
        if (efx_dev_registered(efx)) {
+               efx_stop_queue(efx);
                netif_tx_lock_bh(efx->net_dev);
                netif_tx_unlock_bh(efx->net_dev);
        }