rtl8xxxu: Unregister from mac80211 before shutting down the device
authorJes Sorensen <Jes.Sorensen@redhat.com>
Thu, 14 Apr 2016 20:37:13 +0000 (16:37 -0400)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 15 Apr 2016 18:38:09 +0000 (21:38 +0300)
This fixes a long standing bug where mac80211 would send disconnect
packets to the device, after we had shut down the device.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.c

index 5685fd744fbc87bdcd914bb1aeadad34ad27bb3e..2b71a2baaf9b05a5672e31db087ad2d2531f0793 100644 (file)
@@ -8003,13 +8003,6 @@ exit:
        return ret;
 }
 
-static void rtl8xxxu_disable_device(struct ieee80211_hw *hw)
-{
-       struct rtl8xxxu_priv *priv = hw->priv;
-
-       priv->fops->power_off(priv);
-}
-
 static void rtl8xxxu_cam_write(struct rtl8xxxu_priv *priv,
                               struct ieee80211_key_conf *key, const u8 *mac)
 {
@@ -9726,13 +9719,14 @@ static void rtl8xxxu_disconnect(struct usb_interface *interface)
        hw = usb_get_intfdata(interface);
        priv = hw->priv;
 
-       rtl8xxxu_disable_device(hw);
+       ieee80211_unregister_hw(hw);
+
+       priv->fops->power_off(priv);
+
        usb_set_intfdata(interface, NULL);
 
        dev_info(&priv->udev->dev, "disconnecting\n");
 
-       ieee80211_unregister_hw(hw);
-
        kfree(priv->fw_data);
        mutex_destroy(&priv->usb_buf_mutex);
        mutex_destroy(&priv->h2c_mutex);