summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAravind Kishore Sukla <quic_asukla@quicinc.com>2023-02-08 14:45:03 +0530
committerGeorg Veichtlbauer <georg@vware.at>2023-09-21 21:58:26 +0200
commit07438b9587bebfdd863208174ca8c3d5e8d10641 (patch)
tree9335d3e41c9f6d3a9c4b3517ec8b570e9b378925
parente60c3deb3fad2e04306deb4e693340bfaa3cc0d7 (diff)
BACKPORT: qcacld-3.0: Ignore CSA request for invalid channel
In present scenario, STA disconnects with AP if it receives invalid channel in CSA IE. In this case STA shouldn't disconnect with AP as this request may come from a spoof AP. Ignore this CSA request as it might be from spoof AP and if it is from genuine AP heart beat failure happens and results in disconnection. After disconnection DUT may reconnect to same or other APs. Change-Id: I840508dd27d8c313a3e8f74c4e1f5aa64eecf6f9 CRs-Fixed: 3390251
-rw-r--r--drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_utils.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_utils.c b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_utils.c
index 10768fbf8001..3da8dc45da96 100644
--- a/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_utils.c
+++ b/drivers/staging/qcacld-3.0/core/mac/src/pe/lim/lim_utils.c
@@ -2103,21 +2103,16 @@ void lim_process_channel_switch_timeout(tpAniSirGlobal pMac)
}
/*
- * If the channel-list that AP is asking us to switch is invalid
- * then we cannot switch the channel. Just disassociate from AP.
- * We will find a better AP !!!
+ * The channel switch request received from AP is carrying
+ * invalid channel. It's ok to ignore this channel switch
+ * request as it might be from spoof AP. If it's from genuine
+ * AP, it may lead to heart beat failure and result in
+ * disconnection. DUT can go ahead and reconnect to it/any
+ * other AP once it disconnects.
*/
- if ((psessionEntry->limMlmState ==
- eLIM_MLM_LINK_ESTABLISHED_STATE) &&
- (psessionEntry->limSmeState != eLIM_SME_WT_DISASSOC_STATE) &&
- (psessionEntry->limSmeState != eLIM_SME_WT_DEAUTH_STATE)) {
- pe_err("Invalid channel! Disconnect");
- lim_tear_down_link_with_ap(pMac,
- pMac->lim.limTimers.
- gLimChannelSwitchTimer.sessionId,
- eSIR_MAC_UNSPEC_FAILURE_REASON);
- return;
- }
+ pe_err("Invalid channel freq %u Ignore CSA request",
+ channel);
+ return;
}
lim_covert_channel_scan_type(pMac, psessionEntry->currentOperChannel,
false);