diff --git a/core/hdd/src/wlan_hdd_scan.c b/core/hdd/src/wlan_hdd_scan.c index 34cac57260e1..38da16492b67 100644 --- a/core/hdd/src/wlan_hdd_scan.c +++ b/core/hdd/src/wlan_hdd_scan.c @@ -48,6 +48,7 @@ #include "wlan_hdd_scan.h" #include "cds_concurrency.h" #include "wma_api.h" +#include "cds_utils.h" #define MAX_RATES 12 #define HDD_WAKE_LOCK_SCAN_DURATION (5 * 1000) /* in msec */ @@ -1263,6 +1264,7 @@ static int __wlan_hdd_cfg80211_scan(struct wiphy *wiphy, uint8_t *pP2pIe = NULL; hdd_adapter_t *con_sap_adapter; uint16_t con_dfs_ch; + uint8_t num_chan = 0; ENTER(); @@ -1442,14 +1444,22 @@ static int __wlan_hdd_cfg80211_scan(struct wiphy *wiphy, goto free_mem; } for (i = 0, len = 0; i < request->n_channels; i++) { - channelList[i] = request->channels[i]->hw_value; + if (cds_is_dsrc_channel(cds_chan_to_freq( + request->channels[i]->hw_value))) + continue; + channelList[num_chan] = request->channels[i]->hw_value; len += snprintf(chList + len, 5, "%d ", channelList[i]); + num_chan++; } - hdd_notice("Channel-List: %s", chList); - } - scan_req.ChannelInfo.numOfChannels = request->n_channels; + if (!num_chan) { + hdd_err("Received zero non-dsrc channels"); + status = -EINVAL; + goto free_mem; + } + + scan_req.ChannelInfo.numOfChannels = num_chan; scan_req.ChannelInfo.ChannelList = channelList; /* set requestType to full scan */