qcacmn: Add host fixes for 11be eMLSR mode

Add following fixes for STA to support and operate in
eMLSR mode
1) Update and send eMLSR cap flag to FW even in vdev start
request on both links.
2) Copy EML caps to wmi peer assoc mlo params to send it
to FW.

Change-Id: Ic17b9b82809659d7a4392c09eceecae7c53b2049
CRs-Fixed: 3237737
Este commit está contenido en:
Gururaj Pandurangi
2022-07-06 17:27:35 -07:00
cometido por Madan Koyyalamudi
padre f8cd3e0110
commit a57b8d20e4
Se han modificado 4 ficheros con 29 adiciones y 1 borrados

Ver fichero

@@ -325,6 +325,12 @@ vdev_mgr_start_param_update_mlo(struct vdev_mlme_obj *mlme_obj,
!wlan_vdev_mlme_is_mlo_link_vdev(vdev))
param->mlo_flags.mlo_assoc_link = 1;
if ((wlan_vdev_mlme_get_opmode(vdev) == QDF_STA_MODE) &&
wlan_vdev_mlme_cap_get(vdev, WLAN_VDEV_C_EMLSR_CAP)) {
param->mlo_flags.emlsr_support = 1;
mlme_debug("eMLSR support=%d", param->mlo_flags.emlsr_support);
}
if (wlan_vdev_mlme_get_opmode(vdev) == QDF_SAP_MODE) {
vdev_mgr_start_param_update_mlo_mcast(vdev, param);
vdev_mgr_start_param_update_mlo_partner(vdev, param);

Ver fichero

@@ -566,12 +566,14 @@ struct vdev_scan_nac_rssi_params {
* @mlo_assoc_link: indicate is the link used to initialize
* the association of mlo connection
* @mlo_mcast_vdev: MLO cast vdev
* @emlsr_support: indicate non AP MLD STA supports eMLSR mode
*/
struct mlo_vdev_start_flags {
uint32_t mlo_enabled:1,
mlo_assoc_link:1,
mlo_mcast_vdev:1,
rsvd:29;
emlsr_support:1,
rsvd:28;
};
/**

Ver fichero

@@ -543,6 +543,16 @@ struct wlan_mlo_peer_t2lm_policy {
};
#endif /* WLAN_FEATURE_11BE */
/**
* struct wlan_mlo_peer_eml_caps - peer EML capabilities
* @emlsr_support: eMLSR Support
* @transition_timeout: Transition Timeout
*/
struct wlan_mlo_peer_eml_caps {
bool emlsr_support;
uint16_t transition_timeout;
};
/*
* struct wlan_mlo_peer_context - MLO peer context
*
@@ -593,6 +603,7 @@ struct wlan_mlo_peer_context {
#ifdef WLAN_FEATURE_11BE
struct wlan_mlo_peer_t2lm_policy t2lm_policy;
#endif
struct wlan_mlo_peer_eml_caps eml_caps;
};
/*

Ver fichero

@@ -101,6 +101,8 @@ uint8_t *vdev_start_add_mlo_params(uint8_t *buf_ptr,
req->mlo_flags.mlo_enabled);
WMI_MLO_FLAGS_SET_ASSOC_LINK(mlo_params->mlo_flags.mlo_flags,
req->mlo_flags.mlo_assoc_link);
WMI_MLO_FLAGS_SET_EMLSR_SUPPORT(mlo_params->mlo_flags.emlsr_support,
req->mlo_flags.emlsr_support);
vdev_start_add_mlo_mcast_params(&mlo_params->mlo_flags.mlo_flags,
req);
@@ -243,6 +245,9 @@ uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
req->mlo_params.mlo_logical_link_index_valid);
WMI_MLO_FLAGS_SET_PEER_ID_VALID(mlo_params->mlo_flags.mlo_flags,
req->mlo_params.mlo_peer_id_valid);
WMI_MLO_FLAGS_SET_EMLSR_SUPPORT(mlo_params->mlo_flags.emlsr_support,
req->mlo_params.emlsr_support);
mlo_params->mlo_flags.mlo_force_link_inactive =
req->mlo_params.mlo_force_link_inactive;
@@ -251,6 +256,10 @@ uint8_t *peer_assoc_add_mlo_params(uint8_t *buf_ptr,
mlo_params->logical_link_index = req->mlo_params.logical_link_index;
mlo_params->mld_peer_id = req->mlo_params.ml_peer_id;
mlo_params->ieee_link_id = req->mlo_params.ieee_link_id;
mlo_params->emlsr_trans_timeout_us =
req->mlo_params.emlsr_trans_timeout;
return buf_ptr + sizeof(wmi_peer_assoc_mlo_params);
}