mwl8k: prevent module unload hang
authorLennert Buytenhek <buytenh@wantstofly.org>
Mon, 3 Aug 2009 19:59:09 +0000 (21:59 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 7 Aug 2009 17:09:33 +0000 (13:09 -0400)
We need to unregister our ieee80211_hw before resetting the chip, as
the former causes firmware commands to be issued which will time out
once the chip has been reset.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Acked-by: Nicolas Pitre <nico@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index 6e491171f73e84a180e53a7426452b2487951c76..83967afe0821681ca7140c08fac2d47bd3d4419e 100644 (file)
@@ -3733,6 +3733,8 @@ static void __devexit mwl8k_remove(struct pci_dev *pdev)
 
        ieee80211_stop_queues(hw);
 
+       ieee80211_unregister_hw(hw);
+
        /* Remove tx reclaim tasklet */
        tasklet_kill(&priv->tx_reclaim_task);
 
@@ -3746,8 +3748,6 @@ static void __devexit mwl8k_remove(struct pci_dev *pdev)
        for (i = 0; i < MWL8K_TX_QUEUES; i++)
                mwl8k_txq_reclaim(hw, i, 1);
 
-       ieee80211_unregister_hw(hw);
-
        for (i = 0; i < MWL8K_TX_QUEUES; i++)
                mwl8k_txq_deinit(hw, i);