diff mbox series

[1/8] iwlwifi: mvm: don't disconnect immediately if we don't hear beacons after CSA

Message ID iwlwifi.20210411132130.3d710091a0bd.I37a161ffdfb099a10080fbdc3b70a4deb76952e2@changeid (mailing list archive)
State Accepted
Commit 79470344e77dc5f707d058f8b405455dcad07fee
Delegated to: Luca Coelho
Headers show
Series iwlwifi: updates intended for v5.13 2021-04-11-2 | expand

Commit Message

Luca Coelho April 11, 2021, 10:25 a.m. UTC
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>
---
 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

Comments

Luca Coelho April 12, 2021, 10:27 a.m. UTC | #1
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 mbox series

Patch

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.