From e296db12490c1b1c6c5a656d8b019eb489bf6d72 Mon Sep 17 00:00:00 2001 From: gaolez Date: Thu, 6 Apr 2017 18:19:31 +0800 Subject: qcacld-2.0: fix connect fail issue after switch back to 20Mhz STA device should update channel list when receive switch channel width CSA interrupt. In previous conditional logic the old chanwidth initiate as 0, but the new chanwidth is 0 when switch back to 20Mhz, so in this case driver don't update channel list. So use variable sta_sub20_current_channelwidth in conditional logic for this variable only change while update channel list. Change-Id: Ia82bf32151ca1684ffd40b8157024f84d112d514 CRs-Fixed: 2030062 --- CORE/MAC/src/pe/lim/limSendMessages.c | 7 ++++--- CORE/MAC/src/pe/lim/limUtils.c | 12 ------------ 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/CORE/MAC/src/pe/lim/limSendMessages.c b/CORE/MAC/src/pe/lim/limSendMessages.c index daaf7a4a653f..3f0655c32077 100644 --- a/CORE/MAC/src/pe/lim/limSendMessages.c +++ b/CORE/MAC/src/pe/lim/limSendMessages.c @@ -235,7 +235,7 @@ tSirRetStatus limSendSwitchChnlParams(tpAniSirGlobal pMac, tSirRetStatus retCode = eSIR_SUCCESS; tSirMsgQ msgQ; tpPESession pSessionEntry; - uint32_t old_channelwidth; + if((pSessionEntry = peFindSessionBySessionId(pMac, peSessionId)) == NULL) { limLog( pMac, LOGP, @@ -274,13 +274,14 @@ tSirRetStatus limSendSwitchChnlParams(tpAniSirGlobal pMac, pChnlParams->reduced_beacon_interval = pMac->sap.SapDfsInfo.reduced_beacon_interval; - old_channelwidth = pChnlParams->channelwidth; if (pSessionEntry->sub20_channelwidth == SUB20_MODE_5MHZ) pChnlParams->channelwidth = CH_WIDTH_5MHZ; else if (pSessionEntry->sub20_channelwidth == SUB20_MODE_10MHZ) pChnlParams->channelwidth = CH_WIDTH_10MHZ; - if (old_channelwidth != pChnlParams->channelwidth) + if (pSessionEntry->bssType == eSIR_INFRASTRUCTURE_MODE && + pSessionEntry->sub20_channelwidth != + pMac->sta_sub20_current_channelwidth) sme_set_sta_chanlist_with_sub20(pMac, pSessionEntry->sub20_channelwidth); diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c index ded733ca06d8..14373d90dd35 100644 --- a/CORE/MAC/src/pe/lim/limUtils.c +++ b/CORE/MAC/src/pe/lim/limUtils.c @@ -2813,12 +2813,6 @@ void limSwitchPrimaryChannel(tpAniSirGlobal pMac, tANI_U8 newChannel,tpPESession pMac->lim.gpchangeChannelCallback = limSwitchChannelCback; pMac->lim.gpchangeChannelData = NULL; - pMac->sub20_channelwidth = - psessionEntry->lim_sub20_channel_switch_bandwidth; - - pMac->sta_sub20_current_channelwidth = - psessionEntry->lim_sub20_channel_switch_bandwidth; - psessionEntry->sub20_channelwidth = psessionEntry->lim_sub20_channel_switch_bandwidth; @@ -2882,12 +2876,6 @@ void limSwitchPrimarySecondaryChannel(tpAniSirGlobal pMac, tpPESession psessionE pMac->lim.gpchangeChannelCallback = limSwitchChannelCback; pMac->lim.gpchangeChannelData = NULL; - pMac->sub20_channelwidth = - psessionEntry->lim_sub20_channel_switch_bandwidth; - - pMac->sta_sub20_current_channelwidth = - psessionEntry->lim_sub20_channel_switch_bandwidth; - psessionEntry->sub20_channelwidth = psessionEntry->lim_sub20_channel_switch_bandwidth; -- cgit v1.2.3