diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 1301f470eae7..40816c1f6681 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1546,6 +1546,9 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_repurpose_response_tlv_param, WMITLV_TAG_STRUC_wmi_roam_smd_start_status_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_prep_resp_status_list, + WMITLV_TAG_STRUC_wmi_ipa_ring_stats_req_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_ipa_ring_stats_conf_event_fixed_param, + WMITLV_TAG_STRUC_wmi_ipa_ring_stat_entry, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2134,6 +2137,7 @@ typedef enum { OP(WMI_ROAM_SMD_CONFIG_CMDID) \ OP(WMI_ROAM_SMD_START_STATUS_CMDID) \ OP(WMI_VDEV_REPURPOSE_RESP_CMDID) \ + OP(WMI_IPA_RING_STATS_REQ_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2484,6 +2488,7 @@ typedef enum { OP(WMI_CFR_CAPTURE_FILTER_RESP_EVENTID) \ OP(WMI_VDEV_UNIFIED_CONNECT_EVENTID) \ OP(WMI_VDEV_UNIFIED_DISCONNECT_EVENTID) \ + OP(WMI_IPA_RING_STATS_CONF_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6152,6 +6157,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UNIFIED_DISCONNECT_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_vdev_repurpose_response_tlv_param, vdev_repurpose_response_tlv, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_REPURPOSE_RESP_CMDID); +/* Get IPA ring stats */ +#define WMITLV_TABLE_WMI_IPA_RING_STATS_REQ_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ipa_ring_stats_req_cmd_fixed_param, wmi_ipa_ring_stats_req_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_IPA_RING_STATS_REQ_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -8420,6 +8430,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UNIFIED_CONNECT_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_stopped_event_fixed_param, wmi_vdev_stopped_event_fixed_param, vdev_stop_fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_UNIFIED_DISCONNECT_EVENTID); +/* get IPA ring stats event */ +#define WMITLV_TABLE_WMI_IPA_RING_STATS_CONF_EVENTID(id,op,buf,len) \ +WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_ipa_ring_stats_conf_event_fixed_param, wmi_ipa_ring_stats_conf_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ +WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_ipa_ring_stat_entry, ipa_ring_stat_entry, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_IPA_RING_STATS_CONF_EVENTID); + #ifdef __cplusplus diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index c5910df1eb6c..5b740596370e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1577,6 +1577,8 @@ typedef enum { /** IPA Offload features related commands */ WMI_IPA_OFFLOAD_ENABLE_DISABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_IPA), + /** WMI cmd to get IPA ring stats */ + WMI_IPA_RING_STATS_REQ_CMDID, /** mDNS responder offload commands */ WMI_MDNS_OFFLOAD_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_MDNS_OFL), @@ -2602,6 +2604,9 @@ typedef enum { /* mDNS offload events */ WMI_MDNS_STATS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_MDNS_OFL), + /** WMI Event to send IPA ring stats to host */ + WMI_IPA_RING_STATS_CONF_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_IPA), + /* SAP Authentication offload events */ WMI_SAP_OFL_ADD_STA_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SAP_OFL), WMI_SAP_OFL_DEL_STA_EVENTID, @@ -15948,6 +15953,11 @@ typedef struct { * Includes rx_time but not tx_time. */ A_UINT32 cca_time; + /* pending_mpdu_msdus: + * count of the pending mpdu + msdus for all tids within all peers + * for the specified vdev + */ + A_UINT32 pending_mpdu_msdus; } wmi_vdev_extd_stats; /** @@ -40890,6 +40900,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_ROAM_SMD_CONFIG_CMDID); WMI_RETURN_STRING(WMI_ROAM_SMD_START_STATUS_CMDID); WMI_RETURN_STRING(WMI_VDEV_REPURPOSE_RESP_CMDID); + WMI_RETURN_STRING(WMI_IPA_RING_STATS_REQ_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -53367,6 +53378,38 @@ typedef struct { A_UINT32 status; } wmi_wlan_mode_resp_event_fixed_param; +/* Optional version for future expansion */ +typedef enum { + WMI_IPA_RING_STATS_EVENT_VERSION1 = 1, + +} WMI_IPA_RING_STATS_EVENT_VERSIONS; + +typedef struct { + A_UINT32 tlv_header; + /* version: + * For future extensions; currently 1 (WMI_IPA_RING_STATS_EVENT_VERSION1) + * Refer to WMI_IPA_RING_STATS_EVENT_VERSIONS. + */ + A_UINT32 version; + A_UINT32 ring_id; +} wmi_ipa_ring_stats_req_cmd_fixed_param; + +/* Per-ring sample (indices and sizes in entries to keep host parsing simple) */ +typedef struct { + A_UINT32 tlv_header; + A_UINT32 ring_id; /* e.g., HAL ring_id or your own enum */ + A_UINT32 hp_idx; /* head pointer index (entry index) */ + A_UINT32 tp_idx; /* tail pointer index (entry index) */ + A_UINT32 free_entries; /* how many entries free */ + A_UINT32 ring_entries; /* total entries */ +} wmi_ipa_ring_stat_entry; + +/* Event fixed params (TLV-safe layout) */ +typedef struct { + A_UINT32 tlv_header; + A_UINT32 version; /* Refer to WMI_RING_STATS_EVENT_VERSIONS */ +} wmi_ipa_ring_stats_conf_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 5a146e5248a1..a3b7876bbba1 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_ 1690 +#define __WMI_REVISION_ 1691 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work