summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiran Kumar Lokere <klokere@codeaurora.org>2016-12-20 14:52:03 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-01-06 20:48:47 -0800
commitbb9b5d072481a64e3a25af00a7c0aabc8f4a5f18 (patch)
tree59f5fddad8d7f646bf6719601602082953969350
parent917f0e94fcc283762e577160e59f61291db74fbd (diff)
qcacld-3.0: Fix CSA handling to the same channel
Currently CSA event is ignored if the new channel is same as current channel and there is no check for the BW comparison. CSA can be done to the same channel with different BW. Allow the CSA processing with same channel if the CSA has the different BW Change-Id: Ib12c86dccf1c745dfa66c9e712d283af2df7809e CRs-Fixed: 1102539
-rw-r--r--core/mac/src/pe/lim/lim_send_sme_rsp_messages.c7
-rw-r--r--core/wma/src/wma_features.c3
2 files changed, 8 insertions, 2 deletions
diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
index cedfe43d706c..5f950cc2c0e4 100644
--- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
+++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c
@@ -2310,6 +2310,13 @@ void lim_handle_csa_offload_msg(tpAniSirGlobal mac_ctx, tpSirMsgQ msg)
}
lim_log(mac_ctx, LOG1, FL("new ch width = %d space:%d"),
session_entry->gLimChannelSwitch.ch_width, chan_space);
+ if ((session_entry->currentOperChannel == csa_params->channel) &&
+ (session_entry->ch_width ==
+ session_entry->gLimChannelSwitch.ch_width)) {
+ lim_log(mac_ctx, LOGE, FL(
+ "Ignore CSA, no change in ch and bw"));
+ goto err;
+ }
lim_prepare_for11h_channel_switch(mac_ctx, session_entry);
csa_offload_ind = qdf_mem_malloc(sizeof(tSmeCsaOffloadInd));
diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c
index f9fd707f4f60..927898c2db15 100644
--- a/core/wma/src/wma_features.c
+++ b/core/wma/src/wma_features.c
@@ -1665,8 +1665,7 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len)
* basic sanity check: requested channel should not be 0
* and equal to home channel
*/
- if ((0 == csa_offload_event->channel) ||
- (cur_chan == csa_offload_event->channel)) {
+ if (0 == csa_offload_event->channel) {
WMA_LOGE("CSA Event with channel %d. Ignore !!",
csa_offload_event->channel);
qdf_mem_free(csa_offload_event);