|
@@ -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.
|