From a4384019d052dc16eb058a3dd38e34d6b0616c47 Mon Sep 17 00:00:00 2001 From: spuligil Date: Wed, 12 Feb 2020 06:00:41 -0800 Subject: [PATCH] fw-api: CL 9551049 - update fw common interface files Change-Id: I531d38ff23c5f90f3e5000701f3d9a047977086e HTT: add H2T_MSG_TYPE_RX_FULL_MONITOR_MODE msg def CRs-Fixed: 2262693 --- fw/htt.h | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 132 insertions(+), 1 deletion(-) diff --git a/fw/htt.h b/fw/htt.h index b9cab6a2046f..60ee1952f118 100644 --- a/fw/htt.h +++ b/fw/htt.h @@ -198,9 +198,10 @@ * 3.74 Add HTT_T2H_MSG_TYPE_RX_FISA_CFG msg. * 3.75 Add fp_ndp and mo_ndp flags in HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG. * 3.76 Add HTT_H2T_MSG_TYPE_3_TUPLE_HASH_CFG msg. + * 3.77 Add HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE msg. */ #define HTT_CURRENT_VERSION_MAJOR 3 -#define HTT_CURRENT_VERSION_MINOR 76 +#define HTT_CURRENT_VERSION_MINOR 77 #define HTT_NUM_TX_FRAG_DESC 1024 @@ -544,6 +545,7 @@ enum htt_h2t_msg_type { HTT_H2T_MSG_TYPE_CHAN_CALDATA = 0x14, HTT_H2T_MSG_TYPE_RX_FISA_CFG = 0x15, HTT_H2T_MSG_TYPE_3_TUPLE_HASH_CFG = 0x16, + HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE = 0x17, /* keep this last */ HTT_H2T_NUM_MSGS @@ -6512,6 +6514,135 @@ PREPACK struct htt_h2t_msg_rx_fse_operation_t { reserved:24; } POSTPACK; +/** + * @brief Host-->target HTT RX Full monitor mode register configuration message + * @details + * The host will send this Full monitor mode register configuration message. + * This message can be sent per SOC or per PDEV which is differentiated + * by pdev id values. + * + * |31 16|15 11|10 8|7 3|2|1|0| + * |-------------------------------------------------------------| + * | reserved | pdev_id | MSG_TYPE | + * |-------------------------------------------------------------| + * | reserved |Release Ring |N|Z|E| + * |-------------------------------------------------------------| + * + * where E is 1-bit full monitor mode enable/disable. + * Z is 1-bit additional descriptor for zero mpdu enable/disable + * N is 1-bit additional descriptor for non zero mdpu enable/disable + * + * The following field definitions describe the format of the full monitor + * mode configuration message sent from the host to target for each pdev. + * + * Header fields: + * dword0 - b'7:0 - msg_type: This will be set to + * HTT_H2T_MSG_TYPE_RX_FULL_MONITOR_MODE. + * b'15:8 - pdev_id: 0 indicates msg is for all LMAC rings, i.e. soc + * 1, 2, 3 indicates pdev_id 0,1,2 and the msg is for the + * specified pdev's LMAC ring. + * b'31:16 - reserved : Reserved for future use. + * dword1 - b'0 - full_monitor_mode enable: This indicates that the full + * monitor mode rxdma register is to be enabled or disabled. + * b'1 - addnl_descs_zero_mpdus_end: This indicates that the + * additional descriptors at ppdu end for zero mpdus + * enabled or disabled. + * b'2 - addnl_descs_non_zero_mpdus_end: This indicates that the + * additional descriptors at ppdu end for non zero mpdus + * enabled or disabled. + * b'10:3 - release_ring: This indicates the destination ring + * selection for the descriptor at the end of PPDU + * 0 - REO ring select + * 1 - FW ring select + * 2 - SW ring select + * 3 - Release ring select + * Refer to htt_rx_full_mon_release_ring. + * b'31:11 - reserved for future use + */ +PREPACK struct htt_h2t_msg_rx_full_monitor_mode_t { + A_UINT32 msg_type:8, + pdev_id:8, + reserved0:16; + A_UINT32 full_monitor_mode_enable:1, + addnl_descs_zero_mpdus_end:1, + addnl_descs_non_zero_mpdus_end:1, + release_ring:8, + reserved1:21; +} POSTPACK; + +/** + * Enumeration for full monitor mode destination ring select + * 0 - REO destination ring select + * 1 - FW destination ring select + * 2 - SW destination ring select + * 3 - Release destination ring select + */ +enum htt_rx_full_mon_release_ring { + HTT_RX_MON_RING_REO, + HTT_RX_MON_RING_FW, + HTT_RX_MON_RING_SW, + HTT_RX_MON_RING_RELEASE, +}; + +#define HTT_RX_FULL_MONITOR_MODE_SETUP_SZ (sizeof(struct htt_h2t_msg_rx_full_monitor_mode_t)) +/* DWORD 0: Pdev ID */ +#define HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_M 0x0000ff00 +#define HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_S 8 +#define HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_GET(_var) \ + (((_var) & HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_M) >> \ + HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_S) +#define HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_SET(_var, _val) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID, _val); \ + ((_var) |= ((_val) << HTT_RX_FULL_MONITOR_MODE_OPERATION_PDEV_ID_S)); \ + } while (0) + +/* DWORD 1:ENABLE */ +#define HTT_RX_FULL_MONITOR_MODE_ENABLE_M 0x00000001 +#define HTT_RX_FULL_MONITOR_MODE_ENABLE_S 0 + +#define HTT_RX_FULL_MONITOR_MODE_ENABLE_SET(word, enable) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_FULL_MONITOR_MODE_ENABLE, enable); \ + (word) |= ((enable) << HTT_RX_FULL_MONITOR_MODE_ENABLE_S); \ + } while (0) +#define HTT_RX_FULL_MONITOR_MODE_ENABLE_GET(word) \ + (((word) & HTT_RX_FULL_MONITOR_MODE_ENABLE_M) >> HTT_RX_FULL_MONITOR_MODE_ENABLE_S) + +/* DWORD 1:ZERO_MPDU */ +#define HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_M 0x00000002 +#define HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_S 1 +#define HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_SET(word, zerompdu) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU, zerompdu); \ + (word) |= ((zerompdu) << HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_S); \ + } while (0) +#define HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_GET(word) \ + (((word) & HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_M) >> HTT_RX_FULL_MONITOR_MODE_ZERO_MPDU_S) + + +/* DWORD 1:NON_ZERO_MPDU */ +#define HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_M 0x00000004 +#define HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_S 2 +#define HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_SET(word, nonzerompdu) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU, nonzerompdu); \ + (word) |= ((nonzerompdu) << HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_S); \ + } while (0) +#define HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_GET(word) \ + (((word) & HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_M) >> HTT_RX_FULL_MONITOR_MODE_NON_ZERO_MPDU_S) + +/* DWORD 1:RELEASE_RINGS */ +#define HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_M 0x000007f8 +#define HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_S 3 +#define HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_SET(word, releaserings) \ + do { \ + HTT_CHECK_SET_VAL(HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS, releaserings); \ + (word) |= ((releaserings) << HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_S); \ + } while (0) +#define HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_GET(word) \ + (((word) & HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_M) >> HTT_RX_FULL_MONITOR_MODE_RELEASE_RINGS_S) + /** * Enumeration for IP Protocol or IPSEC Protocol * IPsec describes the framework for providing security at IP layer.