summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorspuligil <spuligil@codeaurora.org>2019-03-04 18:00:49 -0800
committerspuligil <spuligil@codeaurora.org>2019-03-04 18:00:49 -0800
commitbfde320803821e1237ceb51a8f20db0764c83c34 (patch)
tree5da82174ea1e15ff0c38a9aaad4a94e25d67e991
parent8ebb6cfdc6312ccf0fea29dac699b0fa0a1c7c0c (diff)
fw-api: CL 6631391 - update fw common interface files
Change-Id: Ib5c584481a410c3c98c7b634af00c4bb384eb2ec HTT: add rx offset specs to RX_RING_SELECTION_CFG msg def CRs-Fixed: 2262693
-rw-r--r--fw/htt.h173
1 files changed, 161 insertions, 12 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 048f33b41abc..6c52a37ea29e 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -175,9 +175,10 @@
* 3.58 Add optional MSDU ack RSSI array to end of HTT_T2H TX_COMPL_IND msg
* 3.59 Add HTT_RXDMA_HOST_BUF_RING2 def
* 3.60 Add HTT_T2H_MSG_TYPE_PEER_STATS_IND def
+ * 3.61 Add rx offset fields to HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG msg
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 60
+#define HTT_CURRENT_VERSION_MINOR 61
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -4728,9 +4729,9 @@ enum htt_srng_ring_id {
*
* The message would appear as follows:
*
- * |31 26|25|24|23 16|15 8|7 0|
+ * |31 27|26|25|24|23 16|15 8|7 0|
* |-----------------+----------------+----------------+---------------|
- * | rsvd1 |PS|SS| ring_id | pdev_id | msg_type |
+ * | rsvd1 |OV|PS|SS| ring_id | pdev_id | msg_type |
* |-------------------------------------------------------------------|
* | rsvd2 | ring_buffer_size |
* |-------------------------------------------------------------------|
@@ -4744,9 +4745,18 @@ enum htt_srng_ring_id {
* |-------------------------------------------------------------------|
* | tlv_filter_in_flags |
* |-------------------------------------------------------------------|
+ * | rx_header_offset | rx_packet_offset |
+ * |-------------------------------------------------------------------|
+ * | rx_mpdu_start_offset | rx_mpdu_end_offset |
+ * |-------------------------------------------------------------------|
+ * | rx_msdu_start_offset | rx_msdu_end_offset |
+ * |-------------------------------------------------------------------|
+ * | rsvd3 | rx_attention_offset |
+ * |-------------------------------------------------------------------|
* Where:
* PS = pkt_swap
* SS = status_swap
+ * OV = rx_offsets_valid
* The message is interpreted as follows:
* dword0 - b'0:7 - msg_type: This will be set to
* HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG
@@ -4755,9 +4765,15 @@ enum htt_srng_ring_id {
* 1/2/3 mac id (for rings at LMAC level)
* b'16:23 - ring_id : Identify the ring to configure.
* More details can be got from enum htt_srng_ring_id
- * b'24 - status_swap: 1 is to swap status TLV
- * b'25 - pkt_swap: 1 is to swap packet TLV
- * b'26:31 - rsvd1: reserved for future use
+ * b'24 - status_swap (SS): 1 is to swap status TLV - refer to
+ * BUF_RING_CFG_0 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * b'25 - pkt_swap (PS): 1 is to swap packet TLV - refer to
+ * BUF_RING_CFG_0 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * b'26 - rx_offset_valid (OV): flag to indicate rx offsets
+ * configuration fields are valid
+ * b'27:31 - rsvd1: reserved for future use
* dword1 - b'0:16 - ring_buffer_size: size of bufferes referenced by rx ring,
* in byte units.
* Valid only for HW_TO_SW_RING and SW_TO_HW_RING
@@ -4786,14 +4802,51 @@ enum htt_srng_ring_id {
* dword6 - b'0:31 - tlv_filter_in_flags:
* Filter in Attention/MPDU/PPDU/Header/User tlvs
* Refer to CFG_TLV_FILTER_IN_FLAG defs
+ * dword7 - b'0:15 - rx_packet_offset: rx_packet_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_1 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_header_offset: rx_header_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_1 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword8 - b'0:15 - rx_mpdu_end_offset: rx_mpdu_end_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_2 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_mpdu_start_offset: rx_mpdu_start_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_2 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword9 - b'0:15 - rx_msdu_end_offset: rx_msdu_end_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_3 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16:31 - rx_msdu_start_offset: rx_msdu_start_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_3 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * dword10 - b'0:15 - rx_attention_offset: rx_attention_offset in byte units
+ * Valid only for HW_TO_SW_RING and SW_TO_HW_RING
+ * A value of 0 will be considered as ignore this config.
+ * Refer to BUF_RING_CFG_4 defs within HW .h files,
+ * e.g. wmac_top_reg_seq_hwioreg.h
+ * - b'16-31 - rsvd3 for future use
*/
PREPACK struct htt_rx_ring_selection_cfg_t {
- A_UINT32 msg_type: 8,
- pdev_id: 8,
- ring_id: 8,
- status_swap: 1,
- pkt_swap: 1,
- rsvd1: 6;
+ A_UINT32 msg_type: 8,
+ pdev_id: 8,
+ ring_id: 8,
+ status_swap: 1,
+ pkt_swap: 1,
+ rx_offsets_valid: 1,
+ rsvd1: 5;
A_UINT32 ring_buffer_size: 16,
rsvd2: 16;
A_UINT32 packet_type_enable_flags_0;
@@ -4801,6 +4854,14 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
A_UINT32 packet_type_enable_flags_2;
A_UINT32 packet_type_enable_flags_3;
A_UINT32 tlv_filter_in_flags;
+ A_UINT32 rx_packet_offset: 16,
+ rx_header_offset: 16;
+ A_UINT32 rx_mpdu_end_offset: 16,
+ rx_mpdu_start_offset: 16;
+ A_UINT32 rx_msdu_end_offset: 16,
+ rx_msdu_start_offset: 16;
+ A_UINT32 rx_attn_offset: 16,
+ rsvd3: 16;
} POSTPACK;
#define HTT_RX_RING_SELECTION_CFG_SZ (sizeof(struct htt_rx_ring_selection_cfg_t))
@@ -4849,6 +4910,17 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_PKT_TLV_SWAP_S)); \
} while (0)
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_M 0x04000000
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S 26
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_OFFSETS_VALID_S)); \
+ } while (0)
+
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_M 0x0000ffff
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_S 0
#define HTT_RX_RING_SELECTION_CFG_RING_BUFFER_SIZE_GET(_var) \
@@ -4915,6 +4987,83 @@ PREPACK struct htt_rx_ring_selection_cfg_t {
((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_TLV_FILTER_IN_FLAG_S)); \
} while (0)
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_PACKET_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_HEADER_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_END_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MPDU_START_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MSDU_END_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_M 0xffff0000
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S 16
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_MSDU_START_OFFSET_S)); \
+ } while (0)
+
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_M 0x0000ffff
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S 0
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_GET(_var) \
+ (((_var) & HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_M) >> \
+ HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S)
+#define HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET, _val); \
+ ((_var) |= ((_val) << HTT_RX_RING_SELECTION_CFG_RX_ATTENTION_OFFSET_S)); \
+ } while (0)
+
/*
* Subtype based MGMT frames enable bits.
* FP: Filter_Pass, MD: Monitor_Direct MO: Monitor_Other