diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 503a722ea4..021a52cb2f 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1117,6 +1117,12 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ctrl_path_mem_stats_struct, WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_twt_nudge_dialog_complete_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_vendor_event_fixed_param, + WMITLV_TAG_STRUC_wmi_pdev_vendor_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_vendor_event_fixed_param, + WMITLV_TAG_STRUC_wmi_vdev_vendor_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_vendor_event_fixed_param, + WMITLV_TAG_STRUC_wmi_peer_vendor_cmd_fixed_param, } WMITLV_TAG_ID; /* diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0190d20c9e..daa1b24c48 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -70,6 +70,11 @@ extern "C" { #include #include +/* + * Include the defs of vendor-specific messages (or possibly dummy defs + * if there are no actual vendor-specific message defs). + */ +#include #define ATH_MAC_LEN 6 /**< length of MAC in bytes */ #define WMI_EVENT_STATUS_SUCCESS 0 /* Success return status to host */ @@ -260,6 +265,7 @@ typedef enum { WMI_GRP_AUDIO, /* 0x43 */ WMI_GRP_CFR_CAPTURE, /* 0x44 */ WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */ + WMI_GRP_VENDOR, /* 0x46 vendor specific group */ } WMI_GRP_ID; #define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1) @@ -1338,6 +1344,12 @@ typedef enum { WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID, /** ATF Peer Extended Request command */ WMI_PEER_ATF_EXT_REQUEST_CMDID, + + /** Vendor Defined WMI commands **/ + WMI_VENDOR_PDEV_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_VENDOR), + WMI_VENDOR_VDEV_CMDID, + WMI_VENDOR_PEER_CMDID, + /** Further vendor cmd IDs can be added below **/ } WMI_CMD_ID; typedef enum { @@ -2036,6 +2048,11 @@ typedef enum { WMI_AUDIO_AGGR_REPORT_STATISTICS_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_AUDIO), WMI_AUDIO_AGGR_SCHED_METHOD_EVENTID, + /** Vendor defined WMI events **/ + WMI_VENDOR_PDEV_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_VENDOR), + WMI_VENDOR_VDEV_EVENTID, + WMI_VENDOR_PEER_EVENTID, + /** Further vendor event IDs can be added below **/ } WMI_EVT_ID; /* defines for OEM message sub-types */ @@ -32335,6 +32352,119 @@ typedef struct { */ } wmi_pdev_twt_session_stats_event_fixed_param; +typedef struct wmi_pdev_vendor_event +{ + /* type is WMI_PDEV_VENDOR_EVENTID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_pdev_vendor_event_val evt; + /* NOTE: + * Future changes may increase the size of pdev_vendor_event. + * Consequently, no fields can be added here after pdev_vendor_event, + * because their offsets within wmi_pdev_vendor_event_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_pdev_vendor_event_fixed_param; + +typedef struct wmi_vdev_vendor_event +{ + /* type is WMI_VDEV_VENDOR_EVENTID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_vdev_vendor_event_val evt; + /* NOTE: + * Future changes may increase the size of vdev_vendor_event. + * Consequently, no fields can be added here after vdev_vendor_event, + * because their offsets within wmi_vdev_vendor_event_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_vdev_vendor_event_fixed_param; + +typedef struct wmi_peer_vendor_event +{ + /* type is WMI_PEER_VENDOR_EVENTID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* peer MAC address */ + wmi_mac_addr peer_macaddr; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_peer_vendor_event_val evt; + /* NOTE: + * Future changes may increase the size of peer_vendor_event. + * Consequently, no fields can be added here after peer_vendor_event, + * because their offsets within wmi_peer_vendor_event_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_peer_vendor_event_fixed_param; + +typedef struct wmi_pdev_vendor_cmd +{ + /* type is WMI_PDEV_VENDOR_CMDID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_pdev_vendor_cmd_val cmd; + /* NOTE: + * Future changes may increase the size of pdev_vendor_cmd. + * Consequently, no fields can be added here after pdev_vendor_cmd, + * because their offsets within wmi_pdev_vendor_cmd_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_pdev_vendor_cmd_fixed_param; + +typedef struct wmi_vdev_vendor_cmd +{ + /* type is WMI_VDEV_VENDOR_CMDID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_vdev_vendor_cmd_val cmd; + /* NOTE: + * Future changes may increase the size of vdev_vendor_cmd. + * Consequently, no fields can be added here after vdev_vendor_cmd, + * because their offsets within wmi_vdev_vendor_cmd_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_vdev_vendor_cmd_fixed_param; + +typedef struct wmi_peer_vendor_cmd +{ + /* type is WMI_PEER_VENDOR_CMDID */ + A_UINT32 tlv_header; + /* pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. */ + A_UINT32 pdev_id; + /* unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /* peer MAC address */ + wmi_mac_addr peer_macaddr; + /* Any vendor specialization cases will need to add sub_type enum defs. */ + A_UINT32 sub_type; + wmi_peer_vendor_cmd_val cmd; + /* NOTE: + * Future changes may increase the size of peer_vendor_cmd. + * Consequently, no fields can be added here after peer_vendor_cmd, + * because their offsets within wmi_peer_vendor_cmd_fixed_param + * would change, causing backwards incompatibilities. + */ +} wmi_peer_vendor_cmd_fixed_param; /* ADD NEW DEFS HERE */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 6cec6ec74d..92820be5d6 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_ 912 +#define __WMI_REVISION_ 913 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work