summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrishna Kumaar Natarajan <kknatara@qca.qualcomm.com>2014-07-30 17:41:38 -0700
committerAkash Patel <c_akashp@qca.qualcomm.com>2014-08-02 00:34:04 -0700
commit1346e8a305776a004c2a5e3aafbb5f645bb4517d (patch)
treef45d143130c49b79a2a4e57a6018509f8bd56b86
parentd54549036eb2df2e4b00d1f1e9e97ce22eeb2a62 (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.c20
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 ;
}