qcacld-3.0: Set ACS weight to max for channels not in scan list
When gApAutoChannelSelection is set to 1 in ini, HOST driver ACS runs in wlan_hdd_cfg80211_start_bss() with all the channel width, hw mode and start and end channel parameters overridden with the values from ini. After scan on all the channels, a weight is assigned to all the channels based on rssi and no. of BSS present on that channel. Weights of all the channels not present in the scan list remains 0 as no scan happened on those channels and so BSS count is 0 and RSSI is max. As the channel with lowest weight is selected, channel which is not even present in scan list is getting selected. Assign SAP_ACS_WEIGHT_MAX to all the channels not in the scan list so only one of the channel present in scan list gets selected after ACS algorithm is completed. Change-Id: Ic567c412ec7f68e2bb5d12e8e982650e56fd0488 CRs-Fixed: 2164979
This commit is contained in:

committed by
snandini

parent
62a55f847c
commit
fee2e36308
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2017 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
|
||||
*
|
||||
@@ -604,6 +604,7 @@ static bool sap_chan_sel_init(tHalHandle halHandle,
|
||||
#endif
|
||||
uint32_t dfs_master_cap_enabled;
|
||||
bool include_dfs_ch = true;
|
||||
uint8_t chan_num;
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH, "In %s",
|
||||
__func__);
|
||||
@@ -693,6 +694,21 @@ static bool sap_chan_sel_init(tHalHandle halHandle,
|
||||
pSpectCh->valid = true;
|
||||
pSpectCh->rssiAgr = SOFTAP_MIN_RSSI; /* Initialise for all channels */
|
||||
pSpectCh->channelWidth = SOFTAP_HT20_CHANNELWIDTH; /* Initialise 20MHz for all the Channels */
|
||||
/* Initialise max ACS weight for all channels */
|
||||
pSpectCh->weight = SAP_ACS_WEIGHT_MAX;
|
||||
for (chan_num = 0; chan_num < sap_ctx->num_of_channel;
|
||||
chan_num++) {
|
||||
if (pSpectCh->chNum !=
|
||||
sap_ctx->channelList[chan_num])
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Initialize ACS weight to 0 for channels
|
||||
* present in sap context scan channel list
|
||||
*/
|
||||
pSpectCh->weight = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -1649,6 +1665,9 @@ static void sap_compute_spect_weight(tSapChSelSpectInfo *pSpectInfoParams,
|
||||
if (ch_in_pcl(sap_ctx, chn_num))
|
||||
rssi -= PCL_RSSI_DISCOUNT;
|
||||
|
||||
if (pSpectCh->weight == SAP_ACS_WEIGHT_MAX)
|
||||
goto debug_info;
|
||||
|
||||
pSpectCh->weight =
|
||||
SAPDFS_NORMALISE_1000 *
|
||||
(sapweight_rssi_count(sap_ctx, rssi,
|
||||
@@ -1659,6 +1678,7 @@ static void sap_compute_spect_weight(tSapChSelSpectInfo *pSpectInfoParams,
|
||||
pSpectCh->weight = SAP_ACS_WEIGHT_MAX;
|
||||
pSpectCh->weight_copy = pSpectCh->weight;
|
||||
|
||||
debug_info:
|
||||
/* ------ Debug Info ------ */
|
||||
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
|
||||
"In %s, Chan=%d Weight= %d rssiAgr=%d bssCount=%d",
|
||||
|
Reference in New Issue
Block a user