|
@@ -859,12 +859,8 @@ void iwl_legacy_chswitch_done(struct iwl_priv *priv, bool is_success)
|
|
|
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
|
|
return;
|
|
|
|
|
|
- if (priv->switch_rxon.switch_in_progress) {
|
|
|
+ if (test_and_clear_bit(STATUS_CHANNEL_SWITCH_PENDING, &priv->status))
|
|
|
ieee80211_chswitch_done(ctx->vif, is_success);
|
|
|
- mutex_lock(&priv->mutex);
|
|
|
- priv->switch_rxon.switch_in_progress = false;
|
|
|
- mutex_unlock(&priv->mutex);
|
|
|
- }
|
|
|
}
|
|
|
EXPORT_SYMBOL(iwl_legacy_chswitch_done);
|
|
|
|
|
@@ -876,19 +872,19 @@ void iwl_legacy_rx_csa(struct iwl_priv *priv, struct iwl_rx_mem_buffer *rxb)
|
|
|
struct iwl_rxon_context *ctx = &priv->contexts[IWL_RXON_CTX_BSS];
|
|
|
struct iwl_legacy_rxon_cmd *rxon = (void *)&ctx->active;
|
|
|
|
|
|
- if (priv->switch_rxon.switch_in_progress) {
|
|
|
- if (!le32_to_cpu(csa->status) &&
|
|
|
- (csa->channel == priv->switch_rxon.channel)) {
|
|
|
- rxon->channel = csa->channel;
|
|
|
- ctx->staging.channel = csa->channel;
|
|
|
- IWL_DEBUG_11H(priv, "CSA notif: channel %d\n",
|
|
|
- le16_to_cpu(csa->channel));
|
|
|
- iwl_legacy_chswitch_done(priv, true);
|
|
|
- } else {
|
|
|
- IWL_ERR(priv, "CSA notif (fail) : channel %d\n",
|
|
|
+ if (!test_bit(STATUS_CHANNEL_SWITCH_PENDING, &priv->status))
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (!le32_to_cpu(csa->status) && csa->channel == priv->switch_channel) {
|
|
|
+ rxon->channel = csa->channel;
|
|
|
+ ctx->staging.channel = csa->channel;
|
|
|
+ IWL_DEBUG_11H(priv, "CSA notif: channel %d\n",
|
|
|
le16_to_cpu(csa->channel));
|
|
|
- iwl_legacy_chswitch_done(priv, false);
|
|
|
- }
|
|
|
+ iwl_legacy_chswitch_done(priv, true);
|
|
|
+ } else {
|
|
|
+ IWL_ERR(priv, "CSA notif (fail) : channel %d\n",
|
|
|
+ le16_to_cpu(csa->channel));
|
|
|
+ iwl_legacy_chswitch_done(priv, false);
|
|
|
}
|
|
|
}
|
|
|
EXPORT_SYMBOL(iwl_legacy_rx_csa);
|