qcacld-3.0: Add config to ease scan/connection restriction in 6Ghz
Add new config to ease scan and connection restriction in 6GHz band when bss is advertising different country. Change-Id: I13bd0dbd52fad297b995add8fc8a71d7a058c25b CRs-Fixed: 3135152
This commit is contained in:

committed by
Madan Koyyalamudi

parent
24c0f1aa1b
commit
12c10fe176
@@ -354,6 +354,28 @@ static void mlme_init_wds_config_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_BAND_6GHZ
|
||||||
|
/**
|
||||||
|
* mlme_init_relaxed_6ghz_conn_policy() - initialize relaxed 6GHz
|
||||||
|
* policy connection flag
|
||||||
|
* @psoc: Pointer to PSOC
|
||||||
|
* @gen: pointer to generic CFG items
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static void mlme_init_relaxed_6ghz_conn_policy(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_mlme_generic *gen)
|
||||||
|
{
|
||||||
|
gen->relaxed_6ghz_conn_policy =
|
||||||
|
cfg_default(CFG_RELAXED_6GHZ_CONN_POLICY);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void mlme_init_relaxed_6ghz_conn_policy(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_mlme_generic *gen)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_init_mgmt_hw_tx_retry_count_cfg() - initialize mgmt hw tx retry count
|
* mlme_init_mgmt_hw_tx_retry_count_cfg() - initialize mgmt hw tx retry count
|
||||||
* @psoc: Pointer to PSOC
|
* @psoc: Pointer to PSOC
|
||||||
@@ -461,6 +483,7 @@ static void mlme_init_generic_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
gen->tx_retry_multiplier = cfg_get(psoc, CFG_TX_RETRY_MULTIPLIER);
|
gen->tx_retry_multiplier = cfg_get(psoc, CFG_TX_RETRY_MULTIPLIER);
|
||||||
mlme_init_wds_config_cfg(psoc, gen);
|
mlme_init_wds_config_cfg(psoc, gen);
|
||||||
mlme_init_mgmt_hw_tx_retry_count_cfg(psoc, gen);
|
mlme_init_mgmt_hw_tx_retry_count_cfg(psoc, gen);
|
||||||
|
mlme_init_relaxed_6ghz_conn_policy(psoc, gen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mlme_init_edca_ani_cfg(struct wlan_objmgr_psoc *psoc,
|
static void mlme_init_edca_ani_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -178,6 +178,30 @@ enum wlan_wds_mode {
|
|||||||
1, \
|
1, \
|
||||||
"rf test mode Enable Flag")
|
"rf test mode Enable Flag")
|
||||||
|
|
||||||
|
#ifdef CONFIG_BAND_6GHZ
|
||||||
|
/**
|
||||||
|
* relaxed_6ghz_conn_policy - Enable 6ghz relaxed connection policy
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 0
|
||||||
|
*
|
||||||
|
* This cfg is used to set 6Ghz relaxed connection policies where STA
|
||||||
|
* will be allowed to operate in VLP mode and scan/connect to 6 GHz BSS
|
||||||
|
* with unmatching country code.
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*/
|
||||||
|
#define CFG_RELAXED_6GHZ_CONN_POLICY CFG_BOOL( \
|
||||||
|
"relaxed_6ghz_conn_policy", \
|
||||||
|
0, \
|
||||||
|
"6ghz relaxed connection policy")
|
||||||
|
#define CFG_RELAX_6GHZ_CONN_POLICY CFG(CFG_RELAXED_6GHZ_CONN_POLICY)
|
||||||
|
#else
|
||||||
|
#define CFG_RELAX_6GHZ_CONN_POLICY
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* BandCapability - Preferred band (0: 2.4G, 5G, and 6G,
|
* BandCapability - Preferred band (0: 2.4G, 5G, and 6G,
|
||||||
@@ -971,5 +995,6 @@ enum wlan_wds_mode {
|
|||||||
CFG(CFG_RF_TEST_MODE_SUPP_ENABLED) \
|
CFG(CFG_RF_TEST_MODE_SUPP_ENABLED) \
|
||||||
CFG_WDS_MODE_ALL \
|
CFG_WDS_MODE_ALL \
|
||||||
CFG(CFG_TX_RETRY_MULTIPLIER) \
|
CFG(CFG_TX_RETRY_MULTIPLIER) \
|
||||||
CFG(CFG_MGMT_FRAME_HW_TX_RETRY_COUNT)
|
CFG(CFG_MGMT_FRAME_HW_TX_RETRY_COUNT) \
|
||||||
|
CFG_RELAX_6GHZ_CONN_POLICY
|
||||||
#endif /* __CFG_MLME_GENERIC_H */
|
#endif /* __CFG_MLME_GENERIC_H */
|
||||||
|
@@ -2238,6 +2238,28 @@ wlan_mlme_is_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
|
|||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
|
wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
|
||||||
|
|
||||||
|
#ifdef CONFIG_BAND_6GHZ
|
||||||
|
/**
|
||||||
|
* wlan_mlme_is_relaxed_6ghz_conn_policy_enabled() - Get the 6ghz relaxed
|
||||||
|
* connection policy flag
|
||||||
|
* @psoc: psoc context
|
||||||
|
* @value: Enable/Disable value ptr.
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_is_relaxed_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value);
|
||||||
|
#else
|
||||||
|
static inline QDF_STATUS
|
||||||
|
wlan_mlme_is_relaxed_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
*value = false;
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_sta_miracast_mcc_rest_time() - Get STA/MIRACAST MCC rest time
|
* wlan_mlme_get_sta_miracast_mcc_rest_time() - Get STA/MIRACAST MCC rest time
|
||||||
*
|
*
|
||||||
|
@@ -1340,6 +1340,7 @@ enum mlme_cfg_frame_type {
|
|||||||
* @dual_sta_policy_cfg: Dual STA policies configuration
|
* @dual_sta_policy_cfg: Dual STA policies configuration
|
||||||
* @tx_retry_multiplier: TX xretry extension parameter
|
* @tx_retry_multiplier: TX xretry extension parameter
|
||||||
* @mgmt_hw_tx_retry_count: MGMT HW tx retry count for frames
|
* @mgmt_hw_tx_retry_count: MGMT HW tx retry count for frames
|
||||||
|
* @relaxed_6ghz_conn_policy: 6GHz relaxed connection policy
|
||||||
*/
|
*/
|
||||||
struct wlan_mlme_generic {
|
struct wlan_mlme_generic {
|
||||||
uint32_t band_capability;
|
uint32_t band_capability;
|
||||||
@@ -1387,6 +1388,9 @@ struct wlan_mlme_generic {
|
|||||||
struct dual_sta_policy dual_sta_policy;
|
struct dual_sta_policy dual_sta_policy;
|
||||||
uint32_t tx_retry_multiplier;
|
uint32_t tx_retry_multiplier;
|
||||||
uint8_t mgmt_hw_tx_retry_count[CFG_FRAME_TYPE_MAX];
|
uint8_t mgmt_hw_tx_retry_count[CFG_FRAME_TYPE_MAX];
|
||||||
|
#ifdef CONFIG_BAND_6GHZ
|
||||||
|
bool relaxed_6ghz_conn_policy;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -2760,6 +2760,23 @@ ucfg_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
|
|||||||
return wlan_mlme_set_rf_test_mode_enabled(psoc, value);
|
return wlan_mlme_set_rf_test_mode_enabled(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_is_relaxed_6ghz_conn_policy_enabled() - Get 6ghz relaxed
|
||||||
|
* connection policy flag
|
||||||
|
* @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_is_relaxed_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_is_relaxed_6ghz_conn_policy_enabled(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_opr_rate() - Get operational rate set
|
* ucfg_mlme_get_opr_rate() - Get operational rate set
|
||||||
* @psoc: pointer to vdev object
|
* @psoc: pointer to vdev object
|
||||||
|
@@ -3032,6 +3032,23 @@ wlan_mlme_set_rf_test_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_BAND_6GHZ
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_is_relaxed_6ghz_conn_policy_enabled(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *value)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
*value = mlme_obj->cfg.gen.relaxed_6ghz_conn_policy;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, uint8_t value)
|
wlan_mlme_cfg_set_vht_chan_width(struct wlan_objmgr_psoc *psoc, uint8_t value)
|
||||||
{
|
{
|
||||||
|
@@ -14710,6 +14710,7 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
|
|||||||
mac_handle_t mac_handle;
|
mac_handle_t mac_handle;
|
||||||
bool b_cts2self, is_imps_enabled;
|
bool b_cts2self, is_imps_enabled;
|
||||||
bool rf_test_mode;
|
bool rf_test_mode;
|
||||||
|
bool conn_policy;
|
||||||
|
|
||||||
hdd_enter();
|
hdd_enter();
|
||||||
|
|
||||||
@@ -14803,6 +14804,16 @@ static int hdd_features_init(struct hdd_context *hdd_ctx)
|
|||||||
wlan_cm_set_6ghz_key_mgmt_mask(hdd_ctx->psoc,
|
wlan_cm_set_6ghz_key_mgmt_mask(hdd_ctx->psoc,
|
||||||
ALLOWED_KEYMGMT_6G_MASK);
|
ALLOWED_KEYMGMT_6G_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = ucfg_mlme_is_relaxed_6ghz_conn_policy_enabled(hdd_ctx->psoc,
|
||||||
|
&conn_policy);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status)) {
|
||||||
|
hdd_err("Get 6ghz relaxed connection policy failed");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
if (conn_policy)
|
||||||
|
wlan_cm_set_relaxed_6ghz_conn_policy(hdd_ctx->psoc, true);
|
||||||
|
|
||||||
hdd_thermal_stats_cmd_init(hdd_ctx);
|
hdd_thermal_stats_cmd_init(hdd_ctx);
|
||||||
sme_set_cal_failure_event_cb(hdd_ctx->mac_handle,
|
sme_set_cal_failure_event_cb(hdd_ctx->mac_handle,
|
||||||
hdd_cal_fail_send_event);
|
hdd_cal_fail_send_event);
|
||||||
|
Reference in New Issue
Block a user