diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index e85d2481edc9..5feb474f7d92 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1095,6 +1095,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_disconnect_event_fixed_param, WMITLV_TAG_STRUC_wmi_roam_btm_response_info_tlv_param, WMITLV_TAG_STRUC_wmi_roam_initial_info_tlv_param, + WMITLV_TAG_STRUC_wmi_pdev_twt_session_stats_event_fixed_param, + WMITLV_TAG_STRUC_wmi_twt_session_stats_info, } WMITLV_TAG_ID; /* @@ -1798,6 +1800,7 @@ typedef enum { OP(WMI_VDEV_BCN_LATENCY_EVENTID) \ OP(WMI_AUDIO_AGGR_SCHED_METHOD_EVENTID) \ OP(WMI_VDEV_DISCONNECT_EVENTID) \ + OP(WMI_TWT_SESSION_STATS_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -6025,6 +6028,13 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_GET_TPC_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_bcn_latency_fixed_param, wmi_vdev_bcn_latency_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_BCN_LATENCY_EVENTID); +/* TWT Stats session event */ +#define WMITLV_TABLE_WMI_TWT_SESSION_STATS_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_twt_session_stats_event_fixed_param, wmi_pdev_twt_session_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_twt_session_stats_info, twt_sessions, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_TWT_SESSION_STATS_EVENTID); + + #ifdef __cplusplus } #endif diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index dba951717131..d100fae80d47 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1991,6 +1991,7 @@ typedef enum { WMI_TWT_RESUME_DIALOG_COMPLETE_EVENTID, WMI_TWT_BTWT_INVITE_STA_COMPLETE_EVENTID, WMI_TWT_BTWT_REMOVE_STA_COMPLETE_EVENTID, + WMI_TWT_SESSION_STATS_EVENTID, /** Events in Prototyping phase */ WMI_NDI_CAP_RSP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_PROTOTYPE), @@ -31216,6 +31217,56 @@ typedef struct { */ } wmi_simulation_test_cmd_fixed_param; +#define WMI_TWT_SESSION_FLAG_FLOW_ID_GET(_var) WMI_GET_BITS(_var, 0, 16) +#define WMI_TWT_SESSION_FLAG_FLOW_ID_SET(_var, _val) WMI_SET_BITS(_var, 0, 16, _val) + +#define WMI_TWT_SESSION_FLAG_BCAST_TWT_GET(_var) WMI_GET_BITS(_var, 16, 1) +#define WMI_TWT_SESSION_FLAG_BCAST_TWT_SET(_var, _val) WMI_SET_BITS(_var, 16, 1, _val) + +#define WMI_TWT_SESSION_FLAG_TRIGGER_TWT_GET(_var) WMI_GET_BITS(_var, 17, 1) +#define WMI_TWT_SESSION_FLAG_TRIGGER_TWT_SET(_var, _val) WMI_SET_BITS(_var, 17, 1, _val) + +#define WMI_TWT_SESSION_FLAG_ANNOUN_TWT_GET(_var) WMI_GET_BITS(_var, 18, 1) +#define WMI_TWT_SESSION_FLAG_ANNOUN_TWT_SET(_var, _val) WMI_SET_BITS(_var, 18, 1, _val) + +typedef struct { + /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_twt_session_stats_info */ + A_UINT32 tlv_hdr; + + A_UINT32 vdev_id; + wmi_mac_addr peer_mac; + A_UINT32 event_type; /* event type - defined in enum wmi_twt_session_stats_type */ + /* + * Flags to provide information on TWT session and session types. + * This field is filled with the bitwise combination of the flag values + * defined by WMI_TWT_SESSION_FLAG_xxx + */ + A_UINT32 flow_id_flags; + A_UINT32 dialog_id; + A_UINT32 wake_dura_us; + A_UINT32 wake_intvl_us; + /* this long time after TWT resumed the 1st Service Period will start */ + A_UINT32 sp_offset_us; +} wmi_twt_session_stats_info; + +enum wmi_twt_session_stats_type { + WMI_TWT_SESSION_SETUP = 1, + WMI_TWT_SESSION_TEARDOWN = 2, + WMI_TWT_SESSION_UPDATE = 3, +}; + +typedef struct { + /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_pdev_twt_session_stats_event_fixed_param */ + A_UINT32 tlv_header; + + A_UINT32 pdev_id; /* ID of the pdev this response belongs to */ + + /* The TLVs follows this structure: + * wmi_twt_session_stats_info twt_sessions[]; <--- Array of twt_session. + */ +} wmi_pdev_twt_session_stats_event_fixed_param; + /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 9a6abc678abc..419d60eecb22 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -36,7 +36,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_ 855 +#define __WMI_REVISION_ 856 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work