qcacmn: Registration function for link disablement

This change is to allow other modules to register for
link disablement.
It includes below functions:
1- Notify link update
2- Register to handler to get link update notification
3- Unregister T2LM handlers

Added the below changes as well,
- Move T2LM related data structures to wlan_mlo_t2lm.h file
- Host receives the expected duration from FW for multiple vdevs.
  Hence, add support to extract the expected duration for multiple vdevs.

Change-Id: Ie8e77d5d3b4351a8551ecd7da50786b58dad3b2e
CRs-Fixed: 3346432
This commit is contained in:
Nidhi Jain
2022-12-13 10:22:39 +05:30
gecommit door Madan Koyyalamudi
bovenliggende 07bee8ee4e
commit 800dddec55
9 gewijzigde bestanden met toevoegingen van 418 en 257 verwijderingen

Bestand weergeven

@@ -171,7 +171,7 @@ QDF_STATUS
wmi_extract_mlo_vdev_bcast_tid_to_link_map_event(
wmi_unified_t wmi,
void *evt_buf,
struct wmi_host_bcast_t2lm_info *bcast);
struct mlo_bcast_t2lm_info *bcast);
#endif /* WLAN_FEATURE_11BE */
#endif /*_WMI_UNIFIED_11BE_API_H_*/

Bestand weergeven

@@ -1153,16 +1153,6 @@ struct wmi_host_tid_to_link_map_resp {
enum wlan_t2lm_status status;
uint8_t mapping_switch_tsf;
};
/**
* struct wmi_host_bcast_t2lm_info - TID-to-link mapping broadcast info
* @vdev_id: Vdev id
* @expected_duration: Expected duration for vdev t2lm ie
*/
struct wmi_host_bcast_t2lm_info {
uint8_t vdev_id;
uint32_t expected_duration;
};
#endif /* WLAN_FEATURE_11BE */
#ifdef WLAN_FEATURE_11BE_MLO

Bestand weergeven

@@ -3127,7 +3127,7 @@ QDF_STATUS (*extract_mlo_vdev_tid_to_link_map_event)(
QDF_STATUS (*extract_mlo_vdev_bcast_tid_to_link_map_event)(
struct wmi_unified *wmi_handle,
void *buf,
struct wmi_host_bcast_t2lm_info *bcast_info);
struct mlo_bcast_t2lm_info *bcast_info);
#endif /* WLAN_FEATURE_11BE */
QDF_STATUS

Bestand weergeven

@@ -97,7 +97,7 @@ QDF_STATUS
wmi_extract_mlo_vdev_bcast_tid_to_link_map_event(
wmi_unified_t wmi,
void *evt_buf,
struct wmi_host_bcast_t2lm_info *bcast)
struct mlo_bcast_t2lm_info *bcast)
{
if (wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event) {
return wmi->ops->extract_mlo_vdev_bcast_tid_to_link_map_event(

Bestand weergeven

@@ -1180,10 +1180,11 @@ static QDF_STATUS
extract_mlo_vdev_bcast_tid_to_link_map_event_tlv(
struct wmi_unified *wmi_handle,
void *buf,
struct wmi_host_bcast_t2lm_info *bcast_info)
struct mlo_bcast_t2lm_info *bcast_info)
{
WMI_MGMT_RX_EVENTID_param_tlvs *param_tlvs;
wmi_mlo_bcast_t2lm_info *info;
int i;
param_tlvs = (WMI_MGMT_RX_EVENTID_param_tlvs *)buf;
if (!param_tlvs) {
@@ -1191,19 +1192,32 @@ extract_mlo_vdev_bcast_tid_to_link_map_event_tlv(
return QDF_STATUS_E_INVAL;
}
info = param_tlvs->mlo_bcast_t2lm_info;
if (!info) {
wmi_debug("mgmt_ml_info TLV is not sent by FW");
if (param_tlvs->num_mlo_bcast_t2lm_info > MAX_AP_MLDS_PER_LINK) {
wmi_err("num_mlo_bcast_t2lm_info is greater than %d",
MAX_AP_MLDS_PER_LINK);
return QDF_STATUS_E_INVAL;
}
bcast_info->vdev_id =
WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_GET(
info->vdev_id_expec_dur);
info = param_tlvs->mlo_bcast_t2lm_info;
if (!info) {
wmi_debug("mlo_bcast_t2lm_info is not applicable");
return QDF_STATUS_SUCCESS;
}
bcast_info->expected_duration =
WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_EXP_DUR_GET(
info->vdev_id_expec_dur);
bcast_info->num_vdevs = param_tlvs->num_mlo_bcast_t2lm_info;
wmi_debug("num_vdevs:%d", bcast_info->num_vdevs);
for (i = 0; i < param_tlvs->num_mlo_bcast_t2lm_info; i++) {
bcast_info->vdev_id[i] =
WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_VDEV_ID_GET(
info->vdev_id_expec_dur);
bcast_info->expected_duration[i] =
WMI_MLO_BROADCAST_TID_TO_LINK_MAP_INFO_EXP_DUR_GET(
info->vdev_id_expec_dur);
wmi_debug("vdev_id:%d expected_duration:%d",
bcast_info->vdev_id[i],
bcast_info->expected_duration[i]);
}
return QDF_STATUS_SUCCESS;
}