From 295f2cd53a3ad6576d308d34e7d1d11e58ee2b35 Mon Sep 17 00:00:00 2001 From: spuligil Date: Fri, 25 Sep 2020 18:02:08 -0700 Subject: [PATCH] fw-api: CL 11731452 - update fw common interface files Change-Id: I564e45fcce93833a171a8e9c4898a52ecf9467bb WMI: host specify QoS NULL frame for tgt to transmit CRs-Fixed: 2262693 --- fw/wmi_services.h | 1 + fw/wmi_tlv_defs.h | 17 +++++++++++++++++ fw/wmi_unified.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ fw/wmi_version.h | 2 +- 4 files changed, 63 insertions(+), 1 deletion(-) diff --git a/fw/wmi_services.h b/fw/wmi_services.h index 1d2161963725..83daad37dd10 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -481,6 +481,7 @@ typedef enum { WMI_SERVICE_UNIFIED_LL_GET_STA_CMD_SUPPORT = 261, /* Indicates that FW supports handling Link Layer and Get Station stats Commands together (WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID) */ WMI_SERVICE_FSE_CMEM_ALLOC_SUPPORT = 262, /* Indicates that FW supports non-secure CMEM allocation for FSE table */ WMI_SERVICE_PASSIVE_SCAN_START_TIME_ENHANCE = 263, /* Indicates FW support to not skip beacon if passive scan dwell time + channel switch delay is lesser than beacon interval */ + WMI_SERVICE_QOS_NULL_FRAME_TX_OVER_WMI = 264, /* Indicates that FW supports tx of QoS null frame downloaded through WMI interface */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 4dad9c72fed9..f93869524033 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1109,6 +1109,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_data_rssi_roaming_param, WMITLV_TAG_STRUC_wmi_request_unified_ll_get_sta_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_sscan_evt_message_fixed_param, + WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_send_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_compl_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1559,6 +1561,7 @@ typedef enum { OP(WMI_AUDIO_AGGR_GET_SCHED_METHOD_CMDID) \ OP(WMI_WFA_CONFIG_CMDID) \ OP(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID) \ + OP(WMI_QOS_NULL_FRAME_TX_SEND_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1816,6 +1819,7 @@ typedef enum { OP(WMI_VDEV_DISCONNECT_EVENTID) \ OP(WMI_TWT_SESSION_STATS_EVENTID) \ OP(WMI_SSCAN_EVT_MESSAGE_EVENTID) \ + OP(WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -2662,6 +2666,14 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_SEND_CMDID); WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_SEND_CMDID); +/* QoS null tx send cmd */ +#define WMITLV_TABLE_WMI_QOS_NULL_FRAME_TX_SEND_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_send_cmd_fixed_param, wmi_qos_null_frame_tx_send_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bufp, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tx_send_params, wmi_tx_send_params, tx_send_params, WMITLV_SIZE_FIX) + +WMITLV_CREATE_PARAM_STRUC(WMI_QOS_NULL_FRAME_TX_SEND_CMDID); + /** PDEV send FILS Discovery frame cmd */ #define WMITLV_TABLE_WMI_PDEV_SEND_FD_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_fd_send_from_host_cmd_fixed_param, wmi_fd_send_from_host_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) @@ -4703,6 +4715,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_mgmt_hdr, mgmt_hdr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_BUNDLE_COMPLETION_EVENTID); +/* QoS null frame TX completion event */ +#define WMITLV_TABLE_WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_compl_event_fixed_param, wmi_qos_null_frame_tx_compl_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID); + /* VDEV Start response Event */ #define WMITLV_TABLE_WMI_VDEV_START_RESP_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_vdev_start_response_event_fixed_param, wmi_vdev_start_response_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 04fe4fe41b46..de00717fd5fc 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -660,6 +660,8 @@ typedef enum { WMI_VDEV_BCN_OFFLOAD_QUIET_CONFIG_CMDID, /** set FILS Discovery frame template for FW to generate FD frames */ WMI_FD_TMPL_CMDID, + /** Transmit QoS null Frame over wmi interface */ + WMI_QOS_NULL_FRAME_TX_SEND_CMDID, /** commands to directly control ba negotiation directly from host. only used in test mode */ @@ -1638,6 +1640,10 @@ typedef enum { * Used only in host beacon mode. */ WMI_HOST_SWBA_V2_EVENTID, + /** Event for QoS null frame TX completion */ + WMI_QOS_NULL_FRAME_TX_COMPLETION_EVENTID, + + /* ADDBA Related WMI Events*/ /** Indication the completion of the prior WMI_PEER_TID_DELBA_CMDID(initiator) */ @@ -5534,6 +5540,22 @@ typedef struct { */ } wmi_offchan_data_tx_send_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_send_cmd_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 desc_id; /* echoed in tx_compl_event */ + A_UINT32 paddr_lo; /* paddr_lo and padd_hi will hold the address of remote/host buffer, which is physical address of frame */ + A_UINT32 paddr_hi; + A_UINT32 frame_len; /* Actual length of frame in bytes*/ + A_UINT32 buf_len; /** Buffer length in bytes, length of data DMA'ed to FW from host */ + +/* This fixed_param TLV is followed by the TLVs listed below: + * 1. ARRAY_BYTE TLV: First buf_len (expected to be 64) bytes of frame + * A_UINT8 bufp[]; + * 2. wmi_tx_send_params tx_send_params; + */ +} wmi_qos_null_frame_tx_send_cmd_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_echo_event_fixed_param */ A_UINT32 value; @@ -7485,6 +7507,27 @@ typedef struct { A_UINT32 ppdu_id; } wmi_offchan_data_tx_compl_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_qos_null_frame_tx_compl_event_fixed_param */ + A_UINT32 desc_id; /* echoed from tx_send_cmd */ + A_UINT32 status; /* same status as WMI_MGMT_TX_COMP_STATUS_TYPE */ + /** pdev_id for identifying the MAC that transmitted the QoS NULL frame + * See macros starting with WMI_PDEV_ID_ for values. + */ + A_UINT32 pdev_id; + /* ppdu_id + * Hardware PPDU ID for tracking the completion stats + * A ppdu_id value of 0x0 is invalid, and should be ignored. + */ + A_UINT32 ppdu_id; + /* ack_rssi + * TX mgmt ack RSSI report to host. + * Only valid when status == COMPLETE_OK and the ACK_RSSI report is enabled + * ack_rssi is reported in dBm. + */ + A_INT32 ack_rssi; +} wmi_qos_null_frame_tx_compl_event_fixed_param; + typedef struct { A_UINT32 tlv_header; A_UINT32 num_reports; @@ -27165,6 +27208,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_SCHED_METHOD_CMDID); WMI_RETURN_STRING(WMI_AUDIO_AGGR_GET_SCHED_METHOD_CMDID); WMI_RETURN_STRING(WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID); + WMI_RETURN_STRING(WMI_QOS_NULL_FRAME_TX_SEND_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 961ca531c76f..5f8287dcfe6e 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_ 901 +#define __WMI_REVISION_ 902 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work