#define OP_ASSOCIATED     BIT(8)
 #define OP_ENABLE_BEACON  BIT(9)
 #define OP_LED_DEINIT     BIT(10)
+#define OP_UNPLUGGED      BIT(11)
 
 struct ath9k_htc_priv {
        struct device *dev;
 
        if (ret)
                goto err_init;
 
+       /* The device may have been unplugged earlier. */
+       priv->op_flags &= ~OP_UNPLUGGED;
+
        ret = ath9k_init_device(priv, devid);
        if (ret)
                goto err_init;
 void ath9k_htc_disconnect_device(struct htc_target *htc_handle, bool hotunplug)
 {
        if (htc_handle->drv_priv) {
+
+               /* Check if the device has been yanked out. */
+               if (hotunplug)
+                       htc_handle->drv_priv->op_flags |= OP_UNPLUGGED;
+
                ath9k_deinit_device(htc_handle->drv_priv);
                ath9k_deinit_wmi(htc_handle->drv_priv);
                ieee80211_free_hw(htc_handle->drv_priv->hw);