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:

cometido por
Gerrit - the friendly Code Review server

ascendente
727ffac40b
cometimento
6563461fa7
@@ -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
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
|
@@ -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;
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador