diff options
| author | spuligil <spuligil@codeaurora.org> | 2019-04-30 18:01:45 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-05-07 18:46:24 -0700 |
| commit | 48f2b9b1da3e4e74d8a9947f5a811a5e8be03daa (patch) | |
| tree | 2e0c30dc699e977d7a364d0e5bd8c8198f96e636 | |
| parent | 700b8b703dcde14999b4b866790e0793641cbebe (diff) | |
fw-api: CL 7040979 - update fw common interface files
Change-Id: Id06d725c59178a7420ec2f82e41f1ac7cfc90957
HTT: extend tx_msdu_desc_ext2; stats: add cookie field in PPDU user_common
CRs-Fixed: 2262693
| -rw-r--r-- | fw/htt.h | 72 | ||||
| -rw-r--r-- | fw/htt_ppdu_stats.h | 128 |
2 files changed, 193 insertions, 7 deletions
@@ -180,9 +180,12 @@ * 3.63 Add HTT_HTT_T2H_MSG_TYPE_BKPRESSURE_EVENT_IND def * 3.64 Add struct htt_tx_compl_ind_append_tx_tsf64 and add tx_tsf64 * array to the end of HTT_T2H TX_COMPL_IND msg + * 3.65 Add fields in htt_tx_msdu_desc_ext2_t to allow the host to provide + * a "cookie" to identify a MSDU, and to specify to not apply aggregation + * for a MSDU. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 64 +#define HTT_CURRENT_VERSION_MINOR 65 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -1660,18 +1663,34 @@ PREPACK struct htt_tx_msdu_desc_ext2_t { /* DWORD 4: tx expiry time (TSF) MSBs */ A_UINT32 expire_tsf_hi; - /* DWORD 5: reserved - * This structure can be expanded further up to 60 bytes - * by adding further DWORDs as needed. - */ + /* DWORD 5: flags to control routing / processing of the MSDU */ A_UINT32 /* learning_frame * When this flag is set, this frame will be dropped by FW * rather than being enqueued to the Transmit Queue Manager (TQM) HW. */ - learning_frame : 1, - rsvd0 : 31; + learning_frame : 1, + /* send_as_standalone + * This will indicate if the msdu needs to be sent as a singleton PPDU, + * i.e. with no A-MSDU or A-MPDU aggregation. + * The scope is extended to other use-cases. + */ + send_as_standalone : 1, + /* is_host_opaque_valid + * Host should set this bit to 1 if the host_opaque_cookie is populated + * with valid information. + */ + is_host_opaque_valid : 1, + rsvd0 : 29; + + /* DWORD 6 : Host opaque cookie for special frames */ + A_UINT32 host_opaque_cookie : 16, /* see is_host_opaque_valid */ + rsvd1 : 16; + /* + * This structure can be expanded further up to 40 bytes + * by adding further DWORDs as needed. + */ } POSTPACK; /* DWORD 0 */ @@ -1739,6 +1758,15 @@ PREPACK struct htt_tx_msdu_desc_ext2_t { /* DWORD 5 */ #define HTT_TX_MSDU_EXT2_DESC_FLAG_LEARNING_FRAME_M 0x00000001 #define HTT_TX_MSDU_EXT2_DESC_FLAG_LEARNING_FRAME_S 0 +#define HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_M 0x00000002 +#define HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_S 1 +#define HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_M 0x00000004 +#define HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_S 2 + +/* DWORD 6 */ +#define HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_M 0x0000FFFF +#define HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_S 0 + /* DWORD 0 */ #define HTT_TX_MSDU_EXT2_DESC_FLAG_VALID_PWR_GET(_var) \ @@ -2010,6 +2038,36 @@ PREPACK struct htt_tx_msdu_desc_ext2_t { ((_var) |= ((_val) << HTT_TX_MSDU_EXT2_DESC_FLAG_LEARNING_FRAME_S)); \ } while (0) +#define HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_GET(_var) \ + (((_var) & HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_M) >> \ + HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_S) + +#define HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE, _val); \ + ((_var) |= ((_val) << HTT_TX_MSDU_EXT2_DESC_FLAG_SEND_AS_STANDALONE_S)); \ + } while (0) + +#define HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_GET(_var) \ + (((_var) & HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_M) >> \ + HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_S) +#define HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID, _val); \ + ((_var) |= ((_val) << HTT_TX_MSDU_EXT2_DESC_FLAG_HOST_OPAQUE_VALID_S)); \ + } while (0) + +/* DWORD 6 */ +#define HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_GET(_var) \ + (((_var) & HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_M) >> \ + HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_S) +#define HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE, _val); \ + ((_var) |= ((_val) << HTT_TX_MSDU_EXT2_DESC_HOST_OPAQUE_COOKIE_S)); \ + } while (0) + + typedef enum { HTT_TCL_METADATA_TYPE_PEER_BASED = 0, HTT_TCL_METADATA_TYPE_VDEV_BASED = 1, diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h index bdb6737c65b2..b3fb65efcdc8 100644 --- a/fw/htt_ppdu_stats.h +++ b/fw/htt_ppdu_stats.h @@ -724,6 +724,36 @@ typedef struct { }; }; + /* + * Data fields containing the physical address info of a MSDU buffer + * as well as the owner and a SW cookie info that can be used by the host + * to look up the virtual address of the MSDU buffer. + * These fields are only valid if is_buffer_addr_info_valid is set to 1. + */ + A_UINT32 buffer_paddr_31_0 : 32; + A_UINT32 buffer_paddr_39_32 : 8, + return_buffer_manager : 3, + sw_buffer_cookie : 21; + + /* + * host_opaque_cookie : Host can send upto 2 bytes of opaque + * cookie in TCL_DATA_CMD and FW will replay this back in + * HTT PPDU stats. Valid only if sent to FW through + * exception mechanism. + * + * is_standalone : This msdu was sent as a single MSDU/MPDU + * PPDU as indicated by host via TCL_DATA_CMD using + * the send_as_standalone bit. + * + * is_buffer_addr_info_valid : This will be set whenever a MSDU is sent as + * a singleton (single-MSDU PPDU) for FW use-cases or as indicated by host + * via send_as_standalone in TCL_DATA_CMD. + */ + A_UINT32 host_opaque_cookie: 16, + is_host_opaque_valid: 1, + is_standalone: 1, + is_buffer_addr_info_valid: 1, + reserved1: 13; } htt_ppdu_stats_user_common_tlv; #define HTT_PPDU_STATS_USER_RATE_TLV_TID_NUM_M 0x000000ff @@ -821,6 +851,104 @@ typedef struct { ((_var) |= ((_val) << HTT_PPDU_STATS_USER_RATE_TLV_RESP_TYPE_VALID_S)); \ } while (0) + +#define HTT_PPDU_STATS_BUF_ADDR_39_32_M 0x000000ff +#define HTT_PPDU_STATS_BUF_ADDR_39_32_S 0 + +#define HTT_PPDU_STATS_BUF_ADDR_39_32__GET(_var) \ + (((_var) & HTT_PPDU_STATS_BUF_ADDR_39_32_M) >> \ + HTT_PPDU_STATS_BUF_ADDR_39_32_S) + +#define HTT_PPDU_STATS_BUF_ADDR_39_32_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_BUF_ADDR_39_32, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_BUF_ADDR_39_32_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_M 0x00000700 +#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_S 8 + +#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_GET(_var) \ + (((_var) & HTT_PPDU_STATS_RETURN_BUF_MANAGER_M) >> \ + HTT_PPDU_STATS_RETURN_BUF_MANAGER_S) + +#define HTT_PPDU_STATS_RETURN_BUF_MANAGER_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_RETURN_BUF_MANAGER, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_RETURN_BUF_MANAGER_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_M 0xfffff800 +#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_S 11 + +#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_GET(_var) \ + (((_var) & HTT_PPDU_STATS_SW_BUFFER_COOKIE_M) >> \ + HTT_PPDU_STATS_SW_BUFFER_COOKIE_S) + +#define HTT_PPDU_STATS_SW_BUFFER_COOKIE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_SW_BUFFER_COOKIE, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_SW_BUFFER_COOKIE_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_M 0x0000FFFF +#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S 0 + +#define HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_GET(_var) \ + (((_var) & HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_M) >> \ + HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S) + +#define HTT_PPDU_STAT_HOST_OPAQUE_COOKIE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_HOST_OPAQUE_COOKIE, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_HOST_OPAQUE_COOKIE_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_IS_OPAQUE_VALID_M 0x00010000 +#define HTT_PPDU_STATS_IS_OPAQUE_VALID_S 16 + +#define HTT_PPDU_STATS_IS_OPAQUE_VALID_GET(_var) \ + (((_var) & HTT_PPDU_STATS_IS_OPAQUE_VALID_M) >> \ + HTT_PPDU_STATS_IS_OPAQUE_VALID_S) + +#define HTT_PPDU_STATS_IS_OPAQUE_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_OPAQUE_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_IS_OPAQUE_VALID_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_IS_STANDALONE_M 0x00020000 +#define HTT_PPDU_STATS_IS_STANDALONE_S 17 + +#define HTT_PPDU_STATS_IS_STANDALONE_GET(_var) \ + (((_var) & HTT_PPDU_STATS_IS_STANDALONE_M) >> \ + HTT_PPDU_STATS_IS_OPAQUE_VALID_S) + +#define HTT_PPDU_STATS_IS_STANDALONE_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_STANDALONE, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_IS_STANDALONE_S)); \ + } while (0) + + +#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_M 0x000400000 +#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S 18 + +#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_GET(_var) \ + (((_var) & HTT_PPDU_STATS_IS_BUFF_INFO_VALID_M) >> \ + HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S) + +#define HTT_PPDU_STATS_IS_BUFF_INFO_VALID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_PPDU_STATS_IS_BUFF_INFO_VALID, _val); \ + ((_var) |= ((_val) << HTT_PPDU_STATS_IS_BUFF_INFO_VALID_S)); \ + } while (0) + enum HTT_PPDU_STATS_PPDU_TYPE { HTT_PPDU_STATS_PPDU_TYPE_SU, HTT_PPDU_STATS_PPDU_TYPE_MU_MIMO, |
