diff options
| author | gaolez <gaolez@codeaurora.org> | 2017-04-06 18:19:31 +0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-04-13 23:15:19 -0700 |
| commit | e296db12490c1b1c6c5a656d8b019eb489bf6d72 (patch) | |
| tree | 29ed21c7aed521f985877417683bc57b2ccad56b | |
| parent | 71cb0da488414e597d74a058ff09c95d20ab2a24 (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.c | 7 | ||||
| -rw-r--r-- | 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; |
