From 3fc46d579dcd8d7f826e4811cb4eb05d2113abfe Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 1 Sep 2023 06:04:23 -0700 Subject: [PATCH] fw-api: CL 24431840 - update fw common interface files WMI: add MLO_LINK_STATE_SWITCH_EVENT msg def Change-Id: I8077896fbe9511c94021c84b0c92dae64d5d93f7 CRs-Fixed: 2262693 --- fw/wmi_tlv_defs.h | 9 +++++++++ fw/wmi_unified.h | 38 ++++++++++++++++++++++++++++++++++++-- fw/wmi_version.h | 2 +- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 10c0d670f3d5..cfe418c9a509 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1401,6 +1401,8 @@ typedef enum { WMITLV_TAG_STRUC_WMI_RADAR_FLAGS, WMITLV_TAG_STRUC_wmi_dma_buf_release_cqi_upload_meta_data, WMITLV_TAG_STRUC_wmi_csa_event_status_ind_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_state_switch_req_evt_fixed_param, + WMITLV_TAG_STRUC_wmi_mlo_link_state_switch_trigger_reason_tlv_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2253,6 +2255,7 @@ typedef enum { OP(WMI_MLO_LINK_SWITCH_REQUEST_EVENTID) \ OP(WMI_NAN_OEM_DATA_EVENTID) \ OP(WMI_PDEV_ENHANCED_AOA_PHASEDELTA_EVENTID) \ + OP(WMI_MLO_LINK_STATE_SWITCH_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -7471,6 +7474,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, aoa_data_buf, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_ENHANCED_AOA_PHASEDELTA_EVENTID); +/* MLO Link State Switch Event */ +#define WMITLV_TABLE_WMI_MLO_LINK_STATE_SWITCH_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mlo_link_state_switch_req_evt_fixed_param, wmi_mlo_link_state_switch_req_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mlo_link_state_switch_trigger_reason, switch_trigger_reason, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_MLO_LINK_STATE_SWITCH_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8246fd4f91e4..4e4c335104e4 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2418,6 +2418,8 @@ typedef enum { WMI_MLO_LINK_SWITCH_REQUEST_EVENTID, /** Response event for WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_CMDID */ WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_EVENTID, + /** WMI Event to spcify reason for link state switch */ + WMI_MLO_LINK_STATE_SWITCH_EVENTID, /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), @@ -46512,10 +46514,42 @@ typedef struct { A_UINT32 tlv_header; A_UINT32 vdev_id; - A_UINT32 status; /*see definition of WMI_LINK_SWITCH_CNF_STATUS*/ - A_UINT32 reason; /*see definition of WMI_LINK_SWITCH_CNF_REASON*/ + A_UINT32 status; /* see definition of WMI_LINK_SWITCH_CNF_STATUS */ + A_UINT32 reason; /* see definition of WMI_LINK_SWITCH_CNF_REASON */ } wmi_mlo_link_switch_cnf_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_state_switch_req_evt_fixed_param */ + A_UINT32 link_state_switch_count; /* Number of link state switch event pending, MAX 5 iteration */ +} wmi_mlo_link_state_switch_req_evt_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_mlo_link_state_switch_trigger_reason_tlv_param */ + A_UINT32 cur_active_ieee_bitmap; /* current active ieee linkbitmap */ + A_UINT32 prev_active_ieee_bitmap; /* previous active iee linkbitmap */ + A_UINT32 host_ref_fw_timestamp_ms; /* fw time stamp on refrence of TIME_STAMP_SYNC_CMD */ + A_UINT32 reason_code; /* reason for link state switch trigger - + * refer to WMI_LINK_STATE_SWITCH_REASON + */ + wmi_mac_addr ml_bssid; /* mac address of mld device */ +} wmi_mlo_link_state_switch_trigger_reason; + +typedef enum _WMI_LINK_STATE_SWITCH_REASON { + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_VDEV_READY = 0, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_ULL_MODE = 1, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_T2LM_ENABLED = 2, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_T2LM_DISABLED = 3, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_FORCE_ENABLED = 4, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_FORCE_DISABLED = 5, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_LINK_QUALITY = 6, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_LINK_CAPACITY = 7, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_RSSI = 8, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_BMISS = 9, + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_BT_STATUS = 10, + + WMI_MLO_PS_LINK_STATE_SWITCH_REASON_MAX, +} WMI_LINK_STATE_SWITCH_REASON; + #define WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_ML_PEER_ID_GET(new_link_info) WMI_GET_BITS(new_link_info, 0, 16) #define WMI_MLO_PRIMARY_LINK_PEER_MIGRATION_ML_PEER_ID_SET(new_link_info, value) WMI_SET_BITS(new_link_info, 0, 16, value) diff --git a/fw/wmi_version.h b/fw/wmi_version.h index a19a38c4172f..4a8da555633e 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 1385 +#define __WMI_REVISION_ 1386 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work