浏览代码

iwlwifi: fix unload warning and error

This patch fix the error we get when unload the driver, No space for Tx.
The cause of this problem is related to receiving late SW rfkill from
rfkill subsystem during the driver teardown causing this error.

Signed-off-by: Mohamed Abbas <mabbas@linux.intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Mohamed Abbas 17 年之前
父节点
当前提交
5900383502
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 3 0
      drivers/net/wireless/iwlwifi/iwl-rfkill.c
  2. 2 1
      drivers/net/wireless/iwlwifi/iwl4965-base.c

+ 3 - 0
drivers/net/wireless/iwlwifi/iwl-rfkill.c

@@ -47,6 +47,9 @@ static int iwl_rfkill_soft_rf_kill(void *data, enum rfkill_state state)
 	if (!priv->rfkill_mngr.rfkill)
 		return 0;
 
+	if (test_bit(STATUS_EXIT_PENDING, &priv->status))
+		return 0;
+
 	IWL_DEBUG_RF_KILL("we recieved soft RFKILL set to state %d\n", state);
 	mutex_lock(&priv->mutex);
 

+ 2 - 1
drivers/net/wireless/iwlwifi/iwl4965-base.c

@@ -2427,7 +2427,8 @@ void iwl4965_radio_kill_sw(struct iwl_priv *priv, int disable_radio)
 				    CSR_UCODE_SW_BIT_RFKILL);
 			spin_unlock_irqrestore(&priv->lock, flags);
 			/* call the host command only if no hw rf-kill set */
-			if (!test_bit(STATUS_RF_KILL_HW, &priv->status))
+			if (!test_bit(STATUS_RF_KILL_HW, &priv->status) &&
+			    iwl_is_ready(priv))
 				iwl4965_send_card_state(priv,
 							CARD_STATE_CMD_DISABLE,
 							0);