diff options
| author | Krishna Kumaar Natarajan <kknatara@qca.qualcomm.com> | 2014-07-30 17:41:38 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-08-02 00:34:04 -0700 |
| commit | 1346e8a305776a004c2a5e3aafbb5f645bb4517d (patch) | |
| tree | f45d143130c49b79a2a4e57a6018509f8bd56b86 | |
| parent | d54549036eb2df2e4b00d1f1e9e97ce22eeb2a62 (diff) | |
qcacld: Fix to remove DFS channels from TDLS frames
List of supported channels sent as part of Discovery Request, Setup
Request and Setup Response TDLS frames have DFS channels present. We
should not be switching to DFS channels and hence this change set
validate the list of channels before populating them into TDLS frames.
Change-Id: Ie08cf5612cf8d214f5472c01d6f4d00de474d092
CRs-Fixed: 702165
| -rw-r--r-- | CORE/MAC/src/pe/lim/limProcessTdls.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c index 210c69292bbd..0d4670b55f63 100644 --- a/CORE/MAC/src/pe/lim/limProcessTdls.c +++ b/CORE/MAC/src/pe/lim/limProcessTdls.c @@ -4955,6 +4955,8 @@ void PopulateDot11fTdlsOffchannelParams(tpAniSirGlobal pMac, tANI_U32 numChans = WNI_CFG_VALID_CHANNEL_LIST_LEN; tANI_U8 validChan[WNI_CFG_VALID_CHANNEL_LIST_LEN]; tANI_U8 i; + tANI_U8 valid_count = 0; + if (wlan_cfgGetStr(pMac, WNI_CFG_VALID_CHANNEL_LIST, validChan, &numChans) != eSIR_SUCCESS) { @@ -4965,13 +4967,23 @@ void PopulateDot11fTdlsOffchannelParams(tpAniSirGlobal pMac, limLog(pMac, LOGP, FL("could not retrieve Valid channel list")); } - suppChannels->num_bands = (tANI_U8) numChans; - for ( i = 0U; i < suppChannels->num_bands; i++) + /* validating the channel list for DFS channels */ + for (i = 0U; i < numChans; i++) { - suppChannels->bands[i][0] = validChan[i]; - suppChannels->bands[i][1] = 1; + if (NV_CHANNEL_DFS == vos_nv_getChannelEnabledState(validChan[i])) + { + limLog(pMac, LOG1, + FL("skipping DFS channel %d from the valid channel list"), + validChan[i]); + continue; + } + suppChannels->bands[valid_count][0] = validChan[i]; + suppChannels->bands[valid_count][1] = 1; + valid_count++; } + + suppChannels->num_bands = valid_count; suppChannels->present = 1 ; return ; } |
