qcacld-3.0: Add support for new config item ConDTIMSkipping_MaxTime
With this change add support for new ini ConDTIMSkipping_MaxTime to set max modulated DTIM in ms. Change-Id: I89ce2b5074ce75a1701365b5d09d8ed0244aeeef CRs-Fixed: 3038346
This commit is contained in:

committed by
Madan Koyyalamudi

parent
4207d35164
commit
aa31fd94c1
@@ -1703,6 +1703,9 @@ static void mlme_init_sta_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
sta->allow_tpc_from_ap = cfg_get(psoc, CFG_TX_POWER_CTRL);
|
sta->allow_tpc_from_ap = cfg_get(psoc, CFG_TX_POWER_CTRL);
|
||||||
sta->sta_keepalive_method =
|
sta->sta_keepalive_method =
|
||||||
cfg_get(psoc, CFG_STA_KEEPALIVE_METHOD);
|
cfg_get(psoc, CFG_STA_KEEPALIVE_METHOD);
|
||||||
|
sta->max_li_modulated_dtim_time_ms =
|
||||||
|
cfg_get(psoc, CFG_MAX_LI_MODULATED_DTIM_MS);
|
||||||
|
|
||||||
mlme_init_sta_mlo_cfg(psoc, sta);
|
mlme_init_sta_mlo_cfg(psoc, sta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -512,6 +512,30 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"Max modulated dtim")
|
"Max modulated dtim")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 2000
|
||||||
|
* @Default: 500
|
||||||
|
*
|
||||||
|
* This ini is used to set default ConDTIMSkipping_MaxTime in ms
|
||||||
|
*
|
||||||
|
* Related: None
|
||||||
|
*
|
||||||
|
* Supported Feature: STA
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_MAX_LI_MODULATED_DTIM_MS CFG_INI_UINT( \
|
||||||
|
"ConDTIMSkipping_MaxTime", \
|
||||||
|
0, \
|
||||||
|
2000, \
|
||||||
|
500, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"DTIM skipping max time")
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_11BE_MLO
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
/*
|
/*
|
||||||
* <cfg>
|
* <cfg>
|
||||||
@@ -560,6 +584,7 @@
|
|||||||
CFG(CFG_WT_CNF_TIMEOUT) \
|
CFG(CFG_WT_CNF_TIMEOUT) \
|
||||||
CFG(CFG_CURRENT_RSSI) \
|
CFG(CFG_CURRENT_RSSI) \
|
||||||
CFG(CFG_TX_POWER_CTRL) \
|
CFG(CFG_TX_POWER_CTRL) \
|
||||||
CFG_SINGLE_LINK_MLO_CONN_CFG
|
CFG_SINGLE_LINK_MLO_CONN_CFG \
|
||||||
|
CFG(CFG_MAX_LI_MODULATED_DTIM_MS)
|
||||||
|
|
||||||
#endif /* CFG_MLME_STA_H__ */
|
#endif /* CFG_MLME_STA_H__ */
|
||||||
|
@@ -2301,6 +2301,18 @@ QDF_STATUS
|
|||||||
wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
|
||||||
uint32_t *value);
|
uint32_t *value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_max_modulated_dtim_ms() - get the max modulated dtim in ms
|
||||||
|
* restart
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @value: Value that needs to be set from the caller
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_max_modulated_dtim_ms(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint16_t *value);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* wlan_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
|
* wlan_mlme_get_scan_probe_unicast_ra() - Get scan probe unicast RA cfg
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -1643,6 +1643,7 @@ enum station_prefer_bw {
|
|||||||
* @usr_disabled_roaming: User config for roaming disable
|
* @usr_disabled_roaming: User config for roaming disable
|
||||||
* @usr_scan_probe_unicast_ra: User config unicast probe req in scan
|
* @usr_scan_probe_unicast_ra: User config unicast probe req in scan
|
||||||
* @single_link_mlo_conn: Single link mlo connection is configured
|
* @single_link_mlo_conn: Single link mlo connection is configured
|
||||||
|
* @max_li_modulated_dtim_time_ms: Max modulated DTIM time in ms.
|
||||||
*/
|
*/
|
||||||
struct wlan_mlme_sta_cfg {
|
struct wlan_mlme_sta_cfg {
|
||||||
uint32_t sta_keep_alive_period;
|
uint32_t sta_keep_alive_period;
|
||||||
@@ -1672,6 +1673,7 @@ struct wlan_mlme_sta_cfg {
|
|||||||
#ifdef WLAN_FEATURE_11BE_MLO
|
#ifdef WLAN_FEATURE_11BE_MLO
|
||||||
bool single_link_mlo_conn;
|
bool single_link_mlo_conn;
|
||||||
#endif
|
#endif
|
||||||
|
uint16_t max_li_modulated_dtim_time_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -3677,6 +3677,22 @@ ucfg_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_get_sta_miracast_mcc_rest_time(psoc, value);
|
return wlan_mlme_get_sta_miracast_mcc_rest_time(psoc, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_max_modulated_dtim_ms() - get sap max modulated dtim
|
||||||
|
* @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_max_modulated_dtim_ms(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint16_t *value)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_max_modulated_dtim_ms(psoc, value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided
|
* ucfg_mlme_get_sap_mcc_chnl_avoid() - Check if SAP MCC needs to be avoided
|
||||||
*
|
*
|
||||||
|
@@ -2731,6 +2731,21 @@ wlan_mlme_get_sta_miracast_mcc_rest_time(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
wlan_mlme_get_max_modulated_dtim_ms(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint16_t *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.sta.max_li_modulated_dtim_time_ms;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
|
wlan_mlme_get_scan_probe_unicast_ra(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *value)
|
bool *value)
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
||||||
|
* Copyright (c) 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
|
||||||
@@ -50,6 +51,7 @@ enum cfg_sub_20_channel_width {
|
|||||||
* @max_station: Max station supported
|
* @max_station: Max station supported
|
||||||
* @max_bssid: Max Bssid Supported
|
* @max_bssid: Max Bssid Supported
|
||||||
* @sta_maxlimod_dtim: station max listen interval
|
* @sta_maxlimod_dtim: station max listen interval
|
||||||
|
* @sta_maxlimod_dtim_ms: station max listen interval ms
|
||||||
* @driver_type: Enumeration of Driver Type whether FTM or Mission mode
|
* @driver_type: Enumeration of Driver Type whether FTM or Mission mode
|
||||||
* currently rest of bits are not used
|
* currently rest of bits are not used
|
||||||
* Indicates whether support is enabled or not
|
* Indicates whether support is enabled or not
|
||||||
@@ -80,6 +82,7 @@ struct cds_config_info {
|
|||||||
uint16_t max_station;
|
uint16_t max_station;
|
||||||
uint16_t max_bssid;
|
uint16_t max_bssid;
|
||||||
uint8_t sta_maxlimod_dtim;
|
uint8_t sta_maxlimod_dtim;
|
||||||
|
uint16_t sta_maxlimod_dtim_ms;
|
||||||
enum qdf_driver_type driver_type;
|
enum qdf_driver_type driver_type;
|
||||||
uint8_t ap_maxoffload_peers;
|
uint8_t ap_maxoffload_peers;
|
||||||
uint8_t ap_maxoffload_reorderbuffs;
|
uint8_t ap_maxoffload_reorderbuffs;
|
||||||
|
@@ -13822,6 +13822,9 @@ static int hdd_update_cds_config(struct hdd_context *hdd_ctx)
|
|||||||
ucfg_mlme_get_sap_max_modulated_dtim(hdd_ctx->psoc,
|
ucfg_mlme_get_sap_max_modulated_dtim(hdd_ctx->psoc,
|
||||||
&cds_cfg->sta_maxlimod_dtim);
|
&cds_cfg->sta_maxlimod_dtim);
|
||||||
|
|
||||||
|
ucfg_mlme_get_max_modulated_dtim_ms(hdd_ctx->psoc,
|
||||||
|
&cds_cfg->sta_maxlimod_dtim_ms);
|
||||||
|
|
||||||
status = ucfg_mlme_get_crash_inject(hdd_ctx->psoc, &crash_inject);
|
status = ucfg_mlme_get_crash_inject(hdd_ctx->psoc, &crash_inject);
|
||||||
if (QDF_IS_STATUS_ERROR(status)) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
hdd_err("Failed to get crash inject ini config");
|
hdd_err("Failed to get crash inject ini config");
|
||||||
@@ -19453,7 +19456,6 @@ static int hdd_update_pmo_config(struct hdd_context *hdd_ctx)
|
|||||||
ucfg_mlme_get_sap_max_modulated_dtim(hdd_ctx->psoc,
|
ucfg_mlme_get_sap_max_modulated_dtim(hdd_ctx->psoc,
|
||||||
&psoc_cfg.sta_max_li_mod_dtim);
|
&psoc_cfg.sta_max_li_mod_dtim);
|
||||||
|
|
||||||
|
|
||||||
hdd_lpass_populate_pmo_config(&psoc_cfg, hdd_ctx);
|
hdd_lpass_populate_pmo_config(&psoc_cfg, hdd_ctx);
|
||||||
|
|
||||||
status = ucfg_pmo_update_psoc_config(hdd_ctx->psoc, &psoc_cfg);
|
status = ucfg_pmo_update_psoc_config(hdd_ctx->psoc, &psoc_cfg);
|
||||||
|
@@ -852,6 +852,7 @@ struct wma_wlm_stats_data {
|
|||||||
* @RArateLimitInterval: RA rate limit interval
|
* @RArateLimitInterval: RA rate limit interval
|
||||||
* @is_lpass_enabled: Flag to indicate if LPASS feature is enabled or not
|
* @is_lpass_enabled: Flag to indicate if LPASS feature is enabled or not
|
||||||
* @staMaxLIModDtim: station max listen interval
|
* @staMaxLIModDtim: station max listen interval
|
||||||
|
* @sta_max_li_mod_dtim_ms: station max listen interval in ms
|
||||||
* @staModDtim: station mode DTIM
|
* @staModDtim: station mode DTIM
|
||||||
* @staDynamicDtim: station dynamic DTIM
|
* @staDynamicDtim: station dynamic DTIM
|
||||||
* @hw_bd_id: hardware board id
|
* @hw_bd_id: hardware board id
|
||||||
@@ -975,6 +976,7 @@ typedef struct {
|
|||||||
bool is_lpass_enabled;
|
bool is_lpass_enabled;
|
||||||
#endif
|
#endif
|
||||||
uint8_t staMaxLIModDtim;
|
uint8_t staMaxLIModDtim;
|
||||||
|
uint16_t sta_max_li_mod_dtim_ms;
|
||||||
uint8_t staModDtim;
|
uint8_t staModDtim;
|
||||||
uint8_t staDynamicDtim;
|
uint8_t staDynamicDtim;
|
||||||
uint32_t hw_bd_id;
|
uint32_t hw_bd_id;
|
||||||
|
@@ -4990,6 +4990,7 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
|
|||||||
wmi_service_listen_interval_offload_support)) {
|
wmi_service_listen_interval_offload_support)) {
|
||||||
struct wlan_objmgr_vdev *vdev;
|
struct wlan_objmgr_vdev *vdev;
|
||||||
uint32_t moddtim;
|
uint32_t moddtim;
|
||||||
|
bool is_connection_roaming_cfg_set = 0;
|
||||||
|
|
||||||
wma_debug("listen interval offload enabled, setting params");
|
wma_debug("listen interval offload enabled, setting params");
|
||||||
status = wma_vdev_set_param(wma->wmi_handle,
|
status = wma_vdev_set_param(wma->wmi_handle,
|
||||||
@@ -5000,6 +5001,21 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
|
|||||||
wma_err("can't set MAX_LI for session: %d",
|
wma_err("can't set MAX_LI for session: %d",
|
||||||
params->smesessionId);
|
params->smesessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ucfg_mlme_get_connection_roaming_ini_present(
|
||||||
|
wma->psoc,
|
||||||
|
&is_connection_roaming_cfg_set);
|
||||||
|
if (is_connection_roaming_cfg_set) {
|
||||||
|
status = wma_vdev_set_param(
|
||||||
|
wma->wmi_handle,
|
||||||
|
params->smesessionId,
|
||||||
|
WMI_VDEV_PARAM_MAX_LI_OF_MODDTIM_MS,
|
||||||
|
wma->sta_max_li_mod_dtim_ms);
|
||||||
|
if (status != QDF_STATUS_SUCCESS)
|
||||||
|
wma_err("can't set MAX_LI_MS for session: %d",
|
||||||
|
params->smesessionId);
|
||||||
|
}
|
||||||
|
|
||||||
status = wma_vdev_set_param(wma->wmi_handle,
|
status = wma_vdev_set_param(wma->wmi_handle,
|
||||||
params->smesessionId,
|
params->smesessionId,
|
||||||
WMI_VDEV_PARAM_DYNDTIM_CNT,
|
WMI_VDEV_PARAM_DYNDTIM_CNT,
|
||||||
|
@@ -3439,6 +3439,7 @@ QDF_STATUS wma_open(struct wlan_objmgr_psoc *psoc,
|
|||||||
wma_handle->powersave_mode =
|
wma_handle->powersave_mode =
|
||||||
ucfg_pmo_power_save_offload_enabled(wma_handle->psoc);
|
ucfg_pmo_power_save_offload_enabled(wma_handle->psoc);
|
||||||
wma_handle->staMaxLIModDtim = cds_cfg->sta_maxlimod_dtim;
|
wma_handle->staMaxLIModDtim = cds_cfg->sta_maxlimod_dtim;
|
||||||
|
wma_handle->sta_max_li_mod_dtim_ms = cds_cfg->sta_maxlimod_dtim_ms;
|
||||||
wma_handle->staModDtim = ucfg_pmo_get_sta_mod_dtim(wma_handle->psoc);
|
wma_handle->staModDtim = ucfg_pmo_get_sta_mod_dtim(wma_handle->psoc);
|
||||||
wma_handle->staDynamicDtim =
|
wma_handle->staDynamicDtim =
|
||||||
ucfg_pmo_get_sta_dynamic_dtim(wma_handle->psoc);
|
ucfg_pmo_get_sta_dynamic_dtim(wma_handle->psoc);
|
||||||
|
Reference in New Issue
Block a user