diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 16753f676985..e066b1955614 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -601,6 +601,7 @@ typedef enum { WMI_SERVICE_OBSS_PER_PACKET_SR_SUPPORT = 348, /* Spatial Reuse support for per PPDU setting */ WMI_SERVICE_MULTIPLE_VDEV_RESTART_BITMAP_SUPPORT = 349, /* Extended Multiple VDEV Restart with Bitmap Support */ WMI_SERVICE_WMI_SERVICE_WPA3_SHA384_ROAM_SUPPORT = 350, /* Indicates FW supports WPA3 SHA384 roaming */ + WMI_SERVICE_ODD_LIVEDUMP_SUPPORT = 351, /* Support for ODD Livedump from the FW */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index c5f8a960fb3e..8d6dab6903ad 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1300,6 +1300,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_xgap_enable_complete_event_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_mesh_rx_filter_enable_fixed_param, WMITLV_TAG_STRUC_wmi_wfa_config_ofdma, + WMITLV_TAG_STRUC_wmi_livedump_request_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_livedump_response_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1809,6 +1811,7 @@ typedef enum { OP(WMI_VDEV_PARAM_ENABLE_SR_PROHIBIT_CMDID) \ OP(WMI_XGAP_ENABLE_CMDID) \ OP(WMI_PDEV_MESH_RX_FILTER_ENABLE_CMDID) \ + OP(WMI_ODD_LIVEDUMP_REQUEST_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -2103,6 +2106,7 @@ typedef enum { OP(WMI_IPA_LINK_STATS_EVENTID) \ OP(WMI_PDEV_SCHED_TIDQ_SUSP_INFO_EVENTID) \ OP(WMI_XGAP_ENABLE_COMPLETE_EVENTID) \ + OP(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -5164,6 +5168,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_PARAM_ENABLE_SR_PROHIBIT_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_xgap_enable_cmd_fixed_param, wmi_xgap_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_XGAP_ENABLE_CMDID); +#define WMITLV_TABLE_WMI_ODD_LIVEDUMP_REQUEST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_livedump_request_cmd_fixed_param, wmi_livedump_request_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, odd_livedump_id_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_REQUEST_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -7006,6 +7015,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_HEALTH_MON_INIT_DONE_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_xgap_enable_complete_event_fixed_param, wmi_xgap_enable_complete_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_XGAP_ENABLE_COMPLETE_EVENTID); +/* ODD Livedump */ +#define WMITLV_TABLE_WMI_ODD_LIVEDUMP_RESPONSE_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_livedump_response_event_fixed_param, wmi_livedump_response_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ODD_LIVEDUMP_RESPONSE_EVENTID); + + #ifdef __cplusplus diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 1066e154a234..f5cb9e760d5e 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -314,6 +314,7 @@ typedef enum { WMI_GRP_MLO, /* 0x48 MLO(Multiple Link Operation) management */ WMI_GRP_SAWF, /* 0x49 SAWF (Service Aware WiFi) */ WMI_GRP_QUIET_OFL, /* 0x4a Quiet offloads */ + WMI_GRP_ODD, /* 0x4b ODD */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -1537,6 +1538,9 @@ typedef enum { /** disable a service class */ WMI_SAWF_SVC_CLASS_DISABLE_CMDID, + /* WMI commands specific to ODD */ + WMI_ODD_LIVEDUMP_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), + } WMI_CMD_ID; typedef enum { @@ -2330,6 +2334,9 @@ typedef enum { /* WMI event specific to Quiet handling */ WMI_QUIET_HANDLING_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_QUIET_OFL), + + /* ODD events */ + WMI_ODD_LIVEDUMP_RESPONSE_EVENTID = WMI_CMD_GRP_START_ID(WMI_GRP_ODD), } WMI_EVT_ID; /* defines for OEM message sub-types */ @@ -40076,6 +40083,45 @@ typedef struct { A_UINT32 initial_upload_period_ms; } wmi_health_mon_init_done_fixed_param; +/** ODD **/ + +/* Livedump Data structures */ +#define WMI_ODD_LIVEDUMP_RESP_SET_STATUS(status, val) \ + WMI_SET_BITS(status, 0, 4, val) +#define WMI_ODD_LIVEDUMP_RESP_GET_STATUS(status) \ + WMI_GET_BITS(status, 0, 4) + +typedef enum { + ODD_LIVEDUMP_STATUS_SUCCESS = 0, + ODD_LIVEDUMP_STATUS_FAILURE, + ODD_MAX_LIVEDUMP_STATUS, +} odd_livedump_resp_status; + +typedef struct { + A_UINT32 tlv_header; + A_UINT32 odd_livedump_request_id; + /* Following this structure is the TLV: + * A_UINT32 odd_livedump_id_list[]; <-- array livedump_id list + */ +} wmi_livedump_request_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; + /* odd_livedump_request_id: + * this echoes the request id that was sent in the wmi_livedump_cmd_param + */ + A_UINT32 odd_livedump_request_id; + /* + * 4 LSB's to indicate status of the odd_livedump_request_id processed + * by the FW, the other 28bits to kept for future enhancements. + * The status will be defined in the enum odd_livedump_resp_status + * 0 - SUCCESS + * 1 - FAILURE + * Refer to the WMI_ODD_LIVEDUMP_RESP_SET,_GET_STATUS macros. + */ + A_UINT32 status; +} wmi_livedump_response_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index f3b0cc70c71d..0dd0787878e1 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_ 1218 +#define __WMI_REVISION_ 1219 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work