qcacld-3.0: Add ACS CFG/INI items to MLME component
Add following CFG items to mlme component 1.CFG_ACS_WITH_MORE_PARAM_NAME 2.CFG_AUTO_CHANNEL_SELECT_WEIGHT 3.CFG_USER_AUTO_CHANNEL_SELECTION 4.CFG_USER_ACS_DFS_LTE 5.CFG_EXTERNAL_ACS_POLICY Change-Id: If31451c2141ec6c30d5590f92a0b36253eaa5c46 CRS-Fixed: 2315978
This commit is contained in:

committed by
nshrivas

parent
5c84b68774
commit
1eeeb8dd85
@@ -26,6 +26,7 @@
|
|||||||
#include "cfg_mlme_chainmask.h"
|
#include "cfg_mlme_chainmask.h"
|
||||||
#include "cfg_mlme_edca_params.h"
|
#include "cfg_mlme_edca_params.h"
|
||||||
#include "cfg_mlme_generic.h"
|
#include "cfg_mlme_generic.h"
|
||||||
|
#include "cfg_mlme_acs.h"
|
||||||
#include "cfg_mlme_ht_caps.h"
|
#include "cfg_mlme_ht_caps.h"
|
||||||
#include "cfg_mlme_he_caps.h"
|
#include "cfg_mlme_he_caps.h"
|
||||||
#include "cfg_mlme_lfr.h"
|
#include "cfg_mlme_lfr.h"
|
||||||
@@ -46,6 +47,7 @@
|
|||||||
|
|
||||||
/* Please Maintain Alphabetic Order here */
|
/* Please Maintain Alphabetic Order here */
|
||||||
#define CFG_MLME_ALL \
|
#define CFG_MLME_ALL \
|
||||||
|
CFG_ACS_ALL \
|
||||||
CFG_CHAINMASK_ALL \
|
CFG_CHAINMASK_ALL \
|
||||||
CFG_EDCA_PARAMS_ALL \
|
CFG_EDCA_PARAMS_ALL \
|
||||||
CFG_FEATURE_FLAG_ALL \
|
CFG_FEATURE_FLAG_ALL \
|
||||||
@@ -54,18 +56,18 @@
|
|||||||
CFG_HE_CAPS_ALL \
|
CFG_HE_CAPS_ALL \
|
||||||
CFG_LFR_ALL \
|
CFG_LFR_ALL \
|
||||||
CFG_MBO_ALL \
|
CFG_MBO_ALL \
|
||||||
|
CFG_MLME_PRODUCT_DETAILS_ALL \
|
||||||
CFG_OBSS_HT40_ALL \
|
CFG_OBSS_HT40_ALL \
|
||||||
CFG_OCE_ALL \
|
CFG_OCE_ALL \
|
||||||
CFG_QOS_ALL \
|
CFG_QOS_ALL \
|
||||||
CFG_RATES_ALL \
|
CFG_RATES_ALL \
|
||||||
CFG_SAP_ALL \
|
CFG_SAP_ALL \
|
||||||
CFG_MLME_PRODUCT_DETAILS_ALL \
|
|
||||||
CFG_SAP_PROTECTION_ALL \
|
CFG_SAP_PROTECTION_ALL \
|
||||||
CFG_SCORING_ALL \
|
CFG_SCORING_ALL \
|
||||||
CFG_STA_ALL \
|
CFG_STA_ALL \
|
||||||
CFG_VHT_CAPS_ALL \
|
|
||||||
CFG_WEP_PARAMS_ALL \
|
|
||||||
CFG_THRESHOLD_ALL \
|
CFG_THRESHOLD_ALL \
|
||||||
CFG_VHT_CAPS_ALL
|
CFG_VHT_CAPS_ALL \
|
||||||
|
CFG_VHT_CAPS_ALL \
|
||||||
|
CFG_WEP_PARAMS_ALL
|
||||||
|
|
||||||
#endif /* __CFG_MLME_H */
|
#endif /* __CFG_MLME_H */
|
||||||
|
165
components/mlme/dispatcher/inc/cfg_mlme_acs.h
Normal file
165
components/mlme/dispatcher/inc/cfg_mlme_acs.h
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
|
* above copyright notice and this permission notice appear in all
|
||||||
|
* copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||||
|
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||||
|
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
||||||
|
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
||||||
|
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
|
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DOC: This file contains centralized definitions of converged configuration.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __CFG_MLME_ACS_H
|
||||||
|
#define __CFG_MLME_ACS_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* acs_with_more_param- Enable acs calculation with more param.
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* This ini is used to enable acs calculation with more param.
|
||||||
|
*
|
||||||
|
* Related: NA
|
||||||
|
*
|
||||||
|
* Supported Feature: ACS
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_ACS_WITH_MORE_PARAM CFG_INI_BOOL( \
|
||||||
|
"acs_with_more_param", \
|
||||||
|
0, \
|
||||||
|
"Enable ACS with more param")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* AutoChannelSelectWeight - ACS channel weight
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 0xFFFFFFFF
|
||||||
|
* @Default: 0x000000FF
|
||||||
|
*
|
||||||
|
* This ini is used to adjust weight of factors in
|
||||||
|
* acs algorithm.
|
||||||
|
*
|
||||||
|
* Supported Feature: ACS
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* bits 0-3: rssi weight
|
||||||
|
* bits 4-7: bss count weight
|
||||||
|
* bits 8-11: noise floor weight
|
||||||
|
* bits 12-15: channel free weight
|
||||||
|
* bits 16-19: tx power range weight
|
||||||
|
* bits 20-23: tx power throughput weight
|
||||||
|
* bits 24-31: reserved
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_AUTO_CHANNEL_SELECT_WEIGHT CFG_INI_UINT( \
|
||||||
|
"AutoChannelSelectWeight", \
|
||||||
|
0, \
|
||||||
|
0xFFFFFFFF, \
|
||||||
|
0x000000FF, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Adjust weight factor in ACS")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gvendor_acs_support - vendor based channel selection manager
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* Enabling this parameter will force driver to use user application based
|
||||||
|
* channel selection algo instead of driver based auto channel selection
|
||||||
|
* logic.
|
||||||
|
*
|
||||||
|
* Supported Feature: ACS
|
||||||
|
*
|
||||||
|
* Usage: External/Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_USER_AUTO_CHANNEL_SELECTION CFG_INI_BOOL( \
|
||||||
|
"gvendor_acs_support", \
|
||||||
|
0, \
|
||||||
|
"Vendor channel selection manager")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* gacs_support_for_dfs_lte_coex - acs support for lte coex and dfs event
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* Enabling this parameter will force driver to use user application based
|
||||||
|
* channel selection algo for channel selection in case of dfs and lte
|
||||||
|
* coex event.
|
||||||
|
*
|
||||||
|
* Supported Feature: ACS
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_USER_ACS_DFS_LTE CFG_INI_BOOL( \
|
||||||
|
"gacs_support_for_dfs_lte_coex", \
|
||||||
|
0, \
|
||||||
|
"Acs support for lte coex and dfs")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* external_acs_policy - External ACS policy control
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* Values are per enum hdd_external_acs_policy.
|
||||||
|
*
|
||||||
|
* This ini is used to control the external ACS policy.
|
||||||
|
*
|
||||||
|
* 0 -Preferable for ACS to select a
|
||||||
|
* channel with non-zero pcl weight.
|
||||||
|
* 1 -Mandatory for ACS to select a
|
||||||
|
* channel with non-zero pcl weight.
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: ACS
|
||||||
|
*
|
||||||
|
* Usage: Internal/External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CFG_EXTERNAL_ACS_POLICY CFG_INI_BOOL( \
|
||||||
|
"acs_policy", \
|
||||||
|
0, \
|
||||||
|
"External ACS Policy Control")
|
||||||
|
|
||||||
|
#define CFG_ACS_ALL \
|
||||||
|
CFG(CFG_ACS_WITH_MORE_PARAM) \
|
||||||
|
CFG(CFG_AUTO_CHANNEL_SELECT_WEIGHT) \
|
||||||
|
CFG(CFG_USER_AUTO_CHANNEL_SELECTION) \
|
||||||
|
CFG(CFG_USER_ACS_DFS_LTE) \
|
||||||
|
CFG(CFG_EXTERNAL_ACS_POLICY)
|
||||||
|
|
||||||
|
#endif /* __CFG_MLME_ACS_H */
|
@@ -177,6 +177,61 @@ QDF_STATUS wlan_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
struct mlme_ht_capabilities_info
|
struct mlme_ht_capabilities_info
|
||||||
ht_cap_info);
|
ht_cap_info);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_acs_with_more_param() - Get the acs_with_more_param flag
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_acs_with_more_param(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_auto_channel_weight() - Get the auto channel weight
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS wlan_mlme_get_auto_channel_weight(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_vendor_acs_support() - Get the vendor based channel selece
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_vendor_acs_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_acs_support_for_dfs_ltecoex() - Get the flag for
|
||||||
|
* acs support for dfs ltecoex
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_external_acs_policy() - Get the flag for external acs policy
|
||||||
|
*
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_external_acs_policy(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* wlan_mlme_get_sap_inactivity_override() - Check if sap max inactivity
|
* wlan_mlme_get_sap_inactivity_override() - Check if sap max inactivity
|
||||||
|
@@ -551,6 +551,22 @@ struct wlan_mlme_product_details_cfg {
|
|||||||
char manufacture_product_version[WLAN_CFG_MFR_PRODUCT_VERSION_LEN + 1];
|
char manufacture_product_version[WLAN_CFG_MFR_PRODUCT_VERSION_LEN + 1];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* struct wlan_mlme_acs - All acs related cfg items
|
||||||
|
* @is_acs_with_more_param - to enable acs with more param
|
||||||
|
* @auto_channel_select_weight - to set acs channel weight
|
||||||
|
* @is_vendor_acs_support - enable application based channel selection
|
||||||
|
* @is_acs_support_for_dfs_ltecoex - enable channel for dfs and lte coex
|
||||||
|
* @is_external_acs_policy - control external policy
|
||||||
|
*/
|
||||||
|
struct wlan_mlme_acs {
|
||||||
|
bool is_acs_with_more_param;
|
||||||
|
uint32_t auto_channel_select_weight;
|
||||||
|
bool is_vendor_acs_support;
|
||||||
|
bool is_acs_support_for_dfs_ltecoex;
|
||||||
|
bool is_external_acs_policy;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_mlme_obss_ht40 - OBSS HT40 config items
|
* struct wlan_mlme_obss_ht40 - OBSS HT40 config items
|
||||||
* @active_dwelltime: obss active dwelltime
|
* @active_dwelltime: obss active dwelltime
|
||||||
@@ -887,10 +903,13 @@ struct wlan_mlme_wep_cfg {
|
|||||||
* @he_caps: HE related cfg items
|
* @he_caps: HE related cfg items
|
||||||
* @lfr: LFR related CFG Items
|
* @lfr: LFR related CFG Items
|
||||||
* @obss_ht40:obss ht40 CFG Items
|
* @obss_ht40:obss ht40 CFG Items
|
||||||
* @vht_cfg: VHT related CFG Items
|
* @mbo_cfg: Multiband Operation related CFG items
|
||||||
|
* @vht_caps: VHT related CFG Items
|
||||||
* @rates: Rates related cfg items
|
* @rates: Rates related cfg items
|
||||||
* @product_details: product details related CFG Items
|
* @product_details: product details related CFG Items
|
||||||
* @sap_protection_cfg: SAP erp protection related CFG items
|
* @sap_protection_cfg: SAP erp protection related CFG items
|
||||||
|
* @acs: ACS related CFG items
|
||||||
|
* @sap_cfg: sap CFG items
|
||||||
* @sta: sta CFG Items
|
* @sta: sta CFG Items
|
||||||
* @scoring: BSS Scoring related CFG Items
|
* @scoring: BSS Scoring related CFG Items
|
||||||
* @threshold: threshold related cfg items
|
* @threshold: threshold related cfg items
|
||||||
@@ -916,6 +935,7 @@ struct wlan_mlme_cfg {
|
|||||||
struct wlan_mlme_scoring_cfg scoring;
|
struct wlan_mlme_scoring_cfg scoring;
|
||||||
struct wlan_mlme_oce oce;
|
struct wlan_mlme_oce oce;
|
||||||
struct wlan_mlme_threshold threshold;
|
struct wlan_mlme_threshold threshold;
|
||||||
|
struct wlan_mlme_acs acs;
|
||||||
struct wlan_mlme_feature_flag feature_flags;
|
struct wlan_mlme_feature_flag feature_flags;
|
||||||
struct wlan_mlme_wep_cfg wep_params;
|
struct wlan_mlme_wep_cfg wep_params;
|
||||||
};
|
};
|
||||||
|
@@ -149,6 +149,91 @@ QDF_STATUS ucfg_mlme_set_ht_cap_info(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_set_ht_cap_info(psoc, ht_cap_info);
|
return wlan_mlme_set_ht_cap_info(psoc, ht_cap_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_acs_with_more_param() - Get the flag for acs with
|
||||||
|
* more param
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_get_acs_with_more_param(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_acs_with_more_param(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_auto_channel_weight() - Get the auto channel select weight
|
||||||
|
*
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_get_auto_channel_weight(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_auto_channel_weight(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_vendor_acs_support() - Get the flag for
|
||||||
|
* vendor acs support
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS ucfg_mlme_get_vendor_acs_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_vendor_acs_support(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_external_acs_policy() - Get flag for external control
|
||||||
|
* acs policy
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_get_external_acs_policy(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_external_acs_policy(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_set_ht_cap_info() - Set the HT cap info config
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Inline UCFG API to be used by HDD/OSIF callers
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
static inline
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_acs_support_for_dfs_ltecoex(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* ucfg_mlme_get_sap_inactivity_override() - Check if sap max inactivity
|
* ucfg_mlme_get_sap_inactivity_override() - Check if sap max inactivity
|
||||||
|
@@ -103,6 +103,78 @@ void wlan_mlme_get_sap_inactivity_override(struct wlan_objmgr_psoc *psoc,
|
|||||||
*val = mlme_obj->cfg.qos_mlme_params.sap_max_inactivity_override;
|
*val = mlme_obj->cfg.qos_mlme_params.sap_max_inactivity_override;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_acs_with_more_param(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.acs.is_acs_with_more_param;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_auto_channel_weight(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.acs.auto_channel_select_weight;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS wlan_mlme_get_vendor_acs_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.acs.is_vendor_acs_support;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_acs_support_for_dfs_ltecoex(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.acs.is_acs_support_for_dfs_ltecoex;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_external_acs_policy(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_obj *mlme_obj = mlme_get_psoc_obj(psoc);
|
||||||
|
|
||||||
|
if (!mlme_obj) {
|
||||||
|
mlme_err("Failed to get MLME Obj");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.acs.is_external_acs_policy;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS wlan_mlme_get_tx_chainmask_cck(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS wlan_mlme_get_tx_chainmask_cck(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value)
|
bool *value)
|
||||||
{
|
{
|
||||||
|
@@ -6894,50 +6894,6 @@ enum hdd_link_speed_rpt_type {
|
|||||||
#define CFG_SET_TSF_PTP_OPT_DEFAULT (0xf)
|
#define CFG_SET_TSF_PTP_OPT_DEFAULT (0xf)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* gvendor_acs_support - vendor based channel selection manager
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 0
|
|
||||||
*
|
|
||||||
* Enabling this parameter will force driver to use user application based
|
|
||||||
* channel selection algo instead of driver based auto channel selection
|
|
||||||
* logic.
|
|
||||||
*
|
|
||||||
* Supported Feature: ACS
|
|
||||||
*
|
|
||||||
* Usage: External/Internal
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_USER_AUTO_CHANNEL_SELECTION "gvendor_acs_support"
|
|
||||||
#define CFG_USER_AUTO_CHANNEL_SELECTION_DISABLE (0)
|
|
||||||
#define CFG_USER_AUTO_CHANNEL_SELECTION_ENABLE (1)
|
|
||||||
#define CFG_USER_AUTO_CHANNEL_SELECTION_DEFAULT (0)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* gacs_support_for_dfs_lte_coex - acs support for lte coex and dfs event
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 0
|
|
||||||
*
|
|
||||||
* Enabling this parameter will force driver to use user application based
|
|
||||||
* channel selection algo for channel selection in case of dfs and lte
|
|
||||||
* coex event.
|
|
||||||
*
|
|
||||||
* Supported Feature: ACS
|
|
||||||
*
|
|
||||||
* Usage: Internal
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_USER_ACS_DFS_LTE "gacs_support_for_dfs_lte_coex"
|
|
||||||
#define CFG_USER_ACS_DFS_LTE_DISABLE (0)
|
|
||||||
#define CFG_USER_ACS_DFS_LTE_ENABLE (1)
|
|
||||||
#define CFG_USER_ACS_DFS_LTE_DEFAULT (0)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Enable/Disable to initiate BUG report in case of fatal event
|
* Enable/Disable to initiate BUG report in case of fatal event
|
||||||
* Default: Enable
|
* Default: Enable
|
||||||
@@ -8316,58 +8272,6 @@ enum hdd_wext_control {
|
|||||||
#define CFG_ACTIVE_MC_BC_APF_MODE_MAX (ACTIVE_APF_ENABLED)
|
#define CFG_ACTIVE_MC_BC_APF_MODE_MAX (ACTIVE_APF_ENABLED)
|
||||||
#define CFG_ACTIVE_MC_BC_APF_MODE_DEFAULT (ACTIVE_APF_DISABLED)
|
#define CFG_ACTIVE_MC_BC_APF_MODE_DEFAULT (ACTIVE_APF_DISABLED)
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* acs_with_more_param- Enable acs calculation with more param.
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 0
|
|
||||||
*
|
|
||||||
* This ini is used to enable acs calculation with more param.
|
|
||||||
*
|
|
||||||
* Related: NA
|
|
||||||
*
|
|
||||||
* Supported Feature: ACS
|
|
||||||
*
|
|
||||||
* Usage: Internal/External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CFG_ACS_WITH_MORE_PARAM_NAME "acs_with_more_param"
|
|
||||||
#define CFG_ACS_WITH_MORE_PARAM_MIN (0)
|
|
||||||
#define CFG_ACS_WITH_MORE_PARAM_MAX (1)
|
|
||||||
#define CFG_ACS_WITH_MORE_PARAM_DEFAULT (0)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* AutoChannelSelectWeight - ACS channel weight
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 0xFFFFFFFF
|
|
||||||
* @Default: 0x000000FF
|
|
||||||
*
|
|
||||||
* This ini is used to adjust weight of factors in
|
|
||||||
* acs algorithm.
|
|
||||||
*
|
|
||||||
* Supported Feature: ACS
|
|
||||||
*
|
|
||||||
* Usage: Internal/External
|
|
||||||
*
|
|
||||||
* bits 0-3: rssi weight
|
|
||||||
* bits 4-7: bss count weight
|
|
||||||
* bits 8-11: noise floor weight
|
|
||||||
* bits 12-15: channel free weight
|
|
||||||
* bits 16-19: tx power range weight
|
|
||||||
* bits 20-23: tx power throughput weight
|
|
||||||
* bits 24-31: reserved
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_AUTO_CHANNEL_SELECT_WEIGHT "AutoChannelSelectWeight"
|
|
||||||
#define CFG_AUTO_CHANNEL_SELECT_WEIGHT_MIN (0)
|
|
||||||
#define CFG_AUTO_CHANNEL_SELECT_WEIGHT_MAX (0xFFFFFFFF)
|
|
||||||
#define CFG_AUTO_CHANNEL_SELECT_WEIGHT_DEFAULT (0x000000FF)
|
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_11AX
|
#ifdef WLAN_FEATURE_11AX
|
||||||
/* 11AX related INI configuration */
|
/* 11AX related INI configuration */
|
||||||
/*
|
/*
|
||||||
@@ -8748,46 +8652,6 @@ enum hdd_wext_control {
|
|||||||
#define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX (0xFFFFFFFF)
|
#define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX (0xFFFFFFFF)
|
||||||
#define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_DEFAULT (60000)
|
#define CFG_MAWC_NLO_MAX_SCAN_INTERVAL_DEFAULT (60000)
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* enum hdd_external_acs_policy - External ACS policy
|
|
||||||
* @HDD_EXTERNAL_ACS_PCL_PREFERRED -Preferable for ACS to select a
|
|
||||||
* channel with non-zero pcl weight.
|
|
||||||
* @HDD_EXTERNAL_ACS_PCL_MANDATORY -Mandatory for ACS to select a
|
|
||||||
* channel with non-zero pcl weight.
|
|
||||||
*
|
|
||||||
* enum hdd_external_acs_policy is used to select the ACS policy.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
enum hdd_external_acs_policy {
|
|
||||||
HDD_EXTERNAL_ACS_PCL_PREFERRED = 0,
|
|
||||||
HDD_EXTERNAL_ACS_PCL_MANDATORY = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* external_acs_policy - External ACS policy control
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 0
|
|
||||||
*
|
|
||||||
* Values are per enum hdd_external_acs_policy.
|
|
||||||
*
|
|
||||||
* This ini is used to control the external ACS policy.
|
|
||||||
*
|
|
||||||
* Related: None
|
|
||||||
*
|
|
||||||
* Supported Feature: ACS
|
|
||||||
*
|
|
||||||
* Usage: Internal/External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_EXTERNAL_ACS_POLICY "acs_policy"
|
|
||||||
#define CFG_EXTERNAL_ACS_POLICY_MIN (HDD_EXTERNAL_ACS_PCL_PREFERRED)
|
|
||||||
#define CFG_EXTERNAL_ACS_POLICY_MAX (HDD_EXTERNAL_ACS_PCL_MANDATORY)
|
|
||||||
#define CFG_EXTERNAL_ACS_POLICY_DEFAULT (HDD_EXTERNAL_ACS_PCL_PREFERRED)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gEnableTxOrphan- Enable/Disable orphaning of Tx packets
|
* gEnableTxOrphan- Enable/Disable orphaning of Tx packets
|
||||||
@@ -10282,8 +10146,6 @@ struct hdd_config {
|
|||||||
uint8_t gDisableDfsJapanW53;
|
uint8_t gDisableDfsJapanW53;
|
||||||
bool gEnableOverLapCh;
|
bool gEnableOverLapCh;
|
||||||
bool fRegChangeDefCountry;
|
bool fRegChangeDefCountry;
|
||||||
bool acs_with_more_param;
|
|
||||||
uint32_t auto_channel_select_weight;
|
|
||||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||||
uint32_t TxFlowLowWaterMark;
|
uint32_t TxFlowLowWaterMark;
|
||||||
uint32_t TxFlowHighWaterMarkOffset;
|
uint32_t TxFlowHighWaterMarkOffset;
|
||||||
@@ -10479,8 +10341,6 @@ struct hdd_config {
|
|||||||
uint8_t adapt_dwell_lpf_weight;
|
uint8_t adapt_dwell_lpf_weight;
|
||||||
uint8_t adapt_dwell_passive_mon_intval;
|
uint8_t adapt_dwell_passive_mon_intval;
|
||||||
uint8_t adapt_dwell_wifi_act_threshold;
|
uint8_t adapt_dwell_wifi_act_threshold;
|
||||||
bool vendor_acs_support;
|
|
||||||
bool acs_support_for_dfs_ltecoex;
|
|
||||||
bool bug_report_for_no_scan_results;
|
bool bug_report_for_no_scan_results;
|
||||||
bool bug_on_reinit_failure;
|
bool bug_on_reinit_failure;
|
||||||
uint32_t iface_change_wait_time;
|
uint32_t iface_change_wait_time;
|
||||||
@@ -10530,7 +10390,6 @@ struct hdd_config {
|
|||||||
uint32_t mawc_nlo_exp_backoff_ratio;
|
uint32_t mawc_nlo_exp_backoff_ratio;
|
||||||
uint32_t mawc_nlo_init_scan_interval;
|
uint32_t mawc_nlo_init_scan_interval;
|
||||||
uint32_t mawc_nlo_max_scan_interval;
|
uint32_t mawc_nlo_max_scan_interval;
|
||||||
enum hdd_external_acs_policy external_acs_policy;
|
|
||||||
/* threshold of packet drops at which FW initiates disconnect */
|
/* threshold of packet drops at which FW initiates disconnect */
|
||||||
uint16_t pkt_err_disconn_th;
|
uint16_t pkt_err_disconn_th;
|
||||||
bool is_force_1x1;
|
bool is_force_1x1;
|
||||||
|
@@ -2243,20 +2243,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_REG_CHANGE_DEF_COUNTRY_MIN,
|
CFG_REG_CHANGE_DEF_COUNTRY_MIN,
|
||||||
CFG_REG_CHANGE_DEF_COUNTRY_MAX),
|
CFG_REG_CHANGE_DEF_COUNTRY_MAX),
|
||||||
|
|
||||||
REG_VARIABLE(CFG_ACS_WITH_MORE_PARAM_NAME, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, acs_with_more_param,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_ACS_WITH_MORE_PARAM_DEFAULT,
|
|
||||||
CFG_ACS_WITH_MORE_PARAM_MIN,
|
|
||||||
CFG_ACS_WITH_MORE_PARAM_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_AUTO_CHANNEL_SELECT_WEIGHT, WLAN_PARAM_HexInteger,
|
|
||||||
struct hdd_config, auto_channel_select_weight,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_AUTO_CHANNEL_SELECT_WEIGHT_DEFAULT,
|
|
||||||
CFG_AUTO_CHANNEL_SELECT_WEIGHT_MIN,
|
|
||||||
CFG_AUTO_CHANNEL_SELECT_WEIGHT_MAX),
|
|
||||||
|
|
||||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||||
REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_LL_TX_FLOW_LWM, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, TxFlowLowWaterMark,
|
struct hdd_config, TxFlowLowWaterMark,
|
||||||
@@ -3091,20 +3077,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE,
|
CFG_CREATE_BUG_REPORT_FOR_SCAN_DISABLE,
|
||||||
CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE),
|
CFG_CREATE_BUG_REPORT_FOR_SCAN_ENABLE),
|
||||||
|
|
||||||
REG_VARIABLE(CFG_USER_AUTO_CHANNEL_SELECTION, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, vendor_acs_support,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_USER_AUTO_CHANNEL_SELECTION_DEFAULT,
|
|
||||||
CFG_USER_AUTO_CHANNEL_SELECTION_DISABLE,
|
|
||||||
CFG_USER_AUTO_CHANNEL_SELECTION_ENABLE),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_USER_ACS_DFS_LTE, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, acs_support_for_dfs_ltecoex,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_USER_ACS_DFS_LTE_DEFAULT,
|
|
||||||
CFG_USER_ACS_DFS_LTE_DISABLE,
|
|
||||||
CFG_USER_ACS_DFS_LTE_ENABLE),
|
|
||||||
|
|
||||||
#ifdef CONFIG_DP_TRACE
|
#ifdef CONFIG_DP_TRACE
|
||||||
REG_VARIABLE(CFG_ENABLE_DP_TRACE, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_ENABLE_DP_TRACE, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, enable_dp_trace,
|
struct hdd_config, enable_dp_trace,
|
||||||
@@ -3113,7 +3085,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_ENABLE_DP_TRACE_MIN,
|
CFG_ENABLE_DP_TRACE_MIN,
|
||||||
CFG_ENABLE_DP_TRACE_MAX),
|
CFG_ENABLE_DP_TRACE_MAX),
|
||||||
|
|
||||||
|
|
||||||
REG_VARIABLE_STRING(CFG_ENABLE_DP_TRACE_CONFIG, WLAN_PARAM_String,
|
REG_VARIABLE_STRING(CFG_ENABLE_DP_TRACE_CONFIG, WLAN_PARAM_String,
|
||||||
struct hdd_config, dp_trace_config,
|
struct hdd_config, dp_trace_config,
|
||||||
VAR_FLAGS_OPTIONAL,
|
VAR_FLAGS_OPTIONAL,
|
||||||
@@ -3467,14 +3438,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MIN,
|
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MIN,
|
||||||
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX),
|
CFG_MAWC_NLO_MAX_SCAN_INTERVAL_MAX),
|
||||||
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_EXTERNAL_ACS_POLICY, WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, external_acs_policy,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_EXTERNAL_ACS_POLICY_DEFAULT,
|
|
||||||
CFG_EXTERNAL_ACS_POLICY_MIN,
|
|
||||||
CFG_EXTERNAL_ACS_POLICY_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_DROPPED_PKT_DISCONNECT_TH_NAME, WLAN_PARAM_Integer,
|
REG_VARIABLE(CFG_DROPPED_PKT_DISCONNECT_TH_NAME, WLAN_PARAM_Integer,
|
||||||
struct hdd_config, pkt_err_disconn_th,
|
struct hdd_config, pkt_err_disconn_th,
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
||||||
@@ -5746,8 +5709,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
|
|||||||
smeConfig->csrConfig.sap_channel_avoidance =
|
smeConfig->csrConfig.sap_channel_avoidance =
|
||||||
hdd_ctx->config->sap_channel_avoidance;
|
hdd_ctx->config->sap_channel_avoidance;
|
||||||
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
||||||
smeConfig->csrConfig.acs_with_more_param =
|
|
||||||
hdd_ctx->config->acs_with_more_param;
|
|
||||||
|
|
||||||
smeConfig->csrConfig.f_prefer_non_dfs_on_radar =
|
smeConfig->csrConfig.f_prefer_non_dfs_on_radar =
|
||||||
hdd_ctx->config->prefer_non_dfs_on_radar;
|
hdd_ctx->config->prefer_non_dfs_on_radar;
|
||||||
|
@@ -127,7 +127,6 @@
|
|||||||
#include "wlan_crypto_global_api.h"
|
#include "wlan_crypto_global_api.h"
|
||||||
#include "wlan_nl_to_crypto_params.h"
|
#include "wlan_nl_to_crypto_params.h"
|
||||||
#include "wlan_crypto_global_def.h"
|
#include "wlan_crypto_global_def.h"
|
||||||
#include "cfg_mlme_threshold.h"
|
|
||||||
#include "cfg_ucfg_api.h"
|
#include "cfg_ucfg_api.h"
|
||||||
|
|
||||||
#define g_mode_rates_size (12)
|
#define g_mode_rates_size (12)
|
||||||
@@ -2195,6 +2194,8 @@ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter,
|
|||||||
eCsrPhyMode phy_mode;
|
eCsrPhyMode phy_mode;
|
||||||
enum qca_wlan_vendor_attr_external_acs_policy acs_policy;
|
enum qca_wlan_vendor_attr_external_acs_policy acs_policy;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
QDF_STATUS qdf_status;
|
||||||
|
bool is_external_acs_policy = cfg_default(CFG_EXTERNAL_ACS_POLICY);
|
||||||
|
|
||||||
if (!hdd_ctx) {
|
if (!hdd_ctx) {
|
||||||
hdd_err("HDD context is NULL");
|
hdd_err("HDD context is NULL");
|
||||||
@@ -2300,8 +2301,12 @@ int hdd_cfg80211_update_acs_config(struct hdd_adapter *adapter,
|
|||||||
vendor_weight_list[i]);
|
vendor_weight_list[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HDD_EXTERNAL_ACS_PCL_MANDATORY ==
|
qdf_status = ucfg_mlme_get_external_acs_policy(hdd_ctx->psoc,
|
||||||
hdd_ctx->config->external_acs_policy) {
|
&is_external_acs_policy);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_external_acs_policy failed, set default");
|
||||||
|
|
||||||
|
if (is_external_acs_policy) {
|
||||||
acs_policy =
|
acs_policy =
|
||||||
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_MANDATORY;
|
QCA_WLAN_VENDOR_ATTR_EXTERNAL_ACS_POLICY_PCL_MANDATORY;
|
||||||
} else {
|
} else {
|
||||||
@@ -2413,6 +2418,8 @@ int hdd_start_vendor_acs(struct hdd_adapter *adapter)
|
|||||||
{
|
{
|
||||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||||
int status;
|
int status;
|
||||||
|
QDF_STATUS qdf_status;
|
||||||
|
bool is_acs_support_for_dfs_ltecoex = cfg_default(CFG_USER_ACS_DFS_LTE);
|
||||||
|
|
||||||
status = hdd_create_acs_timer(adapter);
|
status = hdd_create_acs_timer(adapter);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
@@ -2425,8 +2432,13 @@ int hdd_start_vendor_acs(struct hdd_adapter *adapter)
|
|||||||
hdd_err("failed to update acs timer reason");
|
hdd_err("failed to update acs timer reason");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
qdf_status = ucfg_mlme_get_acs_support_for_dfs_ltecoex(
|
||||||
|
hdd_ctx->psoc,
|
||||||
|
&is_acs_support_for_dfs_ltecoex);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_acs_support_for_dfs_ltecoex failed, set def");
|
||||||
|
|
||||||
if (hdd_ctx->config->acs_support_for_dfs_ltecoex)
|
if (is_acs_support_for_dfs_ltecoex)
|
||||||
status = qdf_status_to_os_return(wlan_sap_set_vendor_acs(
|
status = qdf_status_to_os_return(wlan_sap_set_vendor_acs(
|
||||||
WLAN_HDD_GET_SAP_CTX_PTR(adapter),
|
WLAN_HDD_GET_SAP_CTX_PTR(adapter),
|
||||||
true));
|
true));
|
||||||
@@ -2468,6 +2480,12 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
|
|||||||
uint8_t conc_channel;
|
uint8_t conc_channel;
|
||||||
mac_handle_t mac_handle;
|
mac_handle_t mac_handle;
|
||||||
bool skip_etsi13_srd_chan = false;
|
bool skip_etsi13_srd_chan = false;
|
||||||
|
uint32_t auto_channel_select_weight =
|
||||||
|
cfg_default(CFG_AUTO_CHANNEL_SELECT_WEIGHT);
|
||||||
|
bool is_vendor_acs_support =
|
||||||
|
cfg_default(CFG_USER_AUTO_CHANNEL_SELECTION);
|
||||||
|
bool is_external_acs_policy =
|
||||||
|
cfg_default(CFG_EXTERNAL_ACS_POLICY);
|
||||||
|
|
||||||
/* ***Note*** Donot set SME config related to ACS operation here because
|
/* ***Note*** Donot set SME config related to ACS operation here because
|
||||||
* ACS operation is not synchronouse and ACS for Second AP may come when
|
* ACS operation is not synchronouse and ACS for Second AP may come when
|
||||||
@@ -2727,9 +2745,16 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
|
|||||||
ch_width, ht_enabled, vht_enabled,
|
ch_width, ht_enabled, vht_enabled,
|
||||||
sap_config->acs_cfg.start_ch,
|
sap_config->acs_cfg.start_ch,
|
||||||
sap_config->acs_cfg.end_ch);
|
sap_config->acs_cfg.end_ch);
|
||||||
if (hdd_ctx->config->auto_channel_select_weight)
|
|
||||||
|
qdf_status =
|
||||||
|
ucfg_mlme_get_auto_channel_weight(hdd_ctx->psoc,
|
||||||
|
&auto_channel_select_weight);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_auto_channel_weight failed");
|
||||||
|
|
||||||
|
if (auto_channel_select_weight)
|
||||||
sap_config->auto_channel_select_weight =
|
sap_config->auto_channel_select_weight =
|
||||||
hdd_ctx->config->auto_channel_select_weight;
|
auto_channel_select_weight;
|
||||||
|
|
||||||
sap_config->acs_cfg.is_ht_enabled = ht_enabled;
|
sap_config->acs_cfg.is_ht_enabled = ht_enabled;
|
||||||
sap_config->acs_cfg.is_vht_enabled = vht_enabled;
|
sap_config->acs_cfg.is_vht_enabled = vht_enabled;
|
||||||
@@ -2743,8 +2768,13 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
|
|||||||
|
|
||||||
conc_channel = policy_mgr_mode_specific_get_channel(hdd_ctx->psoc,
|
conc_channel = policy_mgr_mode_specific_get_channel(hdd_ctx->psoc,
|
||||||
PM_STA_MODE);
|
PM_STA_MODE);
|
||||||
if (hdd_ctx->config->external_acs_policy ==
|
|
||||||
HDD_EXTERNAL_ACS_PCL_MANDATORY) {
|
qdf_status = ucfg_mlme_get_external_acs_policy(hdd_ctx->psoc,
|
||||||
|
&is_external_acs_policy);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_external_acs_policy failed");
|
||||||
|
|
||||||
|
if (is_external_acs_policy) {
|
||||||
if ((conc_channel >= WLAN_REG_CH_NUM(CHAN_ENUM_36) &&
|
if ((conc_channel >= WLAN_REG_CH_NUM(CHAN_ENUM_36) &&
|
||||||
sap_config->acs_cfg.band == QCA_ACS_MODE_IEEE80211A) ||
|
sap_config->acs_cfg.band == QCA_ACS_MODE_IEEE80211A) ||
|
||||||
(conc_channel <= WLAN_REG_CH_NUM(CHAN_ENUM_14) &&
|
(conc_channel <= WLAN_REG_CH_NUM(CHAN_ENUM_14) &&
|
||||||
@@ -2786,8 +2816,15 @@ static int __wlan_hdd_cfg80211_do_acs(struct wiphy *wiphy,
|
|||||||
hdd_debug("ACS Pending for %s", adapter->dev->name);
|
hdd_debug("ACS Pending for %s", adapter->dev->name);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
} else {
|
} else {
|
||||||
|
qdf_status =
|
||||||
|
ucfg_mlme_get_vendor_acs_support(
|
||||||
|
hdd_ctx->psoc,
|
||||||
|
&is_vendor_acs_support);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_vendor_acs_support failed, set default");
|
||||||
|
|
||||||
/* Check if vendor specific acs is enabled */
|
/* Check if vendor specific acs is enabled */
|
||||||
if (hdd_ctx->config->vendor_acs_support)
|
if (is_vendor_acs_support)
|
||||||
ret = hdd_start_vendor_acs(adapter);
|
ret = hdd_start_vendor_acs(adapter);
|
||||||
else
|
else
|
||||||
ret = wlan_hdd_cfg80211_start_acs(adapter);
|
ret = wlan_hdd_cfg80211_start_acs(adapter);
|
||||||
|
@@ -82,6 +82,7 @@
|
|||||||
#include <wlan_ipa_ucfg_api.h>
|
#include <wlan_ipa_ucfg_api.h>
|
||||||
#include <wlan_cp_stats_mc_ucfg_api.h>
|
#include <wlan_cp_stats_mc_ucfg_api.h>
|
||||||
#include "wlan_mlme_ucfg_api.h"
|
#include "wlan_mlme_ucfg_api.h"
|
||||||
|
#include "cfg_ucfg_api.h"
|
||||||
|
|
||||||
#define ACS_SCAN_EXPIRY_TIMEOUT_S 4
|
#define ACS_SCAN_EXPIRY_TIMEOUT_S 4
|
||||||
|
|
||||||
@@ -4252,8 +4253,16 @@ static int wlan_hdd_sap_p2p_11ac_overrides(struct hdd_adapter *ap_adapter)
|
|||||||
static int wlan_hdd_setup_driver_overrides(struct hdd_adapter *ap_adapter)
|
static int wlan_hdd_setup_driver_overrides(struct hdd_adapter *ap_adapter)
|
||||||
{
|
{
|
||||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(ap_adapter);
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(ap_adapter);
|
||||||
|
QDF_STATUS qdf_status;
|
||||||
|
bool is_vendor_acs_support =
|
||||||
|
cfg_default(CFG_USER_AUTO_CHANNEL_SELECTION);
|
||||||
|
|
||||||
if (!hdd_ctx->config->vendor_acs_support)
|
qdf_status = ucfg_mlme_get_vendor_acs_support(hdd_ctx->psoc,
|
||||||
|
&is_vendor_acs_support);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(qdf_status))
|
||||||
|
hdd_err("get_vendor_acs_support failed, set default");
|
||||||
|
|
||||||
|
if (!is_vendor_acs_support)
|
||||||
return wlan_hdd_sap_p2p_11ac_overrides(ap_adapter);
|
return wlan_hdd_sap_p2p_11ac_overrides(ap_adapter);
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
@@ -4512,6 +4521,8 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
|
|||||||
uint8_t ignore_cac = 0;
|
uint8_t ignore_cac = 0;
|
||||||
int value;
|
int value;
|
||||||
bool val;
|
bool val;
|
||||||
|
uint32_t auto_channel_select_weight =
|
||||||
|
cfg_default(CFG_AUTO_CHANNEL_SELECT_WEIGHT);
|
||||||
|
|
||||||
hdd_enter();
|
hdd_enter();
|
||||||
|
|
||||||
@@ -4615,8 +4626,12 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter,
|
|||||||
pConfig->beacon_int = pMgmt_frame->u.beacon.beacon_int;
|
pConfig->beacon_int = pMgmt_frame->u.beacon.beacon_int;
|
||||||
pConfig->dfs_cac_offload = hdd_ctx->dfs_cac_offload;
|
pConfig->dfs_cac_offload = hdd_ctx->dfs_cac_offload;
|
||||||
|
|
||||||
pConfig->auto_channel_select_weight =
|
status = ucfg_mlme_get_auto_channel_weight(hdd_ctx->psoc,
|
||||||
iniConfig->auto_channel_select_weight;
|
&auto_channel_select_weight);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
hdd_err("ucfg_mlme_get_auto_channel_weight failed, set def");
|
||||||
|
|
||||||
|
pConfig->auto_channel_select_weight = auto_channel_select_weight;
|
||||||
pConfig->disableDFSChSwitch = iniConfig->disableDFSChSwitch;
|
pConfig->disableDFSChSwitch = iniConfig->disableDFSChSwitch;
|
||||||
ucfg_mlme_get_sap_chn_switch_bcn_count(hdd_ctx->psoc, &value);
|
ucfg_mlme_get_sap_chn_switch_bcn_count(hdd_ctx->psoc, &value);
|
||||||
pConfig->sap_chanswitch_beacon_cnt = value;
|
pConfig->sap_chanswitch_beacon_cnt = value;
|
||||||
|
@@ -143,6 +143,7 @@
|
|||||||
#include "wlan_tdls_cfg_api.h"
|
#include "wlan_tdls_cfg_api.h"
|
||||||
#include <wlan_hdd_rssi_monitor.h>
|
#include <wlan_hdd_rssi_monitor.h>
|
||||||
#include "wlan_mlme_ucfg_api.h"
|
#include "wlan_mlme_ucfg_api.h"
|
||||||
|
#include "cfg_mlme_acs.h"
|
||||||
#include "wlan_mlme_public_struct.h"
|
#include "wlan_mlme_public_struct.h"
|
||||||
#include "wlan_fwol_ucfg_api.h"
|
#include "wlan_fwol_ucfg_api.h"
|
||||||
#ifdef CNSS_GENL
|
#ifdef CNSS_GENL
|
||||||
@@ -8561,6 +8562,10 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt)
|
|||||||
bool found = false;
|
bool found = false;
|
||||||
uint8_t restart_chan;
|
uint8_t restart_chan;
|
||||||
bool value;
|
bool value;
|
||||||
|
QDF_STATUS status;
|
||||||
|
bool is_acs_support_for_dfs_ltecoex = cfg_default(CFG_USER_ACS_DFS_LTE);
|
||||||
|
bool is_vendor_acs_support =
|
||||||
|
cfg_default(CFG_USER_AUTO_CHANNEL_SELECTION);
|
||||||
|
|
||||||
hdd_for_each_adapter(hdd_ctxt, adapter) {
|
hdd_for_each_adapter(hdd_ctxt, adapter) {
|
||||||
if (!(adapter->device_mode == QDF_SAP_MODE &&
|
if (!(adapter->device_mode == QDF_SAP_MODE &&
|
||||||
@@ -8598,8 +8603,19 @@ void hdd_unsafe_channel_restart_sap(struct hdd_context *hdd_ctxt)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hdd_ctxt->config->vendor_acs_support &&
|
status = ucfg_mlme_get_acs_support_for_dfs_ltecoex(
|
||||||
hdd_ctxt->config->acs_support_for_dfs_ltecoex) {
|
hdd_ctxt->psoc,
|
||||||
|
&is_acs_support_for_dfs_ltecoex);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
hdd_err("get_acs_support_for_dfs_ltecoex failed,set def");
|
||||||
|
|
||||||
|
status = ucfg_mlme_get_vendor_acs_support(
|
||||||
|
hdd_ctxt->psoc,
|
||||||
|
&is_vendor_acs_support);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
hdd_err("get_vendor_acs_support failed, set default");
|
||||||
|
|
||||||
|
if (is_vendor_acs_support && is_acs_support_for_dfs_ltecoex) {
|
||||||
hdd_update_acs_timer_reason(adapter,
|
hdd_update_acs_timer_reason(adapter,
|
||||||
QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX);
|
QCA_WLAN_VENDOR_ACS_SELECT_REASON_LTE_COEX);
|
||||||
continue;
|
continue;
|
||||||
|
@@ -1193,7 +1193,6 @@ typedef struct tagCsrConfigParam {
|
|||||||
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
||||||
bool sap_channel_avoidance;
|
bool sap_channel_avoidance;
|
||||||
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
||||||
bool acs_with_more_param;
|
|
||||||
uint8_t f_prefer_non_dfs_on_radar;
|
uint8_t f_prefer_non_dfs_on_radar;
|
||||||
bool is_ps_enabled;
|
bool is_ps_enabled;
|
||||||
uint32_t auto_bmps_timer_val;
|
uint32_t auto_bmps_timer_val;
|
||||||
|
@@ -3075,8 +3075,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
|
|||||||
pMac->sap.sap_channel_avoidance =
|
pMac->sap.sap_channel_avoidance =
|
||||||
pParam->sap_channel_avoidance;
|
pParam->sap_channel_avoidance;
|
||||||
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
||||||
pMac->sap.acs_with_more_param =
|
|
||||||
pParam->acs_with_more_param;
|
|
||||||
|
|
||||||
pMac->f_prefer_non_dfs_on_radar =
|
pMac->f_prefer_non_dfs_on_radar =
|
||||||
pParam->f_prefer_non_dfs_on_radar;
|
pParam->f_prefer_non_dfs_on_radar;
|
||||||
@@ -3318,7 +3316,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|||||||
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
|
||||||
pParam->sap_channel_avoidance = pMac->sap.sap_channel_avoidance;
|
pParam->sap_channel_avoidance = pMac->sap.sap_channel_avoidance;
|
||||||
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
|
||||||
pParam->acs_with_more_param = pMac->sap.acs_with_more_param;
|
|
||||||
pParam->max_intf_count = pMac->sme.max_intf_count;
|
pParam->max_intf_count = pMac->sme.max_intf_count;
|
||||||
pParam->enableSelfRecovery = pMac->sme.enableSelfRecovery;
|
pParam->enableSelfRecovery = pMac->sme.enableSelfRecovery;
|
||||||
pParam->f_prefer_non_dfs_on_radar =
|
pParam->f_prefer_non_dfs_on_radar =
|
||||||
|
Reference in New Issue
Block a user