summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgaolez <gaolez@codeaurora.org>2017-04-06 18:19:31 +0800
committerGerrit - the friendly Code Review server <code-review@localhost>2017-04-13 23:15:19 -0700
commite296db12490c1b1c6c5a656d8b019eb489bf6d72 (patch)
tree29ed21c7aed521f985877417683bc57b2ccad56b
parent71cb0da488414e597d74a058ff09c95d20ab2a24 (diff)
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
-rw-r--r--CORE/MAC/src/pe/lim/limSendMessages.c7
-rw-r--r--CORE/MAC/src/pe/lim/limUtils.c12
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;