wlan: update unsafe channel list with valid channels.
In hdd_hostapd_ch_avoid_cb(), update unsafe channel list if
channel falls under valid channel list.
In hdd_hostapd_update_unsafe_channel_list() make sure
unsafeChannelCount maximum value is NUM_20MHZ_RF_CHANNELS.
Change-Id: I52dd6f5a9f6e20de0192ad25d0cdb8dcd35d3796
CRs-Fixed: 713606
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index b137be3..54f9030 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -1244,6 +1244,13 @@
}
else
{
+ if (unsafeChannelCount > NUM_20MHZ_RF_CHANNELS)
+ {
+ VOS_TRACE(VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
+ FL("unsafeChannelCount%hd greater than %d"),
+ unsafeChannelCount, NUM_20MHZ_RF_CHANNELS);
+ unsafeChannelCount = NUM_20MHZ_RF_CHANNELS;
+ }
vos_mem_copy((void *)pHddCtx->unsafeChannelList,
unsafeChannelList,
unsafeChannelCount * sizeof(tANI_U16));
@@ -1387,12 +1394,19 @@
}
if (dupCheck == unsafeChannelCount)
{
- unsafeChannelList[unsafeChannelCount] = channelLoop;
- unsafeChannelCount++;
- VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
- "%s : unsafe channel %d, count %d",
- __func__,
- channelLoop, unsafeChannelCount);
+ int ii;
+ for(ii=0; ii<NUM_20MHZ_RF_CHANNELS; ii++)
+ {
+ if (channelLoop == safeChannels[ii].channelNumber)
+ {
+ unsafeChannelList[unsafeChannelCount] = channelLoop;
+ unsafeChannelCount++;
+ VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_INFO,
+ "%s : unsafe channel %d, count %d",
+ __func__,
+ channelLoop, unsafeChannelCount);
+ }
+ }
}
else
{