From 2f13193c4aa32cfb5b7821202f0db02aee504243 Mon Sep 17 00:00:00 2001 From: Naveen Rawat Date: Tue, 19 Dec 2017 16:23:00 -0800 Subject: [PATCH] qcacld-3.0: Fix handler for operating mode action frame Do not drop operating mode action frame if channel bonding is disabled. Process NSS change if requested by frame. Change-Id: Id342c5399a70be8ea1b3d6c9878983a75ca456ad CRs-Fixed: 2157167 --- .../mac/src/pe/lim/lim_process_action_frame.c | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/core/mac/src/pe/lim/lim_process_action_frame.c b/core/mac/src/pe/lim/lim_process_action_frame.c index e8e94b6e717e..559177f63153 100644 --- a/core/mac/src/pe/lim/lim_process_action_frame.c +++ b/core/mac/src/pe/lim/lim_process_action_frame.c @@ -467,17 +467,6 @@ static void __lim_process_operating_mode_action_frame(tpAniSirGlobal mac_ctx, frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_pkt_info); pe_debug("Received Operating Mode action frame"); - if (CHAN_ENUM_14 >= session->currentOperChannel) - cb_mode = mac_ctx->roam.configParam.channelBondingMode24GHz; - else - cb_mode = mac_ctx->roam.configParam.channelBondingMode5GHz; - /* Do not update the channel bonding mode if channel bonding - * mode is disabled in INI. - */ - if (WNI_CFG_CHANNEL_BONDING_MODE_DISABLE == cb_mode) { - pe_warn("channel bonding disabled"); - return; - } operating_mode_frm = qdf_mem_malloc(sizeof(*operating_mode_frm)); if (NULL == operating_mode_frm) { pe_err("AllocateMemory failed"); @@ -503,6 +492,19 @@ static void __lim_process_operating_mode_action_frame(tpAniSirGlobal mac_ctx, goto end; } + if (CHAN_ENUM_14 >= session->currentOperChannel) + cb_mode = mac_ctx->roam.configParam.channelBondingMode24GHz; + else + cb_mode = mac_ctx->roam.configParam.channelBondingMode5GHz; + /* + * Do not update the channel bonding mode if channel bonding + * mode is disabled in INI. + */ + if (WNI_CFG_CHANNEL_BONDING_MODE_DISABLE == cb_mode) { + pe_warn("channel bonding disabled"); + goto update_nss; + } + if (sta_ptr->htSupportedChannelWidthSet) { if (WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ < sta_ptr->vhtSupportedChannelWidthSet) @@ -564,6 +566,7 @@ static void __lim_process_operating_mode_action_frame(tpAniSirGlobal mac_ctx, sta_ptr->staIndex, mac_hdr->sa); } +update_nss: if (sta_ptr->vhtSupportedRxNss != (operating_mode_frm->OperatingMode.rxNSS + 1)) { sta_ptr->vhtSupportedRxNss =