From bb9b5d072481a64e3a25af00a7c0aabc8f4a5f18 Mon Sep 17 00:00:00 2001 From: Kiran Kumar Lokere Date: Tue, 20 Dec 2016 14:52:03 -0800 Subject: 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 --- core/mac/src/pe/lim/lim_send_sme_rsp_messages.c | 7 +++++++ core/wma/src/wma_features.c | 3 +-- 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); -- cgit v1.2.3