qcacld-3.0: Populate ML assoc req with EMLSR padding delay
Add support to populate MLO assoc request with EMLSR subfields like EMLSR padding delay, transition delay that are extracted from FW during ext service ready event. Change-Id: Id5def8da6bef92ff6bf2101a7b3e0d8fb0cf3050 CRs-Fixed: 3262939
This commit is contained in:

zatwierdzone przez
Madan Koyyalamudi

rodzic
5baae56d1b
commit
3814ee407b
@@ -1438,6 +1438,7 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
|
||||
struct target_psoc_info *tgt_hdl)
|
||||
{
|
||||
struct wlan_psoc_host_mac_phy_caps *tmp;
|
||||
struct wlan_psoc_host_mac_phy_caps_ext2 *cap;
|
||||
uint32_t i, j = 0;
|
||||
enum wmi_hw_mode_config_type hw_config_type;
|
||||
uint32_t dbs_mode, sbs_mode;
|
||||
@@ -1529,7 +1530,10 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
|
||||
/* eMLSR mode */
|
||||
if (WMI_BECAP_PHY_GET_HW_MODE_CFG(hw_config_type) ==
|
||||
WMI_HW_MODE_EMLSR) {
|
||||
hw_config_type = WMI_HW_MODE_EMLSR;
|
||||
tmp = &info->mac_phy_cap[j++];
|
||||
cap = &info->mac_phy_caps_ext2[i];
|
||||
wlan_mlme_set_eml_params(psoc, cap);
|
||||
policy_mgr_get_hw_mode_params(tmp, &mac1_ss_bw_info);
|
||||
policy_mgr_update_mac_freq_info(psoc, pm_ctx,
|
||||
hw_config_type,
|
||||
|
@@ -2360,6 +2360,29 @@ wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value);
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value);
|
||||
|
||||
/**
|
||||
* wlan_mlme_set_eml_params() - Set EML subfields in psoc mlme obj that
|
||||
* are received from FW
|
||||
* @psoc: psoc context
|
||||
* @cap: psoc mac/phy capability ptr
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void
|
||||
wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_psoc_host_mac_phy_caps_ext2 *cap);
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_eml_params() - Get EML subfields from psoc mlme obj
|
||||
* @psoc: psoc context
|
||||
* @cap: EML capability subfield ptr
|
||||
*
|
||||
* Return: none
|
||||
*/
|
||||
void
|
||||
wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlo_eml_cap *cap);
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
wlan_mlme_get_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||
@@ -2373,6 +2396,18 @@ wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static inline void
|
||||
wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_psoc_host_mac_phy_caps_ext2 *cap)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void
|
||||
wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlo_eml_cap *cap)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
@@ -1556,6 +1556,26 @@ struct wlan_mlme_obss_ht40 {
|
||||
bool bss_color_collision_det_sta;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct wlan_mlme_eml_cap - EML capabilities of MLD
|
||||
* @emlsr_supp: eMLSR Support
|
||||
* @emlsr_pad_delay: eMLSR Padding Delay
|
||||
* @emlsr_trans_delay: eMLSR transition delay
|
||||
* @emlmr_supp: eMLMR Support
|
||||
* @emlmr_delay: eMLMR Delay
|
||||
* @trans_timeout: Transition Timeout
|
||||
* @reserved: Reserved
|
||||
*/
|
||||
struct wlan_mlme_eml_cap {
|
||||
uint16_t emlsr_supp:1,
|
||||
emlsr_pad_delay:3,
|
||||
emlsr_trans_delay:3,
|
||||
emlmr_supp:1,
|
||||
emlmr_delay:3,
|
||||
trans_timeout:4,
|
||||
reserved:1;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dot11p_mode - The 802.11p mode of operation
|
||||
* @WLAN_HDD_11P_DISABLED: 802.11p mode is disabled
|
||||
@@ -2619,6 +2639,7 @@ struct wlan_mlme_iot {
|
||||
* @iot: IOT related CFG items
|
||||
* @connection_roaming_ini_flag: To indicate whether connection_roaming related
|
||||
* ini file is present or not.
|
||||
* @eml_cap: EML capability subfield present in ML IE common info
|
||||
*/
|
||||
struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_chainmask chainmask_cfg;
|
||||
@@ -2668,6 +2689,7 @@ struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_ratemask ratemask_cfg;
|
||||
struct wlan_mlme_iot iot;
|
||||
bool connection_roaming_ini_flag;
|
||||
struct wlan_mlme_eml_cap eml_cap;
|
||||
};
|
||||
|
||||
enum pkt_origin {
|
||||
|
@@ -3205,6 +3205,45 @@ wlan_mlme_set_emlsr_mode_enabled(struct wlan_objmgr_psoc *psoc, bool value)
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void
|
||||
wlan_mlme_set_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_psoc_host_mac_phy_caps_ext2 *cap)
|
||||
{
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||
|
||||
if (!cap->emlcap.emlsr_supp) {
|
||||
mlme_legacy_debug("No EMLSR supp: %d", cap->emlcap.emlsr_supp);
|
||||
return;
|
||||
}
|
||||
|
||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
if (!mlme_obj) {
|
||||
mlme_legacy_err("No psoc object");
|
||||
return;
|
||||
}
|
||||
mlme_obj->cfg.eml_cap.emlsr_supp = cap->emlcap.emlsr_supp;
|
||||
mlme_obj->cfg.eml_cap.emlsr_pad_delay = cap->emlcap.emlsr_pad_delay;
|
||||
mlme_obj->cfg.eml_cap.emlsr_trans_delay = cap->emlcap.emlsr_trans_delay;
|
||||
mlme_obj->cfg.eml_cap.emlmr_supp = cap->emlcap.emlmr_supp;
|
||||
}
|
||||
|
||||
void
|
||||
wlan_mlme_get_eml_params(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_mlo_eml_cap *cap)
|
||||
{
|
||||
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||
|
||||
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||
if (!mlme_obj) {
|
||||
mlme_legacy_err("No psoc object");
|
||||
return;
|
||||
}
|
||||
cap->emlsr_supp = mlme_obj->cfg.eml_cap.emlsr_supp;
|
||||
cap->emlsr_pad_delay = mlme_obj->cfg.eml_cap.emlsr_pad_delay;
|
||||
cap->emlsr_trans_delay = mlme_obj->cfg.eml_cap.emlsr_trans_delay;
|
||||
cap->emlmr_supp = mlme_obj->cfg.eml_cap.emlmr_supp;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS
|
||||
|
Reference in New Issue
Block a user