|
@@ -3875,11 +3875,16 @@ static int iwl_mvm_pre_channel_switch(struct ieee80211_hw *hw,
|
|
|
|
|
|
/* Schedule the time event to a bit before beacon 1,
|
|
|
* to make sure we're in the new channel when the
|
|
|
- * GO/AP arrives.
|
|
|
+ * GO/AP arrives. In case count <= 1 immediately schedule the
|
|
|
+ * TE (this might result with some packet loss or connection
|
|
|
+ * loss).
|
|
|
*/
|
|
|
- apply_time = chsw->device_timestamp +
|
|
|
- ((vif->bss_conf.beacon_int * (chsw->count - 1) -
|
|
|
- IWL_MVM_CHANNEL_SWITCH_TIME_CLIENT) * 1024);
|
|
|
+ if (chsw->count <= 1)
|
|
|
+ apply_time = 0;
|
|
|
+ else
|
|
|
+ apply_time = chsw->device_timestamp +
|
|
|
+ ((vif->bss_conf.beacon_int * (chsw->count - 1) -
|
|
|
+ IWL_MVM_CHANNEL_SWITCH_TIME_CLIENT) * 1024);
|
|
|
|
|
|
if (chsw->block_tx)
|
|
|
iwl_mvm_csa_client_absent(mvm, vif);
|