Message ID | iwlwifi.20210411132130.3d710091a0bd.I37a161ffdfb099a10080fbdc3b70a4deb76952e2@changeid |
---|---|
State | New |
Headers | show |
Series | [1/8] iwlwifi: mvm: don't disconnect immediately if we don't hear beacons after CSA | expand |
Luca Coelho <luca@coelho.fi> wrote: > From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > > When we switch channel, we may miss a few beacons on the > new channel. Don't disconnect if the time event for the > switch ends before we hear the beacons. > > Note that this is relevant only for old devices that still > use the TIME_EVENT firmware API for channel switch. > > The check that we hear a beacon before the time event > ends was meant to be used for the association time event > and not for the channel switch time event. > > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > Signed-off-by: Luca Coelho <luciano.coelho@intel.com> 7 patches applied to iwlwifi-next.git, thanks. 55479e240a84 iwlwifi: mvm: don't disconnect immediately if we don't hear beacons after CSA 668b20543dba iwlwifi: mvm: don't WARN if we can't remove a time event 5bae940ed691 iwlwifi: bump FW API to 63 for AX devices 0e6f59832e4a iwlwifi: trans/pcie: defer transport initialisation e7a33279d670 iwlwifi: fw: print out trigger delay when collecting data 3ba2a6e76c03 iwlwifi: pcie: Change ma product string name 1a9674efd536 iwlwifi: dbg: disable ini debug in 9000 family and below
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c b/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c index 1418a6438635..76c36f5cf9a3 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/time-event.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause /* - * Copyright (C) 2012-2014, 2018-2020 Intel Corporation + * Copyright (C) 2012-2014, 2018-2021 Intel Corporation * Copyright (C) 2013-2015 Intel Mobile Communications GmbH * Copyright (C) 2017 Intel Deutschland GmbH */ @@ -294,6 +294,17 @@ static void iwl_mvm_te_handle_notif(struct iwl_mvm *mvm, iwl_mvm_roc_finished(mvm); break; case NL80211_IFTYPE_STATION: + /* + * If we are switching channel, don't disconnect + * if the time event is already done. Beacons can + * be delayed a bit after the switch. + */ + if (te_data->id == TE_CHANNEL_SWITCH_PERIOD) { + IWL_DEBUG_TE(mvm, + "No beacon heard and the CS time event is over, don't disconnect\n"); + break; + } + /* * By now, we should have finished association * and know the dtim period.