{
        struct net_device *netdev = adapter->netdev;
 
+       netif_stop_queue(netdev);
        del_timer_sync(&adapter->watchdog_timer);
        del_timer_sync(&adapter->phy_config_timer);
        adapter->phy_timer_pending = false;
        adapter->link_speed = SPEED_0;
        adapter->link_duplex = -1;
        netif_carrier_off(netdev);
-       netif_stop_queue(netdev);
 
        atl1_clean_tx_ring(adapter);
        atl1_clean_rx_ring(adapter);
        struct atl1_adapter *adapter = netdev_priv(netdev);
        int err;
 
+       netif_carrier_off(netdev);
+
        /* allocate transmit descriptors */
        err = atl1_setup_ring_resources(adapter);
        if (err)
 
                                netdev->name);
                        adapter->link_speed = SPEED_0;
                        netif_carrier_off(netdev);
-                       netif_stop_queue(netdev);
                }
        }
        schedule_work(&adapter->link_chg_task);