qcacld-3.0: Add cfg to configure mlo single link connection for sta

Add API to get mlo single link connection configuration for sta.

Change-Id: Ie3b6c270c5c7358321a176c744083175a81d0180
CRs-Fixed: 3171955
This commit is contained in:
Bing Sun
2022-04-12 10:06:14 +08:00
committed by Madan Koyyalamudi
parent 1cebf7f4ac
commit ff3734010c
6 changed files with 102 additions and 1 deletions

View File

@@ -1558,6 +1558,20 @@ mlme_init_product_details_cfg(struct wlan_mlme_product_details_cfg
sizeof(product_details->model_number));
}
#ifdef WLAN_FEATURE_11BE_MLO
static void mlme_init_sta_mlo_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_sta_cfg *sta)
{
sta->single_link_mlo_conn =
cfg_default(CFG_SINGLE_LINK_MLO_CONN);
}
#else
static void mlme_init_sta_mlo_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_sta_cfg *sta)
{
}
#endif
static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_sta_cfg *sta)
{
@@ -1597,6 +1611,7 @@ static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc,
sta->allow_tpc_from_ap = cfg_get(psoc, CFG_TX_POWER_CTRL);
sta->sta_keepalive_method =
cfg_get(psoc, CFG_STA_KEEPALIVE_METHOD);
mlme_init_sta_mlo_cfg(psoc, sta);
}
static void mlme_init_stats_cfg(struct wlan_objmgr_psoc *psoc,

View File

@@ -512,6 +512,34 @@
CFG_VALUE_OR_DEFAULT, \
"Max modulated dtim")
#ifdef WLAN_FEATURE_11BE_MLO
/*
* <cfg>
* single_link_mlo_conn - Set single link mlo connection for sta
* @Min: 0
* @Max: 1
* @Default: 0
*
* This cfg is used to enable single link mlo connection
*
* Related: None
*
* Supported Feature: STA
*
* Usage: Internal
*
* </cfg>
*/
#define CFG_SINGLE_LINK_MLO_CONN CFG_BOOL( \
"single_link_mlo_conn", \
0, \
"Enable single link mlo connection")
#define CFG_SINGLE_LINK_MLO_CONN_CFG CFG(CFG_SINGLE_LINK_MLO_CONN)
#else
#define CFG_SINGLE_LINK_MLO_CONN_CFG
#endif
#define CFG_STA_ALL \
CFG(CFG_INFRA_STA_KEEP_ALIVE_PERIOD) \
CFG(CFG_STA_BSS_MAX_IDLE_PERIOD) \
@@ -531,6 +559,7 @@
CFG(CFG_STA_KEEPALIVE_METHOD) \
CFG(CFG_WT_CNF_TIMEOUT) \
CFG(CFG_CURRENT_RSSI) \
CFG(CFG_TX_POWER_CTRL)
CFG(CFG_TX_POWER_CTRL) \
CFG_SINGLE_LINK_MLO_CONN_CFG
#endif /* CFG_MLME_STA_H__ */

View File

@@ -3339,6 +3339,27 @@ wlan_mlme_is_data_stall_recovery_fw_supported(struct wlan_objmgr_psoc *psoc);
QDF_STATUS mlme_cfg_get_eht_caps(struct wlan_objmgr_psoc *psoc,
tDot11fIEeht_cap *eht_cap);
#ifdef WLAN_FEATURE_11BE_MLO
/**
* wlan_mlme_is_sta_single_mlo_conn() - Is single mlo connection for sta
* set or not
* @psoc: pointer to psoc object
*
* Return: True if single mlo connection for sta is set
*/
bool wlan_mlme_is_sta_single_mlo_conn(struct wlan_objmgr_psoc *psoc);
/**
* wlan_mlme_set_sta_single_mlo_conn() - Set single mlo connection for sta
* @psoc: pointer to psoc object
* @value: value to set
*
* Return: QDF Status
*/
QDF_STATUS wlan_mlme_set_sta_single_mlo_conn(struct wlan_objmgr_psoc *psoc,
bool value);
#endif
/**
* wlan_mlme_set_ba_2k_jump_iot_ap() - Set a flag if ba 2k jump IOT AP is found
* @vdev: vdev pointer

View File

@@ -1639,6 +1639,7 @@ enum station_prefer_bw {
* @allow_tpc_from_ap: Support for AP power constraint
* @usr_disabled_roaming: User config for roaming disable
* @usr_scan_probe_unicast_ra: User config unicast probe req in scan
* @single_link_mlo_conn: Single link mlo connection is configured
*/
struct wlan_mlme_sta_cfg {
uint32_t sta_keep_alive_period;
@@ -1665,6 +1666,9 @@ struct wlan_mlme_sta_cfg {
#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
host_event_wlan_status_payload_type event_payload;
#endif
#ifdef WLAN_FEATURE_11BE_MLO
bool single_link_mlo_conn;
#endif
};
/**

View File

@@ -1036,6 +1036,33 @@ QDF_STATUS mlme_update_tgt_eht_caps_in_cfg(struct wlan_objmgr_psoc *psoc,
}
#endif
#ifdef WLAN_FEATURE_11BE_MLO
bool wlan_mlme_is_sta_single_mlo_conn(struct wlan_objmgr_psoc *psoc)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj)
return false;
return mlme_obj->cfg.sta.single_link_mlo_conn;
}
QDF_STATUS wlan_mlme_set_sta_single_mlo_conn(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;
mlme_obj->cfg.sta.single_link_mlo_conn = value;
return QDF_STATUS_SUCCESS;
}
#endif
QDF_STATUS wlan_mlme_get_num_11b_tx_chains(struct wlan_objmgr_psoc *psoc,
uint16_t *value)
{

View File

@@ -8660,6 +8660,11 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx,
/* find out number of links from bcn or prb rsp */
total_sta_prof = 1;
if (wlan_mlme_is_sta_single_mlo_conn(
wlan_vdev_get_psoc(pe_session->vdev))) {
pe_debug("Single link mlo connection is enabled for mlo sta");
total_sta_prof = 0;
}
partner_info = &pe_session->lim_join_req->partner_info;
mlo_dev_ctx = pe_session->vdev->mlo_dev_ctx;