|
@@ -1218,10 +1218,10 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *c
|
|
* receive commit_rxon request
|
|
* receive commit_rxon request
|
|
* abort any previous channel switch if still in process
|
|
* abort any previous channel switch if still in process
|
|
*/
|
|
*/
|
|
- if (priv->switch_rxon.switch_in_progress &&
|
|
|
|
- (priv->switch_rxon.channel != ctx->staging.channel)) {
|
|
|
|
|
|
+ if (test_bit(STATUS_CHANNEL_SWITCH_PENDING, &priv->status) &&
|
|
|
|
+ (priv->switch_channel != ctx->staging.channel)) {
|
|
IWL_DEBUG_11H(priv, "abort channel switch on %d\n",
|
|
IWL_DEBUG_11H(priv, "abort channel switch on %d\n",
|
|
- le16_to_cpu(priv->switch_rxon.channel));
|
|
|
|
|
|
+ le16_to_cpu(priv->switch_channel));
|
|
iwl_legacy_chswitch_done(priv, false);
|
|
iwl_legacy_chswitch_done(priv, false);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1237,7 +1237,7 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *c
|
|
|
|
|
|
memcpy(active_rxon, &ctx->staging, sizeof(*active_rxon));
|
|
memcpy(active_rxon, &ctx->staging, sizeof(*active_rxon));
|
|
iwl_legacy_print_rx_config_cmd(priv, ctx);
|
|
iwl_legacy_print_rx_config_cmd(priv, ctx);
|
|
- return 0;
|
|
|
|
|
|
+ goto set_tx_power;
|
|
}
|
|
}
|
|
|
|
|
|
/* If we are currently associated and the new config requires
|
|
/* If we are currently associated and the new config requires
|
|
@@ -1317,6 +1317,7 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv, struct iwl_rxon_context *c
|
|
|
|
|
|
iwl4965_init_sensitivity(priv);
|
|
iwl4965_init_sensitivity(priv);
|
|
|
|
|
|
|
|
+set_tx_power:
|
|
/* If we issue a new RXON command which required a tune then we must
|
|
/* If we issue a new RXON command which required a tune then we must
|
|
* send a new TXPOWER command or we won't be able to Tx any frames */
|
|
* send a new TXPOWER command or we won't be able to Tx any frames */
|
|
ret = iwl_legacy_set_tx_power(priv, priv->tx_power_next, true);
|
|
ret = iwl_legacy_set_tx_power(priv, priv->tx_power_next, true);
|
|
@@ -1403,9 +1404,6 @@ static int iwl4965_hw_channel_switch(struct iwl_priv *priv,
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|
|
|
|
|
|
- priv->switch_rxon.channel = cmd.channel;
|
|
|
|
- priv->switch_rxon.switch_in_progress = true;
|
|
|
|
-
|
|
|
|
return iwl_legacy_send_cmd_pdu(priv,
|
|
return iwl_legacy_send_cmd_pdu(priv,
|
|
REPLY_CHANNEL_SWITCH, sizeof(cmd), &cmd);
|
|
REPLY_CHANNEL_SWITCH, sizeof(cmd), &cmd);
|
|
}
|
|
}
|