ソースを参照

iwlwifi: fix notification wait bug

In "iwlwifi: consolidate the start_device flow"
Emmanuel added the return if the fw isn't there
but forgot to take into account that the struct
for notification wait needs to be added only
after the check -- fix that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Johannes Berg 13 年 前
コミット
f47208934b
1 ファイル変更3 行追加3 行削除
  1. 3 3
      drivers/net/wireless/iwlwifi/iwl-ucode.c

+ 3 - 3
drivers/net/wireless/iwlwifi/iwl-ucode.c

@@ -533,9 +533,6 @@ int iwl_load_ucode_wait_alive(struct iwl_priv *priv,
 	int ret;
 	int ret;
 	enum iwl_ucode_type old_type;
 	enum iwl_ucode_type old_type;
 
 
-	iwl_init_notification_wait(priv->shrd, &alive_wait, REPLY_ALIVE,
-				      iwl_alive_fn, &alive_data);
-
 	old_type = priv->shrd->ucode_type;
 	old_type = priv->shrd->ucode_type;
 	priv->shrd->ucode_type = ucode_type;
 	priv->shrd->ucode_type = ucode_type;
 	fw = iwl_get_ucode_image(priv, ucode_type);
 	fw = iwl_get_ucode_image(priv, ucode_type);
@@ -543,6 +540,9 @@ int iwl_load_ucode_wait_alive(struct iwl_priv *priv,
 	if (!fw)
 	if (!fw)
 		return -EINVAL;
 		return -EINVAL;
 
 
+	iwl_init_notification_wait(priv->shrd, &alive_wait, REPLY_ALIVE,
+				      iwl_alive_fn, &alive_data);
+
 	ret = iwl_trans_start_fw(trans(priv), fw);
 	ret = iwl_trans_start_fw(trans(priv), fw);
 	if (ret) {
 	if (ret) {
 		priv->shrd->ucode_type = old_type;
 		priv->shrd->ucode_type = old_type;