1
0

qcacld-3.0: Implement vendor command for ACS policy

qcacld-2.0 to qcacld-3.0 propagation

Add support for vendor command which informs the driver about the
ACS policy.
QCA_NL80211_VENDOR_SUBCMD_ACS_POLICY is used to inform driver about
ACS policies.
QCA_WLAN_VENDOR_ATTR_ACS_DFS_MODE attribute tells if DFS channel
should be enabled or disabled in ACS.
QCA_WLAN_VENDOR_ATTR_ACS_CHANNEL attribute provides channel number to SAP
module to skip ACS and use this channel as operating channel.

Change-Id: I1ba69ed8fdf1c56a90e857054c725b830293d6bf
CRs-Fixed: 997433
Este cometimento está contido em:
Agrawal Ashish
2016-08-18 13:24:32 +05:30
cometido por Gerrit - the friendly Code Review server
ascendente 727ffac40b
cometimento 6563461fa7
9 ficheiros modificados com 234 adições e 3 eliminações

Ver ficheiro

@@ -508,6 +508,20 @@ enum vendor_ie_access_policy {
ACCESS_POLICY_DONOT_RESPOND_IF_IE_IS_PRESENT,
};
/*
* enum sap_acs_dfs_mode- state of DFS mode
* @ACS_DFS_MODE_NONE: DFS mode attribute is not valid
* @ACS_DFS_MODE_ENABLE: DFS mode is enabled
* @ACS_DFS_MODE_DISABLE: DFS mode is disabled
* @ACS_DFS_MODE_DEPRIORITIZE: Deprioritize DFS channels in scanning
*/
enum sap_acs_dfs_mode {
ACS_DFS_MODE_NONE,
ACS_DFS_MODE_ENABLE,
ACS_DFS_MODE_DISABLE,
ACS_DFS_MODE_DEPRIORITIZE
};
typedef struct sap_Config {
tSap_SSIDInfo_t SSIDinfo;
eCsrPhyMode SapHw_mode; /* Wireless Mode */
@@ -577,6 +591,7 @@ typedef struct sap_Config {
uint8_t ampdu_size;
tSirMacRateSet supp_rate_set;
tSirMacRateSet extended_rate_set;
enum sap_acs_dfs_mode acs_dfs_mode;
} tsap_Config_t;
#ifdef FEATURE_WLAN_AP_AP_ACS_OPTIMIZE

Ver ficheiro

@@ -586,7 +586,8 @@ bool sap_chan_sel_init(tHalHandle halHandle,
#endif
sme_cfg_get_int(halHandle, WNI_CFG_DFS_MASTER_ENABLED,
&dfs_master_cap_enabled);
if (dfs_master_cap_enabled == 0)
if (dfs_master_cap_enabled == 0 ||
ACS_DFS_MODE_DISABLE == pSapCtx->dfs_mode)
include_dfs_ch = false;
/* Fill the channel number in the spectrum in the operating freq band */
@@ -1949,7 +1950,6 @@ static uint8_t sap_select_channel_no_scan_result(tHalHandle hal,
if ((ch_type == CHANNEL_STATE_DISABLE) ||
(ch_type == CHANNEL_STATE_INVALID))
continue;
if ((!dfs_master_cap_enabled) &&
(CHANNEL_STATE_DFS == ch_type)) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
@@ -1957,6 +1957,9 @@ static uint8_t sap_select_channel_no_scan_result(tHalHandle hal,
__func__, safe_channels[i].channelNumber);
continue;
}
if ((sap_ctx->dfs_mode == ACS_DFS_MODE_DISABLE) &&
(CHANNEL_STATE_DFS == ch_type))
continue;
if (safe_channels[i].isSafe == true) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,

Ver ficheiro

@@ -270,6 +270,7 @@ typedef struct sSapContext {
uint8_t beacon_tx_rate;
tSirMacRateSet supp_rate_set;
tSirMacRateSet extended_rate_set;
enum sap_acs_dfs_mode dfs_mode;
} *ptSapContext;
/*----------------------------------------------------------------------------

Ver ficheiro

@@ -647,6 +647,7 @@ wlansap_set_scan_acs_channel_params(tsap_Config_t *pconfig,
/* Channel selection is auto or configured */
psap_ctx->channel = pconfig->channel;
psap_ctx->dfs_mode = pconfig->acs_dfs_mode;
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
psap_ctx->cc_switch_mode = pconfig->cc_switch_mode;
#endif
@@ -810,6 +811,7 @@ QDF_STATUS wlansap_start_bss(void *pCtx, /* pwextCtx */
/* Channel selection is auto or configured */
pSapCtx->channel = pConfig->channel;
pSapCtx->dfs_mode = pConfig->acs_dfs_mode;
pSapCtx->ch_params.ch_width = pConfig->ch_params.ch_width;
pSapCtx->ch_params.center_freq_seg0 =
pConfig->ch_params.center_freq_seg0;