diff options
Diffstat (limited to 'drivers/net/wireless/rtlwifi/pci.c')
| -rw-r--r-- | drivers/net/wireless/rtlwifi/pci.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c index 0f494444bcd1..5a53195d016b 100644 --- a/drivers/net/wireless/rtlwifi/pci.c +++ b/drivers/net/wireless/rtlwifi/pci.c @@ -740,6 +740,8 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)  	};  	int index = rtlpci->rx_ring[rx_queue_idx].idx; +	if (rtlpci->driver_is_goingto_unload) +		return;  	/*RX NORMAL PKT */  	while (count--) {  		/*rx descriptor */ @@ -1636,6 +1638,7 @@ static void rtl_pci_stop(struct ieee80211_hw *hw)  	 */  	set_hal_stop(rtlhal); +	rtlpci->driver_is_goingto_unload = true;  	rtlpriv->cfg->ops->disable_interrupt(hw);  	cancel_work_sync(&rtlpriv->works.lps_change_work); @@ -1653,7 +1656,6 @@ static void rtl_pci_stop(struct ieee80211_hw *hw)  	ppsc->rfchange_inprogress = true;  	spin_unlock_irqrestore(&rtlpriv->locks.rf_ps_lock, flags); -	rtlpci->driver_is_goingto_unload = true;  	rtlpriv->cfg->ops->hw_disable(hw);  	/* some things are not needed if firmware not available */  	if (!rtlpriv->max_fw_size)  |