xref: /dpdk/drivers/common/cnxk/hw/nix.h (revision 9a01217e287197cfc2ac778edcec18d84056d244)
1fa8f86a1SJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2fa8f86a1SJerin Jacob  * Copyright(C) 2021 Marvell.
3fa8f86a1SJerin Jacob  */
4fa8f86a1SJerin Jacob 
5fa8f86a1SJerin Jacob #ifndef __NIX_HW_H__
6fa8f86a1SJerin Jacob #define __NIX_HW_H__
7fa8f86a1SJerin Jacob 
8fa8f86a1SJerin Jacob /* Register offsets */
9fa8f86a1SJerin Jacob 
10fa8f86a1SJerin Jacob #define NIX_AF_CFG			(0x0ull)
11fa8f86a1SJerin Jacob #define NIX_AF_STATUS			(0x10ull)
12fa8f86a1SJerin Jacob #define NIX_AF_NDC_CFG			(0x18ull)
13fa8f86a1SJerin Jacob #define NIX_AF_CONST			(0x20ull)
14fa8f86a1SJerin Jacob #define NIX_AF_CONST1			(0x28ull)
15fa8f86a1SJerin Jacob #define NIX_AF_CONST2			(0x30ull)
16fa8f86a1SJerin Jacob #define NIX_AF_CONST3			(0x38ull)
17fa8f86a1SJerin Jacob #define NIX_AF_SQ_CONST			(0x40ull)
18fa8f86a1SJerin Jacob #define NIX_AF_CQ_CONST			(0x48ull)
19fa8f86a1SJerin Jacob #define NIX_AF_RQ_CONST			(0x50ull)
20fa8f86a1SJerin Jacob #define NIX_AF_PL_CONST			(0x58ull) /* [CN10K, .) */
21fa8f86a1SJerin Jacob #define NIX_AF_PSE_CONST		(0x60ull)
22fa8f86a1SJerin Jacob #define NIX_AF_TL1_CONST		(0x70ull)
23fa8f86a1SJerin Jacob #define NIX_AF_TL2_CONST		(0x78ull)
24fa8f86a1SJerin Jacob #define NIX_AF_TL3_CONST		(0x80ull)
25fa8f86a1SJerin Jacob #define NIX_AF_TL4_CONST		(0x88ull)
26fa8f86a1SJerin Jacob #define NIX_AF_MDQ_CONST		(0x90ull)
27fa8f86a1SJerin Jacob #define NIX_AF_MC_MIRROR_CONST		(0x98ull)
28fa8f86a1SJerin Jacob #define NIX_AF_LSO_CFG			(0xa8ull)
29fa8f86a1SJerin Jacob #define NIX_AF_BLK_RST			(0xb0ull)
30fa8f86a1SJerin Jacob #define NIX_AF_TX_TSTMP_CFG		(0xc0ull)
31fa8f86a1SJerin Jacob #define NIX_AF_PL_TS			(0xc8ull) /* [CN10K, .) */
32fa8f86a1SJerin Jacob #define NIX_AF_RX_CFG			(0xd0ull)
33fa8f86a1SJerin Jacob #define NIX_AF_AVG_DELAY		(0xe0ull)
34fa8f86a1SJerin Jacob #define NIX_AF_CINT_DELAY		(0xf0ull)
35*9a01217eSSatha Rao #define NIX_AF_VWQE_TIMER		(0xf8ull) /* [CN10K, CN20K) */
36fa8f86a1SJerin Jacob #define NIX_AF_RX_MCAST_BASE		(0x100ull)
37fa8f86a1SJerin Jacob #define NIX_AF_RX_MCAST_CFG		(0x110ull)
38fa8f86a1SJerin Jacob #define NIX_AF_RX_MCAST_BUF_BASE	(0x120ull)
39fa8f86a1SJerin Jacob #define NIX_AF_RX_MCAST_BUF_CFG		(0x130ull)
40fa8f86a1SJerin Jacob #define NIX_AF_RX_MIRROR_BUF_BASE	(0x140ull)
41fa8f86a1SJerin Jacob #define NIX_AF_RX_MIRROR_BUF_CFG	(0x148ull)
42fa8f86a1SJerin Jacob #define NIX_AF_LF_RST			(0x150ull)
43fa8f86a1SJerin Jacob #define NIX_AF_GEN_INT			(0x160ull)
44fa8f86a1SJerin Jacob #define NIX_AF_GEN_INT_W1S		(0x168ull)
45fa8f86a1SJerin Jacob #define NIX_AF_GEN_INT_ENA_W1S		(0x170ull)
46fa8f86a1SJerin Jacob #define NIX_AF_GEN_INT_ENA_W1C		(0x178ull)
47fa8f86a1SJerin Jacob #define NIX_AF_ERR_INT			(0x180ull)
48fa8f86a1SJerin Jacob #define NIX_AF_ERR_INT_W1S		(0x188ull)
49fa8f86a1SJerin Jacob #define NIX_AF_ERR_INT_ENA_W1S		(0x190ull)
50fa8f86a1SJerin Jacob #define NIX_AF_ERR_INT_ENA_W1C		(0x198ull)
51fa8f86a1SJerin Jacob #define NIX_AF_RAS			(0x1a0ull)
52fa8f86a1SJerin Jacob #define NIX_AF_RAS_W1S			(0x1a8ull)
53fa8f86a1SJerin Jacob #define NIX_AF_RAS_ENA_W1S		(0x1b0ull)
54fa8f86a1SJerin Jacob #define NIX_AF_RAS_ENA_W1C		(0x1b8ull)
55fa8f86a1SJerin Jacob #define NIX_AF_RVU_INT			(0x1c0ull)
56fa8f86a1SJerin Jacob #define NIX_AF_RVU_INT_W1S		(0x1c8ull)
57fa8f86a1SJerin Jacob #define NIX_AF_RVU_INT_ENA_W1S		(0x1d0ull)
58fa8f86a1SJerin Jacob #define NIX_AF_RVU_INT_ENA_W1C		(0x1d8ull)
59fa8f86a1SJerin Jacob #define NIX_AF_TCP_TIMER		(0x1e0ull)
60fa8f86a1SJerin Jacob /* [CN10k, .) */
61fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_ETX(a)		(0x1f0ull | (uint64_t)(a) << 3)
62fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OL2		(0x200ull)
63fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_GEN0_COLOR	(0x208ull) /* [CN10K, .) */
64fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OIP4		(0x210ull)
65fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_GEN1_COLOR	(0x218ull) /* [CN10K, .) */
66fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IIP4		(0x220ull)
67fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_VLAN0_PCP_DEI	(0x228ull) /* [CN10K, .) */
68fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OIP6		(0x230ull)
69fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_VLAN1_PCP_DEI	(0x238ull) /* [CN10K, .) */
70fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IIP6		(0x240ull)
71fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OTCP		(0x250ull)
72fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_ITCP		(0x260ull)
73fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OUDP		(0x270ull)
74fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IUDP		(0x280ull)
75fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OSCTP		(0x290ull)
76fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_CST_APAD_0	(0x298ull) /* [CN10K, .) */
77fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_ISCTP		(0x2a0ull)
78fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_CST_APAD_1	(0x2a8ull) /* [CN10K, .) */
79fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IPSECX(a)		(0x2b0ull | (uint64_t)(a) << 3)
80fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IIP4_DSCP		(0x2e0ull) /* [CN10K, .) */
81fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OIP4_DSCP		(0x2e8ull) /* [CN10K, .) */
82fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_IIP6_DSCP		(0x2f0ull) /* [CN10K, .) */
83fa8f86a1SJerin Jacob #define NIX_AF_RX_DEF_OIP6_DSCP		(0x2f8ull) /* [CN10K, .) */
84fa8f86a1SJerin Jacob #define NIX_AF_RX_IPSEC_GEN_CFG		(0x300ull)
85*9a01217eSSatha Rao #define NIX_AF_RX_IPSEC_VWQE_GEN_CFG	(0x310ull) /* [CN10K, CN20K) */
86*9a01217eSSatha Rao #define NIX_AF_RX_CPTX_INST_QSEL(a)	(0x340ull | (uint64_t)(a) << 16) /* [CN20K, .) */
87*9a01217eSSatha Rao #define NIX_AF_RX_CPTX_CREDIT(a)	(0x380ull | (uint64_t)(a) << 16) /* [CN20K, .) */
88*9a01217eSSatha Rao #define NIX_AF_CN9K_RX_CPTX_INST_QSEL(a)(0x320ull | (uint64_t)(a) << 3) /* [CN9K, CN20K) */
89*9a01217eSSatha Rao #define NIX_AF_CN9K_RX_CPTX_CREDIT(a)	(0x360ull | (uint64_t)(a) << 3) /* [CN9K, CN20K) */
90fa8f86a1SJerin Jacob #define NIX_AF_NDC_RX_SYNC		(0x3e0ull)
91fa8f86a1SJerin Jacob #define NIX_AF_NDC_TX_SYNC		(0x3f0ull)
92fa8f86a1SJerin Jacob #define NIX_AF_AQ_CFG			(0x400ull)
93fa8f86a1SJerin Jacob #define NIX_AF_AQ_BASE			(0x410ull)
94fa8f86a1SJerin Jacob #define NIX_AF_AQ_STATUS		(0x420ull)
95fa8f86a1SJerin Jacob #define NIX_AF_AQ_DOOR			(0x430ull)
96fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE_WAIT		(0x440ull)
97fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE			(0x450ull)
98fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE_ACK		(0x460ull)
99fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE_TIMER		(0x470ull)
100fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE_ENA_W1S		(0x490ull)
101fa8f86a1SJerin Jacob #define NIX_AF_AQ_DONE_ENA_W1C		(0x498ull)
102fa8f86a1SJerin Jacob #define NIX_AF_RX_LINKX_CFG(a)		(0x540ull | (uint64_t)(a) << 16)
103fa8f86a1SJerin Jacob #define NIX_AF_RX_SW_SYNC		(0x550ull)
104fa8f86a1SJerin Jacob #define NIX_AF_RX_LINKX_WRR_CFG(a)	(0x560ull | (uint64_t)(a) << 16)
105*9a01217eSSatha Rao #define NIX_AF_RQM_ECO                  (0x5a0ull)
106fa8f86a1SJerin Jacob #define NIX_AF_SEB_CFG			(0x5f0ull) /* [CN10K, .) */
107fa8f86a1SJerin Jacob #define NIX_AF_EXPR_TX_FIFO_STATUS	(0x640ull) /* [CN9K, CN10K) */
108fa8f86a1SJerin Jacob #define NIX_AF_NORM_TX_FIFO_STATUS	(0x648ull)
109fa8f86a1SJerin Jacob #define NIX_AF_SDP_TX_FIFO_STATUS	(0x650ull)
110fa8f86a1SJerin Jacob #define NIX_AF_TX_NPC_CAPTURE_CONFIG	(0x660ull)
111fa8f86a1SJerin Jacob #define NIX_AF_TX_NPC_CAPTURE_INFO	(0x668ull)
112*9a01217eSSatha Rao #define NIX_AF_SEB_COALESCE_DBGX(a)             (0x670ull | (uint64_t)(a) << 3)
113fa8f86a1SJerin Jacob #define NIX_AF_TX_NPC_CAPTURE_RESPX(a)	(0x680ull | (uint64_t)(a) << 3)
114fa8f86a1SJerin Jacob #define NIX_AF_SEB_ACTIVE_CYCLES_PCX(a) (0x6c0ull | (uint64_t)(a) << 3)
115fa8f86a1SJerin Jacob #define NIX_AF_SMQX_CFG(a)		(0x700ull | (uint64_t)(a) << 16)
116fa8f86a1SJerin Jacob #define NIX_AF_SMQX_HEAD(a)		(0x710ull | (uint64_t)(a) << 16)
117fa8f86a1SJerin Jacob #define NIX_AF_SMQX_TAIL(a)		(0x720ull | (uint64_t)(a) << 16)
118fa8f86a1SJerin Jacob #define NIX_AF_SMQX_STATUS(a)		(0x730ull | (uint64_t)(a) << 16)
119fa8f86a1SJerin Jacob #define NIX_AF_SMQX_NXT_HEAD(a)		(0x740ull | (uint64_t)(a) << 16)
120fa8f86a1SJerin Jacob #define NIX_AF_SQM_ACTIVE_CYCLES_PC	(0x770ull)
121fa8f86a1SJerin Jacob #define NIX_AF_SQM_SCLK_CNT		(0x780ull) /* [CN10K, .) */
122*9a01217eSSatha Rao #define NIX_AF_DWRR_MTUX(a)             (0x790ull | (uint64_t)(a) << 16)
123fa8f86a1SJerin Jacob #define NIX_AF_DWRR_SDP_MTU		(0x790ull) /* [CN10K, .) */
124fa8f86a1SJerin Jacob #define NIX_AF_DWRR_RPM_MTU		(0x7a0ull) /* [CN10K, .) */
125fa8f86a1SJerin Jacob #define NIX_AF_PSE_CHANNEL_LEVEL	(0x800ull)
126fa8f86a1SJerin Jacob #define NIX_AF_PSE_SHAPER_CFG		(0x810ull)
127fa8f86a1SJerin Jacob #define NIX_AF_PSE_ACTIVE_CYCLES_PC	(0x8c0ull)
128fa8f86a1SJerin Jacob #define NIX_AF_MARK_FORMATX_CTL(a)	(0x900ull | (uint64_t)(a) << 18)
129fa8f86a1SJerin Jacob #define NIX_AF_TX_LINKX_NORM_CREDIT(a)	(0xa00ull | (uint64_t)(a) << 16)
130fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
131fa8f86a1SJerin Jacob #define NIX_AF_TX_LINKX_EXPR_CREDIT(a) (0xa10ull | (uint64_t)(a) << 16)
132fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
133fa8f86a1SJerin Jacob #define NIX_AF_TX_LINKX_SW_XOFF(a) (0xa20ull | (uint64_t)(a) << 16)
134fa8f86a1SJerin Jacob /* [CN10K, .) */
135fa8f86a1SJerin Jacob #define NIX_AF_TX_LINKX_NORM_CDT_ADJ(a) (0xa20ull | (uint64_t)(a) << 16)
136fa8f86a1SJerin Jacob #define NIX_AF_TX_LINKX_HW_XOFF(a)	(0xa30ull | (uint64_t)(a) << 16)
137fa8f86a1SJerin Jacob #define NIX_AF_SDP_LINK_CREDIT		(0xa40ull)
138fa8f86a1SJerin Jacob #define NIX_AF_SDP_LINK_CDT_ADJ		(0xa50ull) /* [CN10K, .) */
139*9a01217eSSatha Rao #define NIX_AF_LINK_CDT_ADJ_ERR		(0xaa0ull) /* [CN10K, .) */
140fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
141fa8f86a1SJerin Jacob #define NIX_AF_SDP_SW_XOFFX(a)	    (0xa60ull | (uint64_t)(a) << 3)
142fa8f86a1SJerin Jacob #define NIX_AF_SDP_HW_XOFFX(a)	    (0xac0ull | (uint64_t)(a) << 3)
143fa8f86a1SJerin Jacob #define NIX_AF_TL4X_BP_STATUS(a)    (0xb00ull | (uint64_t)(a) << 16)
144fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SDP_LINK_CFG(a) (0xb10ull | (uint64_t)(a) << 16)
145fa8f86a1SJerin Jacob #define NIX_AF_TL1_TW_ARB_CTL_DEBUG (0xbc0ull) /* [CN10K, .) */
146fa8f86a1SJerin Jacob #define NIX_AF_TL1_TW_ARB_REQ_DEBUG (0xbc8ull) /* [CN10K, .) */
147fa8f86a1SJerin Jacob #define NIX_AF_TL1X_SCHEDULE(a)	    (0xc00ull | (uint64_t)(a) << 16)
148fa8f86a1SJerin Jacob #define NIX_AF_TL1X_SHAPE(a)	    (0xc10ull | (uint64_t)(a) << 16)
149fa8f86a1SJerin Jacob #define NIX_AF_TL1X_CIR(a)	    (0xc20ull | (uint64_t)(a) << 16)
150fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
151fa8f86a1SJerin Jacob #define NIX_AF_TL1X_SHAPE_STATE(a) (0xc50ull | (uint64_t)(a) << 16)
152fa8f86a1SJerin Jacob /* [CN10K, .) */
153fa8f86a1SJerin Jacob #define NIX_AF_TL1X_SHAPE_STATE_CIR(a) (0xc50ull | (uint64_t)(a) << 16)
154fa8f86a1SJerin Jacob #define NIX_AF_TL1X_SW_XOFF(a)	       (0xc70ull | (uint64_t)(a) << 16)
155fa8f86a1SJerin Jacob #define NIX_AF_TL1X_TOPOLOGY(a)	       (0xc80ull | (uint64_t)(a) << 16)
156fa8f86a1SJerin Jacob #define NIX_AF_TL1X_MD_DEBUG0(a)       (0xcc0ull | (uint64_t)(a) << 16)
157fa8f86a1SJerin Jacob #define NIX_AF_TL1X_MD_DEBUG1(a)       (0xcc8ull | (uint64_t)(a) << 16)
158fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
159fa8f86a1SJerin Jacob #define NIX_AF_TL1X_MD_DEBUG2(a) (0xcd0ull | (uint64_t)(a) << 16)
160fa8f86a1SJerin Jacob /* [CN10K, .) */
161fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SHAPE_STATE_CIR(a) (0xcd0ull | (uint64_t)(a) << 16)
162fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
163fa8f86a1SJerin Jacob #define NIX_AF_TL1X_MD_DEBUG3(a)       (0xcd8ull | (uint64_t)(a) << 16)
164fa8f86a1SJerin Jacob #define NIX_AF_TL1X_DROPPED_PACKETS(a) (0xd20ull | (uint64_t)(a) << 16)
165fa8f86a1SJerin Jacob #define NIX_AF_TL1X_DROPPED_BYTES(a)   (0xd30ull | (uint64_t)(a) << 16)
166fa8f86a1SJerin Jacob #define NIX_AF_TL1X_RED_PACKETS(a)     (0xd40ull | (uint64_t)(a) << 16)
167fa8f86a1SJerin Jacob #define NIX_AF_TL1X_RED_BYTES(a)       (0xd50ull | (uint64_t)(a) << 16)
168fa8f86a1SJerin Jacob #define NIX_AF_TL1X_YELLOW_PACKETS(a)  (0xd60ull | (uint64_t)(a) << 16)
169fa8f86a1SJerin Jacob #define NIX_AF_TL1X_YELLOW_BYTES(a)    (0xd70ull | (uint64_t)(a) << 16)
170fa8f86a1SJerin Jacob #define NIX_AF_TL1X_GREEN_PACKETS(a)   (0xd80ull | (uint64_t)(a) << 16)
171fa8f86a1SJerin Jacob #define NIX_AF_TL1X_GREEN_BYTES(a)     (0xd90ull | (uint64_t)(a) << 16)
172fa8f86a1SJerin Jacob #define NIX_AF_MDQ_MD_COUNT	       (0xda0ull) /* [CN10K, .) */
173fa8f86a1SJerin Jacob /* [CN10K, .) */
174fa8f86a1SJerin Jacob #define NIX_AF_MDQX_OUT_MD_COUNT(a) (0xdb0ull | (uint64_t)(a) << 16)
175fa8f86a1SJerin Jacob #define NIX_AF_TL2_TW_ARB_CTL_DEBUG (0xdc0ull) /* [CN10K, .) */
176fa8f86a1SJerin Jacob /* [CN10K, .) */
177fa8f86a1SJerin Jacob #define NIX_AF_TL2_TWX_ARB_REQ_DEBUG0(a) (0xdc8ull | (uint64_t)(a) << 16)
178fa8f86a1SJerin Jacob /* [CN10K, .) */
179fa8f86a1SJerin Jacob #define NIX_AF_TL2_TWX_ARB_REQ_DEBUG1(a) (0xdd0ull | (uint64_t)(a) << 16)
180fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SCHEDULE(a)		 (0xe00ull | (uint64_t)(a) << 16)
181fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SHAPE(a)		 (0xe10ull | (uint64_t)(a) << 16)
182fa8f86a1SJerin Jacob #define NIX_AF_TL2X_CIR(a)		 (0xe20ull | (uint64_t)(a) << 16)
183fa8f86a1SJerin Jacob #define NIX_AF_TL2X_PIR(a)		 (0xe30ull | (uint64_t)(a) << 16)
184fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SCHED_STATE(a)	 (0xe40ull | (uint64_t)(a) << 16)
185fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
186fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SHAPE_STATE(a) (0xe50ull | (uint64_t)(a) << 16)
187fa8f86a1SJerin Jacob /* [CN10K, .) */
188fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SHAPE_STATE_PIR(a) (0xe50ull | (uint64_t)(a) << 16)
189fa8f86a1SJerin Jacob #define NIX_AF_TL2X_SW_XOFF(a)	       (0xe70ull | (uint64_t)(a) << 16)
190fa8f86a1SJerin Jacob #define NIX_AF_TL2X_TOPOLOGY(a)	       (0xe80ull | (uint64_t)(a) << 16)
191fa8f86a1SJerin Jacob #define NIX_AF_TL2X_PARENT(a)	       (0xe88ull | (uint64_t)(a) << 16)
192fa8f86a1SJerin Jacob #define NIX_AF_TL2X_MD_DEBUG0(a)       (0xec0ull | (uint64_t)(a) << 16)
193fa8f86a1SJerin Jacob #define NIX_AF_TL2X_MD_DEBUG1(a)       (0xec8ull | (uint64_t)(a) << 16)
194fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
195fa8f86a1SJerin Jacob #define NIX_AF_TL2X_MD_DEBUG2(a) (0xed0ull | (uint64_t)(a) << 16)
196fa8f86a1SJerin Jacob /* [CN10K, .) */
197fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SHAPE_STATE_CIR(a) (0xed0ull | (uint64_t)(a) << 16)
198fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
199fa8f86a1SJerin Jacob #define NIX_AF_TL2X_MD_DEBUG3(a)    (0xed8ull | (uint64_t)(a) << 16)
200fa8f86a1SJerin Jacob #define NIX_AF_TL3_TW_ARB_CTL_DEBUG (0xfc0ull) /* [CN10K, .) */
201fa8f86a1SJerin Jacob /* [CN10k, .) */
202fa8f86a1SJerin Jacob #define NIX_AF_TL3_TWX_ARB_REQ_DEBUG0(a) (0xfc8ull | (uint64_t)(a) << 16)
203fa8f86a1SJerin Jacob /* [CN10K, .) */
204fa8f86a1SJerin Jacob #define NIX_AF_TL3_TWX_ARB_REQ_DEBUG1(a) (0xfd0ull | (uint64_t)(a) << 16)
205fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SCHEDULE(a)		 (0x1000ull | (uint64_t)(a) << 16)
206fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SHAPE(a)		 (0x1010ull | (uint64_t)(a) << 16)
207fa8f86a1SJerin Jacob #define NIX_AF_TL3X_CIR(a)		 (0x1020ull | (uint64_t)(a) << 16)
208fa8f86a1SJerin Jacob #define NIX_AF_TL3X_PIR(a)		 (0x1030ull | (uint64_t)(a) << 16)
209fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SCHED_STATE(a)	 (0x1040ull | (uint64_t)(a) << 16)
210fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
211fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SHAPE_STATE(a) (0x1050ull | (uint64_t)(a) << 16)
212fa8f86a1SJerin Jacob /* [CN10K, .) */
213fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SHAPE_STATE_PIR(a) (0x1050ull | (uint64_t)(a) << 16)
214fa8f86a1SJerin Jacob #define NIX_AF_TL3X_SW_XOFF(a)	       (0x1070ull | (uint64_t)(a) << 16)
215fa8f86a1SJerin Jacob #define NIX_AF_TL3X_TOPOLOGY(a)	       (0x1080ull | (uint64_t)(a) << 16)
216fa8f86a1SJerin Jacob #define NIX_AF_TL3X_PARENT(a)	       (0x1088ull | (uint64_t)(a) << 16)
217fa8f86a1SJerin Jacob #define NIX_AF_TL3X_MD_DEBUG0(a)       (0x10c0ull | (uint64_t)(a) << 16)
218fa8f86a1SJerin Jacob #define NIX_AF_TL3X_MD_DEBUG1(a)       (0x10c8ull | (uint64_t)(a) << 16)
219fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
220fa8f86a1SJerin Jacob #define NIX_AF_TL3X_MD_DEBUG2(a) (0x10d0ull | (uint64_t)(a) << 16)
221fa8f86a1SJerin Jacob /* [CN10K, .) */
222fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SHAPE_STATE_CIR(a) (0x10d0ull | (uint64_t)(a) << 16)
223fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
224fa8f86a1SJerin Jacob #define NIX_AF_TL3X_MD_DEBUG3(a)    (0x10d8ull | (uint64_t)(a) << 16)
225fa8f86a1SJerin Jacob #define NIX_AF_TL4_TW_ARB_CTL_DEBUG (0x11c0ull) /* [CN10K, .) */
226fa8f86a1SJerin Jacob /* [CN10K, .) */
227fa8f86a1SJerin Jacob #define NIX_AF_TL4_TWX_ARB_REQ_DEBUG0(a) (0x11c8ull | (uint64_t)(a) << 16)
228fa8f86a1SJerin Jacob /* [CN10K, .) */
229fa8f86a1SJerin Jacob #define NIX_AF_TL4_TWX_ARB_REQ_DEBUG1(a) (0x11d0ull | (uint64_t)(a) << 16)
230fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SCHEDULE(a)		 (0x1200ull | (uint64_t)(a) << 16)
231fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SHAPE(a)		 (0x1210ull | (uint64_t)(a) << 16)
232fa8f86a1SJerin Jacob #define NIX_AF_TL4X_CIR(a)		 (0x1220ull | (uint64_t)(a) << 16)
233fa8f86a1SJerin Jacob #define NIX_AF_TL4X_PIR(a)		 (0x1230ull | (uint64_t)(a) << 16)
234fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SCHED_STATE(a)	 (0x1240ull | (uint64_t)(a) << 16)
235*9a01217eSSatha Rao #define NIX_AF_TL4X_SHAPE_STATE_PIR(a)	 (0x1250ull | (uint64_t)(a) << 16)
236fa8f86a1SJerin Jacob #define NIX_AF_TL4X_SW_XOFF(a)		 (0x1270ull | (uint64_t)(a) << 16)
237fa8f86a1SJerin Jacob #define NIX_AF_TL4X_TOPOLOGY(a)		 (0x1280ull | (uint64_t)(a) << 16)
238fa8f86a1SJerin Jacob #define NIX_AF_TL4X_PARENT(a)		 (0x1288ull | (uint64_t)(a) << 16)
239fa8f86a1SJerin Jacob #define NIX_AF_TL4X_MD_DEBUG0(a)	 (0x12c0ull | (uint64_t)(a) << 16)
240fa8f86a1SJerin Jacob #define NIX_AF_TL4X_MD_DEBUG1(a)	 (0x12c8ull | (uint64_t)(a) << 16)
241fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
242fa8f86a1SJerin Jacob #define NIX_AF_TL4X_MD_DEBUG2(a) (0x12d0ull | (uint64_t)(a) << 16)
243fa8f86a1SJerin Jacob /* [CN10K, .) */
244fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SHAPE_STATE_CIR(a) (0x12d0ull | (uint64_t)(a) << 16)
245fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
246fa8f86a1SJerin Jacob #define NIX_AF_TL4X_MD_DEBUG3(a)    (0x12d8ull | (uint64_t)(a) << 16)
247fa8f86a1SJerin Jacob #define NIX_AF_MDQ_TW_ARB_CTL_DEBUG (0x13c0ull) /* [CN10K, .) */
248fa8f86a1SJerin Jacob /* [CN10K, .) */
249fa8f86a1SJerin Jacob #define NIX_AF_MDQ_TWX_ARB_REQ_DEBUG0(a) (0x13c8ull | (uint64_t)(a) << 16)
250fa8f86a1SJerin Jacob /* [CN10K, .) */
251fa8f86a1SJerin Jacob #define NIX_AF_MDQ_TWX_ARB_REQ_DEBUG1(a) (0x13d0ull | (uint64_t)(a) << 16)
252fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SCHEDULE(a)		 (0x1400ull | (uint64_t)(a) << 16)
253fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SHAPE(a)		 (0x1410ull | (uint64_t)(a) << 16)
254fa8f86a1SJerin Jacob #define NIX_AF_MDQX_CIR(a)		 (0x1420ull | (uint64_t)(a) << 16)
255fa8f86a1SJerin Jacob #define NIX_AF_MDQX_PIR(a)		 (0x1430ull | (uint64_t)(a) << 16)
256fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SCHED_STATE(a)	 (0x1440ull | (uint64_t)(a) << 16)
257fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
258fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SHAPE_STATE(a) (0x1450ull | (uint64_t)(a) << 16)
259fa8f86a1SJerin Jacob /* [CN10K, .) */
260fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SHAPE_STATE_PIR(a) (0x1450ull | (uint64_t)(a) << 16)
261fa8f86a1SJerin Jacob #define NIX_AF_MDQX_SW_XOFF(a)	       (0x1470ull | (uint64_t)(a) << 16)
262fa8f86a1SJerin Jacob #define NIX_AF_MDQX_PARENT(a)	       (0x1480ull | (uint64_t)(a) << 16)
263fa8f86a1SJerin Jacob #define NIX_AF_MDQX_MD_DEBUG(a)	       (0x14c0ull | (uint64_t)(a) << 16)
264fa8f86a1SJerin Jacob /* [CN10K, .) */
265fa8f86a1SJerin Jacob #define NIX_AF_MDQX_IN_MD_COUNT(a) (0x14e0ull | (uint64_t)(a) << 16)
266fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
267fa8f86a1SJerin Jacob #define NIX_AF_TL3_TL2X_CFG(a)	     (0x1600ull | (uint64_t)(a) << 16)
268fa8f86a1SJerin Jacob #define NIX_AF_TL3_TL2X_BP_STATUS(a) (0x1610ull | (uint64_t)(a) << 16)
269fa8f86a1SJerin Jacob #define NIX_AF_TL3_TL2X_LINKX_CFG(a, b)                                        \
270fa8f86a1SJerin Jacob 	(0x1700ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
271fa8f86a1SJerin Jacob #define NIX_AF_RX_FLOW_KEY_ALGX_FIELDX(a, b)                                   \
272fa8f86a1SJerin Jacob 	(0x1800ull | (uint64_t)(a) << 18 | (uint64_t)(b) << 3)
273fa8f86a1SJerin Jacob #define NIX_AF_TX_MCASTX(a)	    (0x1900ull | (uint64_t)(a) << 15)
274fa8f86a1SJerin Jacob #define NIX_AF_TX_VTAG_DEFX_CTL(a)  (0x1a00ull | (uint64_t)(a) << 16)
275fa8f86a1SJerin Jacob #define NIX_AF_TX_VTAG_DEFX_DATA(a) (0x1a10ull | (uint64_t)(a) << 16)
276fa8f86a1SJerin Jacob #define NIX_AF_RX_BPIDX_STATUS(a)   (0x1a20ull | (uint64_t)(a) << 17)
277fa8f86a1SJerin Jacob #define NIX_AF_RX_CHANX_CFG(a)	    (0x1a30ull | (uint64_t)(a) << 15)
278fa8f86a1SJerin Jacob #define NIX_AF_CINT_TIMERX(a)	    (0x1a40ull | (uint64_t)(a) << 18)
279fa8f86a1SJerin Jacob #define NIX_AF_LSO_FORMATX_FIELDX(a, b)                                        \
280fa8f86a1SJerin Jacob 	(0x1b00ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
281*9a01217eSSatha Rao /* [CN10K, .) */
282*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_KEYX_WAYX(a, b)    (0x1c00ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
283*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_VALUEX_WAYX(a, b)  (0x1c40ull | (uint64_t)(a) << 16 | (uint64_t)(b) << 3)
284*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_CFG		    (0x1c80ull)
285*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_CFG1		    (0x1c88ull)
286*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_HASH_KEY	    (0x1c90ull)
287*9a01217eSSatha Rao #define NIX_AF_SPI_TO_SA_HASH_VALUE	    (0x1ca0ull)
288*9a01217eSSatha Rao /* CN20K, .) */
289*9a01217eSSatha Rao #define NIX_AF_RX_IPSEC_VLAN_CFGX(a)	    (0x1d00ull | (uint64_t)(a) << 3)
290*9a01217eSSatha Rao #define NIX_AF_RX_IPSEC_QMAPX_DSCPX(a, b)   (0x1e00ull | (uint64_t)(a) << 6 | (uint64_t)(b) << 3)
291*9a01217eSSatha Rao #define NIX_AF_RX_SSO_GRPX_BP_CFG(a)	    (0x2000ull | (uint64_t)(a) << 3)
292*9a01217eSSatha Rao #define NIX_AF_RX_SSO_GRPX_BP_LEVEL(a)	    (0x3000ull | (uint64_t)(a) << 3)
293fa8f86a1SJerin Jacob #define NIX_AF_LFX_CFG(a) (0x4000ull | (uint64_t)(a) << 17)
294fa8f86a1SJerin Jacob /* [CN10K, .) */
295fa8f86a1SJerin Jacob #define NIX_AF_LINKX_CFG(a)		 (0x4010ull | (uint64_t)(a) << 17)
296fa8f86a1SJerin Jacob #define NIX_AF_LFX_SQS_CFG(a)		 (0x4020ull | (uint64_t)(a) << 17)
297fa8f86a1SJerin Jacob #define NIX_AF_LFX_TX_CFG2(a)		 (0x4028ull | (uint64_t)(a) << 17)
298fa8f86a1SJerin Jacob #define NIX_AF_LFX_SQS_BASE(a)		 (0x4030ull | (uint64_t)(a) << 17)
299fa8f86a1SJerin Jacob #define NIX_AF_LFX_RQS_CFG(a)		 (0x4040ull | (uint64_t)(a) << 17)
300fa8f86a1SJerin Jacob #define NIX_AF_LFX_RQS_BASE(a)		 (0x4050ull | (uint64_t)(a) << 17)
301fa8f86a1SJerin Jacob #define NIX_AF_LFX_CQS_CFG(a)		 (0x4060ull | (uint64_t)(a) << 17)
302fa8f86a1SJerin Jacob #define NIX_AF_LFX_CQS_BASE(a)		 (0x4070ull | (uint64_t)(a) << 17)
303fa8f86a1SJerin Jacob #define NIX_AF_LFX_TX_CFG(a)		 (0x4080ull | (uint64_t)(a) << 17)
304fa8f86a1SJerin Jacob #define NIX_AF_LFX_TX_PARSE_CFG(a)	 (0x4090ull | (uint64_t)(a) << 17)
305fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_CFG(a)		 (0x40a0ull | (uint64_t)(a) << 17)
306fa8f86a1SJerin Jacob #define NIX_AF_LFX_RSS_CFG(a)		 (0x40c0ull | (uint64_t)(a) << 17)
307fa8f86a1SJerin Jacob #define NIX_AF_LFX_RSS_BASE(a)		 (0x40d0ull | (uint64_t)(a) << 17)
308fa8f86a1SJerin Jacob #define NIX_AF_LFX_QINTS_CFG(a)		 (0x4100ull | (uint64_t)(a) << 17)
309fa8f86a1SJerin Jacob #define NIX_AF_LFX_QINTS_BASE(a)	 (0x4110ull | (uint64_t)(a) << 17)
310fa8f86a1SJerin Jacob #define NIX_AF_LFX_CINTS_CFG(a)		 (0x4120ull | (uint64_t)(a) << 17)
311fa8f86a1SJerin Jacob #define NIX_AF_LFX_CINTS_BASE(a)	 (0x4130ull | (uint64_t)(a) << 17)
312fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_IPSEC_CFG0(a)	 (0x4140ull | (uint64_t)(a) << 17)
313fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_IPSEC_CFG1(a)	 (0x4148ull | (uint64_t)(a) << 17)
314fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_IPSEC_DYNO_CFG(a)	 (0x4150ull | (uint64_t)(a) << 17)
315fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_IPSEC_DYNO_BASE(a) (0x4158ull | (uint64_t)(a) << 17)
316fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_IPSEC_SA_BASE(a)	 (0x4170ull | (uint64_t)(a) << 17)
317fa8f86a1SJerin Jacob #define NIX_AF_LFX_TX_STATUS(a)		 (0x4180ull | (uint64_t)(a) << 17)
318fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_VTAG_TYPEX(a, b)                                         \
319fa8f86a1SJerin Jacob 	(0x4200ull | (uint64_t)(a) << 17 | (uint64_t)(b) << 3)
320fa8f86a1SJerin Jacob #define NIX_AF_LFX_LOCKX(a, b)                                                 \
321fa8f86a1SJerin Jacob 	(0x4300ull | (uint64_t)(a) << 17 | (uint64_t)(b) << 3)
322fa8f86a1SJerin Jacob #define NIX_AF_LFX_TX_STATX(a, b)                                              \
323fa8f86a1SJerin Jacob 	(0x4400ull | (uint64_t)(a) << 17 | (uint64_t)(b) << 3)
324fa8f86a1SJerin Jacob #define NIX_AF_LFX_RX_STATX(a, b)                                              \
325fa8f86a1SJerin Jacob 	(0x4500ull | (uint64_t)(a) << 17 | (uint64_t)(b) << 3)
326fa8f86a1SJerin Jacob #define NIX_AF_LFX_RSS_GRPX(a, b)                                              \
327fa8f86a1SJerin Jacob 	(0x4600ull | (uint64_t)(a) << 17 | (uint64_t)(b) << 3)
328fa8f86a1SJerin Jacob #define NIX_AF_RX_NPC_MC_RCV	  (0x4700ull)
329fa8f86a1SJerin Jacob #define NIX_AF_RX_NPC_MC_DROP	  (0x4710ull)
330fa8f86a1SJerin Jacob #define NIX_AF_RX_NPC_MIRROR_RCV  (0x4720ull)
331fa8f86a1SJerin Jacob #define NIX_AF_RX_NPC_MIRROR_DROP (0x4730ull)
332fa8f86a1SJerin Jacob /* [CN10K, .) */
333fa8f86a1SJerin Jacob #define NIX_AF_LFX_VWQE_NORM_COMPL(a) (0x4740ull | (uint64_t)(a) << 17)
334fa8f86a1SJerin Jacob /* [CN10K, .) */
335fa8f86a1SJerin Jacob #define NIX_AF_LFX_VWQE_RLS_TIMEOUT(a) (0x4750ull | (uint64_t)(a) << 17)
336fa8f86a1SJerin Jacob /* [CN10K, .) */
337fa8f86a1SJerin Jacob #define NIX_AF_LFX_VWQE_HASH_FULL(a) (0x4760ull | (uint64_t)(a) << 17)
338fa8f86a1SJerin Jacob /* [CN10K, .) */
339fa8f86a1SJerin Jacob #define NIX_AF_LFX_VWQE_SA_FULL(a)     (0x4770ull | (uint64_t)(a) << 17)
340fa8f86a1SJerin Jacob #define NIX_AF_VWQE_HASH_FUNC_MASK     (0x47a0ull) /* [CN10K, .) */
341fa8f86a1SJerin Jacob #define NIX_AF_RX_ACTIVE_CYCLES_PCX(a) (0x4800ull | (uint64_t)(a) << 16)
342fa8f86a1SJerin Jacob /* [CN10K, .) */
343fa8f86a1SJerin Jacob #define NIX_AF_RX_LINKX_WRR_OUT_CFG(a) (0x4a00ull | (uint64_t)(a) << 16)
344fa8f86a1SJerin Jacob #define NIX_PRIV_AF_INT_CFG	       (0x8000000ull)
345fa8f86a1SJerin Jacob #define NIX_PRIV_LFX_CFG(a)	       (0x8000010ull | (uint64_t)(a) << 8)
346fa8f86a1SJerin Jacob #define NIX_PRIV_LFX_INT_CFG(a)	       (0x8000020ull | (uint64_t)(a) << 8)
347fa8f86a1SJerin Jacob #define NIX_AF_RVU_LF_CFG_DEBUG	       (0x8000030ull)
348fa8f86a1SJerin Jacob 
349fa8f86a1SJerin Jacob #define NIX_LF_RX_SECRETX(a)	 (0x0ull | (uint64_t)(a) << 3)
350fa8f86a1SJerin Jacob #define NIX_LF_CFG		 (0x100ull)
351fa8f86a1SJerin Jacob #define NIX_LF_GINT		 (0x200ull)
352fa8f86a1SJerin Jacob #define NIX_LF_GINT_W1S		 (0x208ull)
353fa8f86a1SJerin Jacob #define NIX_LF_GINT_ENA_W1C	 (0x210ull)
354fa8f86a1SJerin Jacob #define NIX_LF_GINT_ENA_W1S	 (0x218ull)
355fa8f86a1SJerin Jacob #define NIX_LF_ERR_INT		 (0x220ull)
356fa8f86a1SJerin Jacob #define NIX_LF_ERR_INT_W1S	 (0x228ull)
357fa8f86a1SJerin Jacob #define NIX_LF_ERR_INT_ENA_W1C	 (0x230ull)
358fa8f86a1SJerin Jacob #define NIX_LF_ERR_INT_ENA_W1S	 (0x238ull)
359fa8f86a1SJerin Jacob #define NIX_LF_RAS		 (0x240ull)
360fa8f86a1SJerin Jacob #define NIX_LF_RAS_W1S		 (0x248ull)
361fa8f86a1SJerin Jacob #define NIX_LF_RAS_ENA_W1C	 (0x250ull)
362fa8f86a1SJerin Jacob #define NIX_LF_RAS_ENA_W1S	 (0x258ull)
363fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_ERR_DBG	 (0x260ull)
364fa8f86a1SJerin Jacob #define NIX_LF_MNQ_ERR_DBG	 (0x270ull)
365fa8f86a1SJerin Jacob #define NIX_LF_SEND_ERR_DBG	 (0x280ull)
366fa8f86a1SJerin Jacob #define NIX_LF_TX_STATX(a)	 (0x300ull | (uint64_t)(a) << 3)
367fa8f86a1SJerin Jacob #define NIX_LF_RX_STATX(a)	 (0x400ull | (uint64_t)(a) << 3)
368fa8f86a1SJerin Jacob #define NIX_LF_OP_SENDX(a)	 (0x800ull | (uint64_t)(a) << 3)
369*9a01217eSSatha Rao #define NIX_LF_PTP_CLOCK	 (0x8f8ull) /* [CN20K, .) */
370fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_INT	 (0x900ull)
371fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_OCTS	 (0x910ull)
372fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_PKTS	 (0x920ull)
373fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_DROP_OCTS	 (0x930ull)
374fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_DROP_PKTS	 (0x940ull)
375fa8f86a1SJerin Jacob #define NIX_LF_RQ_OP_RE_PKTS	 (0x950ull)
376fa8f86a1SJerin Jacob #define NIX_LF_OP_IPSEC_DYNO_CNT (0x980ull)
377*9a01217eSSatha Rao #define NIX_LF_OP_VWQE_FLUSH	 (0x9a0ull) /* [CN10K, CN20K) */
378fa8f86a1SJerin Jacob #define NIX_LF_PL_OP_BAND_PROF	 (0x9c0ull) /* [CN10K, .) */
379fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_INT	 (0xa00ull)
380fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_OCTS	 (0xa10ull)
381fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_PKTS	 (0xa20ull)
382fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_STATUS	 (0xa30ull)
383fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_DROP_OCTS	 (0xa40ull)
384fa8f86a1SJerin Jacob #define NIX_LF_SQ_OP_DROP_PKTS	 (0xa50ull)
3853ae7a30eSSatha Rao #define NIX_LF_SQ_OP_AGE_DROP_OCTS (0xa60ull) /* [CN10K, .) */
3863ae7a30eSSatha Rao #define NIX_LF_SQ_OP_AGE_DROP_PKTS (0xa70ull) /* [CN10K, .) */
387fa8f86a1SJerin Jacob #define NIX_LF_CQ_OP_INT	 (0xb00ull)
388fa8f86a1SJerin Jacob #define NIX_LF_CQ_OP_DOOR	 (0xb30ull)
389fa8f86a1SJerin Jacob #define NIX_LF_CQ_OP_STATUS	 (0xb40ull)
390*9a01217eSSatha Rao #define NIX_LF_SSO_BP_OP_DOOR	 (0xb50ull) /* [CN20K, .) */
391*9a01217eSSatha Rao #define NIX_LF_SSO_BP_OP_LEVEL	 (0xb58ull) /* [CN20K, .) */
392*9a01217eSSatha Rao #define NIX_LF_SSO_BP_OP_INT	 (0xb60ull) /* [CN20K, .) */
393fa8f86a1SJerin Jacob #define NIX_LF_QINTX_CNT(a)	 (0xc00ull | (uint64_t)(a) << 12)
394fa8f86a1SJerin Jacob #define NIX_LF_QINTX_INT(a)	 (0xc10ull | (uint64_t)(a) << 12)
395fa8f86a1SJerin Jacob #define NIX_LF_QINTX_ENA_W1S(a)	 (0xc20ull | (uint64_t)(a) << 12)
396fa8f86a1SJerin Jacob #define NIX_LF_QINTX_ENA_W1C(a)	 (0xc30ull | (uint64_t)(a) << 12)
397fa8f86a1SJerin Jacob #define NIX_LF_CINTX_CNT(a)	 (0xd00ull | (uint64_t)(a) << 12)
398fa8f86a1SJerin Jacob #define NIX_LF_CINTX_WAIT(a)	 (0xd10ull | (uint64_t)(a) << 12)
399fa8f86a1SJerin Jacob #define NIX_LF_CINTX_INT(a)	 (0xd20ull | (uint64_t)(a) << 12)
400fa8f86a1SJerin Jacob #define NIX_LF_CINTX_INT_W1S(a)	 (0xd30ull | (uint64_t)(a) << 12)
401fa8f86a1SJerin Jacob #define NIX_LF_CINTX_ENA_W1S(a)	 (0xd40ull | (uint64_t)(a) << 12)
402fa8f86a1SJerin Jacob #define NIX_LF_CINTX_ENA_W1C(a)	 (0xd50ull | (uint64_t)(a) << 12)
403fa8f86a1SJerin Jacob /* [CN10K, .) */
404fa8f86a1SJerin Jacob #define NIX_LF_RX_GEN_COLOR_CONVX(a) (0x4740ull | (uint64_t)(a) << 3)
405fa8f86a1SJerin Jacob #define NIX_LF_RX_VLAN0_COLOR_CONV   (0x4760ull) /* [CN10K, .) */
406fa8f86a1SJerin Jacob #define NIX_LF_RX_VLAN1_COLOR_CONV   (0x4768ull) /* [CN10K, .) */
407fa8f86a1SJerin Jacob #define NIX_LF_RX_IIP_COLOR_CONV_LO  (0x4770ull) /* [CN10K, .) */
408fa8f86a1SJerin Jacob #define NIX_LF_RX_IIP_COLOR_CONV_HI  (0x4778ull) /* [CN10K, .) */
409fa8f86a1SJerin Jacob #define NIX_LF_RX_OIP_COLOR_CONV_LO  (0x4780ull) /* [CN10K, .) */
410fa8f86a1SJerin Jacob #define NIX_LF_RX_OIP_COLOR_CONV_HI  (0x4788ull) /* [CN10K, .) */
411fa8f86a1SJerin Jacob 
412fa8f86a1SJerin Jacob /* Enum offsets */
413fa8f86a1SJerin Jacob 
414*9a01217eSSatha Rao #define NIX_SSOERRINT_DOOR_ERR	(0x0ull) /*[CN20K, .) */
415*9a01217eSSatha Rao 
416fa8f86a1SJerin Jacob #define NIX_STAT_LF_TX_TX_UCAST (0x0ull)
417fa8f86a1SJerin Jacob #define NIX_STAT_LF_TX_TX_BCAST (0x1ull)
418fa8f86a1SJerin Jacob #define NIX_STAT_LF_TX_TX_MCAST (0x2ull)
419fa8f86a1SJerin Jacob #define NIX_STAT_LF_TX_TX_DROP	(0x3ull)
420fa8f86a1SJerin Jacob #define NIX_STAT_LF_TX_TX_OCTS	(0x4ull)
421fa8f86a1SJerin Jacob 
422fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_OCTS	      (0x0ull)
423fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_UCAST	      (0x1ull)
424fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_BCAST	      (0x2ull)
425fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_MCAST	      (0x3ull)
426fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DROP	      (0x4ull)
427fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DROP_OCTS   (0x5ull)
428fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_FCS	      (0x6ull)
429fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_ERR	      (0x7ull)
430fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DRP_BCAST   (0x8ull)
431fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DRP_MCAST   (0x9ull)
432fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DRP_L3BCAST (0xaull)
433fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_DRP_L3MCAST (0xbull)
434fa8f86a1SJerin Jacob 
435fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_GC_OCTS_PASSED (0xcull)  /* [CN10K, .) */
436fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_GC_PKTS_PASSED (0xdull)  /* [CN10K, .) */
437fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_YC_OCTS_PASSED (0xeull)  /* [CN10K, .) */
438fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_YC_PKTS_PASSED (0xfull)  /* [CN10K, .) */
439fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_RC_OCTS_PASSED (0x10ull) /* [CN10K, .) */
440fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_RC_PKTS_PASSED (0x11ull) /* [CN10K, .) */
441fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_GC_OCTS_DROP	 (0x12ull) /* [CN10K, .) */
442fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_GC_PKTS_DROP	 (0x13ull) /* [CN10K, .) */
443fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_YC_OCTS_DROP	 (0x14ull) /* [CN10K, .) */
444fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_YC_PKTS_DROP	 (0x15ull) /* [CN10K, .) */
445fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_RC_OCTS_DROP	 (0x16ull) /* [CN10K, .) */
446fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_RC_PKTS_DROP	 (0x17ull) /* [CN10K, .) */
447fa8f86a1SJerin Jacob #define NIX_STAT_LF_RX_RX_CPT_DROP_PKTS	 (0x18ull) /* [CN10K, .) */
4488fbad405SRahul Bhansali #define NIX_STAT_LF_RX_RX_IPSECD_DROP_PKTS (0x19ull) /* [CN10K, .) */
449fa8f86a1SJerin Jacob 
450fa8f86a1SJerin Jacob #define CGX_RX_PKT_CNT		 (0x0ull) /* [CN9K, CN10K) */
451fa8f86a1SJerin Jacob #define CGX_RX_OCT_CNT		 (0x1ull) /* [CN9K, CN10K) */
452fa8f86a1SJerin Jacob #define CGX_RX_PAUSE_PKT_CNT	 (0x2ull) /* [CN9K, CN10K) */
453fa8f86a1SJerin Jacob #define CGX_RX_PAUSE_OCT_CNT	 (0x3ull) /* [CN9K, CN10K) */
454fa8f86a1SJerin Jacob #define CGX_RX_DMAC_FILT_PKT_CNT (0x4ull) /* [CN9K, CN10K) */
455fa8f86a1SJerin Jacob #define CGX_RX_DMAC_FILT_OCT_CNT (0x5ull) /* [CN9K, CN10K) */
456fa8f86a1SJerin Jacob #define CGX_RX_FIFO_DROP_PKT_CNT (0x6ull) /* [CN9K, CN10K) */
457fa8f86a1SJerin Jacob #define CGX_RX_FIFO_DROP_OCT_CNT (0x7ull) /* [CN9K, CN10K) */
458fa8f86a1SJerin Jacob #define CGX_RX_ERR_CNT		 (0x8ull) /* [CN9K, CN10K) */
459fa8f86a1SJerin Jacob 
460fa8f86a1SJerin Jacob #define CGX_TX_COLLISION_DROP	  (0x0ull)  /* [CN9K, CN10K) */
461fa8f86a1SJerin Jacob #define CGX_TX_FRAME_DEFER_CNT	  (0x1ull)  /* [CN9K, CN10K) */
462fa8f86a1SJerin Jacob #define CGX_TX_MULTIPLE_COLLISION (0x2ull)  /* [CN9K, CN10K) */
463fa8f86a1SJerin Jacob #define CGX_TX_SINGLE_COLLISION	  (0x3ull)  /* [CN9K, CN10K) */
464fa8f86a1SJerin Jacob #define CGX_TX_OCT_CNT		  (0x4ull)  /* [CN9K, CN10K) */
465fa8f86a1SJerin Jacob #define CGX_TX_PKT_CNT		  (0x5ull)  /* [CN9K, CN10K) */
466fa8f86a1SJerin Jacob #define CGX_TX_1_63_PKT_CNT	  (0x6ull)  /* [CN9K, CN10K) */
467fa8f86a1SJerin Jacob #define CGX_TX_64_PKT_CNT	  (0x7ull)  /* [CN9K, CN10K) */
468fa8f86a1SJerin Jacob #define CGX_TX_65_127_PKT_CNT	  (0x8ull)  /* [CN9K, CN10K) */
469fa8f86a1SJerin Jacob #define CGX_TX_128_255_PKT_CNT	  (0x9ull)  /* [CN9K, CN10K) */
470fa8f86a1SJerin Jacob #define CGX_TX_256_511_PKT_CNT	  (0xaull)  /* [CN9K, CN10K) */
471fa8f86a1SJerin Jacob #define CGX_TX_512_1023_PKT_CNT	  (0xbull)  /* [CN9K, CN10K) */
472fa8f86a1SJerin Jacob #define CGX_TX_1024_1518_PKT_CNT  (0xcull)  /* [CN9K, CN10K) */
473fa8f86a1SJerin Jacob #define CGX_TX_1519_MAX_PKT_CNT	  (0xdull)  /* [CN9K, CN10K) */
474fa8f86a1SJerin Jacob #define CGX_TX_BCAST_PKTS	  (0xeull)  /* [CN9K, CN10K) */
475fa8f86a1SJerin Jacob #define CGX_TX_MCAST_PKTS	  (0xfull)  /* [CN9K, CN10K) */
476fa8f86a1SJerin Jacob #define CGX_TX_UFLOW_PKTS	  (0x10ull) /* [CN9K, CN10K) */
477fa8f86a1SJerin Jacob #define CGX_TX_PAUSE_PKTS	  (0x11ull) /* [CN9K, CN10K) */
478fa8f86a1SJerin Jacob 
479fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_OCT_CNT		  (0x0ull)  /* [CN10K, .) */
480fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_OCT_RECV_OK	  (0x1ull)  /* [CN10K, .) */
481fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_ALIG_ERR	  (0x2ull)  /* [CN10K, .) */
482fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CTRL_FRM_RECV	  (0x3ull)  /* [CN10K, .) */
483fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_FRM_LONG	  (0x4ull)  /* [CN10K, .) */
484fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_LEN_ERR		  (0x5ull)  /* [CN10K, .) */
485fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_FRM_RECV	  (0x6ull)  /* [CN10K, .) */
486fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_FRM_SEQ_ERR	  (0x7ull)  /* [CN10K, .) */
487fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_VLAN_OK		  (0x8ull)  /* [CN10K, .) */
488fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_IN_ERR		  (0x9ull)  /* [CN10K, .) */
489fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_IN_UCAST_PKT	  (0xaull)  /* [CN10K, .) */
490fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_IN_MCAST_PKT	  (0xbull)  /* [CN10K, .) */
491fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_IN_BCAST_PKT	  (0xcull)  /* [CN10K, .) */
492fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_DRP_EVENTS	  (0xdull)  /* [CN10K, .) */
493fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_PKT		  (0xeull)  /* [CN10K, .) */
494fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_UNDER_SIZE	  (0xfull)  /* [CN10K, .) */
495fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_1_64_PKT_CNT	  (0x10ull) /* [CN10K, .) */
496fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_65_127_PKT_CNT	  (0x11ull) /* [CN10K, .) */
497fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_128_255_PKT_CNT	  (0x12ull) /* [CN10K, .) */
498fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_256_511_PKT_CNT	  (0x13ull) /* [CN10K, .) */
499fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_512_1023_PKT_CNT  (0x14ull) /* [CN10K, .) */
500fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_1024_1518_PKT_CNT (0x15ull) /* [CN10K, .) */
501fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_1519_MAX_PKT_CNT  (0x16ull) /* [CN10K, .) */
502fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_OVER_SIZE	  (0x17ull) /* [CN10K, .) */
503fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_JABBER		  (0x18ull) /* [CN10K, .) */
504fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_ETH_FRAGS	  (0x19ull) /* [CN10K, .) */
505fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_0	  (0x1aull) /* [CN10K, .) */
506fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_1	  (0x1bull) /* [CN10K, .) */
507fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_2	  (0x1cull) /* [CN10K, .) */
508fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_3	  (0x1dull) /* [CN10K, .) */
509fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_4	  (0x1eull) /* [CN10K, .) */
510fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_5	  (0x1full) /* [CN10K, .) */
511fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_6	  (0x20ull) /* [CN10K, .) */
512fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_7	  (0x21ull) /* [CN10K, .) */
513fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_8	  (0x22ull) /* [CN10K, .) */
514fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_9	  (0x23ull) /* [CN10K, .) */
515fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_10	  (0x24ull) /* [CN10K, .) */
516fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_11	  (0x25ull) /* [CN10K, .) */
517fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_12	  (0x26ull) /* [CN10K, .) */
518fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_13	  (0x27ull) /* [CN10K, .) */
519fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_14	  (0x28ull) /* [CN10K, .) */
520fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_CBFC_CLASS_15	  (0x29ull) /* [CN10K, .) */
521fa8f86a1SJerin Jacob #define RPM_MTI_STAT_RX_MAC_CONTROL	  (0x2aull) /* [CN10K, .) */
522fa8f86a1SJerin Jacob 
523fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_OCT_CNT		   (0x0ull)  /* [CN10K, .) */
524fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_OCT_TX_OK	   (0x1ull)  /* [CN10K, .) */
525fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_PAUSE_MAC_CTRL	   (0x2ull)  /* [CN10K, .) */
526fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_FRAMES_OK	   (0x3ull)  /* [CN10K, .) */
527fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_VLAN_OK		   (0x4ull)  /* [CN10K, .) */
528fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_OUT_ERR		   (0x5ull)  /* [CN10K, .) */
529fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_UCAST_PKT_CNT	   (0x6ull)  /* [CN10K, .) */
530fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_MCAST_PKT_CNT	   (0x7ull)  /* [CN10K, .) */
531fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_BCAST_PKT_CNT	   (0x8ull)  /* [CN10K, .) */
532fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_1_64_PKT_CNT	   (0x9ull)  /* [CN10K, .) */
533fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_65_127_PKT_CNT	   (0xaull)  /* [CN10K, .) */
534fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_128_255_PKT_CNT	   (0xbull)  /* [CN10K, .) */
535fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_256_511_PKT_CNT	   (0xcull)  /* [CN10K, .) */
536fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_512_1023_PKT_CNT   (0xdull)  /* [CN10K, .) */
537fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_1024_1518_PKT_CNT  (0xeull)  /* [CN10K, .) */
538fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_1519_MAX_PKT_CNT   (0xfull)  /* [CN10K, .) */
539fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_0	   (0x10ull) /* [CN10K, .) */
540fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_1	   (0x11ull) /* [CN10K, .) */
541fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_2	   (0x12ull) /* [CN10K, .) */
542fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_3	   (0x13ull) /* [CN10K, .) */
543fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_4	   (0x14ull) /* [CN10K, .) */
544fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_5	   (0x15ull) /* [CN10K, .) */
545fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_6	   (0x16ull) /* [CN10K, .) */
546fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_7	   (0x17ull) /* [CN10K, .) */
547fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_8	   (0x18ull) /* [CN10K, .) */
548fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_9	   (0x19ull) /* [CN10K, .) */
549fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_10	   (0x1aull) /* [CN10K, .) */
550fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_11	   (0x1bull) /* [CN10K, .) */
551fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_12	   (0x1cull) /* [CN10K, .) */
552fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_13	   (0x1dull) /* [CN10K, .) */
553fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_14	   (0x1eull) /* [CN10K, .) */
554fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_CBFC_CLASS_15	   (0x1full) /* [CN10K, .) */
555fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_MAC_CONTROL_FRAMES (0x20ull) /* [CN10K, .) */
556fa8f86a1SJerin Jacob #define RPM_MTI_STAT_TX_PKT_CNT		   (0x21ull) /* [CN10K, .) */
557fa8f86a1SJerin Jacob 
558fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQ_OOR	     (0x0ull)
559fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQ_CTX_FAULT     (0x1ull)
560fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQ_CTX_POISON    (0x2ull)
561fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQ_DISABLED	     (0x3ull)
562fa8f86a1SJerin Jacob #define NIX_SQOPERR_MAX_SQE_SIZE_ERR (0x4ull)
563fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQE_OFLOW	     (0x5ull)
564fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQB_NULL	     (0x6ull)
565fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQB_FAULT	     (0x7ull)
566fa8f86a1SJerin Jacob #define NIX_SQOPERR_SQE_SIZEM1_ZERO  (0x8ull) /* [CN10K, .) */
567fa8f86a1SJerin Jacob 
568fa8f86a1SJerin Jacob #define NIX_SQINT_LMT_ERR	 (0x0ull)
569fa8f86a1SJerin Jacob #define NIX_SQINT_MNQ_ERR	 (0x1ull)
570fa8f86a1SJerin Jacob #define NIX_SQINT_SEND_ERR	 (0x2ull)
571fa8f86a1SJerin Jacob #define NIX_SQINT_SQB_ALLOC_FAIL (0x3ull)
572fa8f86a1SJerin Jacob 
573fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_GOOD		   (0x0ull)
574fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SQ_CTX_FAULT	   (0x1ull)
575fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SQ_CTX_POISON	   (0x2ull)
576fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SQB_FAULT	   (0x3ull)
577fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SQB_POISON	   (0x4ull)
578fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_HDR_ERR	   (0x5ull)
579fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_EXT_ERR	   (0x6ull)
580fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_JUMP_FAULT	   (0x7ull)
581fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_JUMP_POISON	   (0x8ull)
582fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_CRC_ERR	   (0x10ull)
583fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_IMM_ERR	   (0x11ull)
584fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_SG_ERR	   (0x12ull)
585fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_MEM_ERR	   (0x13ull)
586fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_INVALID_SUBDC	   (0x14ull)
587fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SUBDC_ORDER_ERR	   (0x15ull)
588fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_DATA_FAULT	   (0x16ull)
589fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_DATA_POISON	   (0x17ull)
590fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_DROP_ACTION	   (0x20ull)
591fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_LOCK_VIOL	   (0x21ull)
592fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_UCAST_CHAN_ERR (0x22ull)
593fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_MCAST_CHAN_ERR (0x23ull)
594fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_MCAST_ABORT	   (0x24ull)
595fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_VTAG_PTR_ERR   (0x25ull)
596fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_NPC_VTAG_SIZE_ERR  (0x26ull)
597fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_MEM_FAULT	   (0x27ull)
598fa8f86a1SJerin Jacob #define NIX_SEND_STATUS_SEND_STATS_ERR	   (0x28ull)
599*9a01217eSSatha Rao #define NIX_SEND_STATUS_SEND_HDR_DROP	   (0x29ull) /* [CN20K, .) */
600fa8f86a1SJerin Jacob 
601fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_NOP			     (0x0ull)
602fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_ADD_PKT_CNT		     (0x1ull)
603fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_ADD_BYTE_CNT		     (0x2ull)
604fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_ADD_PKT_BYTE_CNT	     (0x3ull)
605fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_UPDATE_PKT_CNT_ON_DROP	     (0x4ull)
606fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_UPDATE_BYTE_CNT_ON_DROP     (0x5ull)
607fa8f86a1SJerin Jacob #define NIX_SENDSTATSALG_UPDATE_PKT_BYTE_CNT_ON_DROP (0x6ull)
608fa8f86a1SJerin Jacob 
609fa8f86a1SJerin Jacob #define NIX_SENDMEMDSZ_B64 (0x0ull)
610fa8f86a1SJerin Jacob #define NIX_SENDMEMDSZ_B32 (0x1ull)
611fa8f86a1SJerin Jacob #define NIX_SENDMEMDSZ_B16 (0x2ull)
612fa8f86a1SJerin Jacob #define NIX_SENDMEMDSZ_B8  (0x3ull)
613fa8f86a1SJerin Jacob 
614fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SET	(0x0ull)
615fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SETTSTMP (0x1ull)
616fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SETRSLT	(0x2ull)
617fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_ADD	(0x8ull)
618fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SUB	(0x9ull)
619fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_ADDLEN	(0xaull)
620fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SUBLEN	(0xbull)
621fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_ADDMBUF	(0xcull)
622fa8f86a1SJerin Jacob #define NIX_SENDMEMALG_SUBMBUF	(0xdull)
623fa8f86a1SJerin Jacob 
624fa8f86a1SJerin Jacob #define NIX_SUBDC_NOP		(0x0ull)
625fa8f86a1SJerin Jacob #define NIX_SUBDC_EXT		(0x1ull)
626fa8f86a1SJerin Jacob #define NIX_SUBDC_CRC		(0x2ull)
627fa8f86a1SJerin Jacob #define NIX_SUBDC_IMM		(0x3ull)
628fa8f86a1SJerin Jacob #define NIX_SUBDC_SG		(0x4ull)
629fa8f86a1SJerin Jacob #define NIX_SUBDC_MEM		(0x5ull)
630fa8f86a1SJerin Jacob #define NIX_SUBDC_JUMP		(0x6ull)
631fa8f86a1SJerin Jacob #define NIX_SUBDC_WORK		(0x7ull)
632fa8f86a1SJerin Jacob #define NIX_SUBDC_SG2		(0x8ull) /* [CN10K, .) */
633fa8f86a1SJerin Jacob #define NIX_SUBDC_AGE_AND_STATS (0x9ull) /* [CN10K, .) */
634*9a01217eSSatha Rao #define NIX_SUBDC_COMPID	(0xaull) /* [CN20K, .) */
635fa8f86a1SJerin Jacob #define NIX_SUBDC_SOD		(0xfull)
636fa8f86a1SJerin Jacob 
637fa8f86a1SJerin Jacob #define NIX_STYPE_STF (0x0ull)
638fa8f86a1SJerin Jacob #define NIX_STYPE_STT (0x1ull)
639fa8f86a1SJerin Jacob #define NIX_STYPE_STP (0x2ull)
640fa8f86a1SJerin Jacob 
641fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_DROP	     (0x0ull)
642fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_UCAST	     (0x1ull)
643fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_UCAST_IPSEC  (0x2ull)
644fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_MCAST	     (0x3ull)
645fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_RSS	     (0x4ull)
646fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_PF_FUNC_DROP (0x5ull)
647fa8f86a1SJerin Jacob #define NIX_RX_ACTIONOP_MIRROR	     (0x6ull)
648b1f677d4SSatheesh Paul #define NIX_RX_ACTIONOP_DEFAULT	     (0xfull)
649fa8f86a1SJerin Jacob 
650fa8f86a1SJerin Jacob #define NIX_RX_VTAGACTION_VTAG0_RELPTR (0x0ull)
651fa8f86a1SJerin Jacob #define NIX_RX_VTAGACTION_VTAG1_RELPTR (0x4ull)
652fa8f86a1SJerin Jacob #define NIX_RX_VTAGACTION_VTAG_VALID   (0x1ull)
653fa8f86a1SJerin Jacob #define NIX_TX_VTAGACTION_VTAG0_RELPTR (sizeof(struct nix_inst_hdr_s) + 2 * 6)
654fa8f86a1SJerin Jacob #define NIX_TX_VTAGACTION_VTAG1_RELPTR                                         \
655fa8f86a1SJerin Jacob 	(sizeof(struct nix_inst_hdr_s) + 2 * 6 + 4)
656fa8f86a1SJerin Jacob #define NIX_RQINT_DROP (0x0ull)
657fa8f86a1SJerin Jacob #define NIX_RQINT_RED  (0x1ull)
658fa8f86a1SJerin Jacob #define NIX_RQINT_R2   (0x2ull)
659fa8f86a1SJerin Jacob #define NIX_RQINT_R3   (0x3ull)
660fa8f86a1SJerin Jacob #define NIX_RQINT_R4   (0x4ull)
661fa8f86a1SJerin Jacob #define NIX_RQINT_R5   (0x5ull)
662fa8f86a1SJerin Jacob #define NIX_RQINT_R6   (0x6ull)
663fa8f86a1SJerin Jacob #define NIX_RQINT_R7   (0x7ull)
664fa8f86a1SJerin Jacob 
665fa8f86a1SJerin Jacob #define NIX_MAXSQESZ_W16 (0x0ull)
666fa8f86a1SJerin Jacob #define NIX_MAXSQESZ_W8	 (0x1ull)
667fa8f86a1SJerin Jacob 
668fa8f86a1SJerin Jacob #define NIX_LSOALG_NOP	      (0x0ull)
669fa8f86a1SJerin Jacob #define NIX_LSOALG_ADD_SEGNUM (0x1ull)
670fa8f86a1SJerin Jacob #define NIX_LSOALG_ADD_PAYLEN (0x2ull)
671fa8f86a1SJerin Jacob #define NIX_LSOALG_ADD_OFFSET (0x3ull)
672fa8f86a1SJerin Jacob #define NIX_LSOALG_TCP_FLAGS  (0x4ull)
673*9a01217eSSatha Rao #define NIX_LSOALG_ALT_FLAGS  (0x5ull) /* [CN20K, .) */
674*9a01217eSSatha Rao 
675*9a01217eSSatha Rao #define NIX_METER_CFG_RFC_2698 (0x0ull) /* [CN20K, .) */
676*9a01217eSSatha Rao #define NIX_METER_CFG_RFC_2697 (0x1ull) /* [CN20K, .) */
677*9a01217eSSatha Rao #define NIX_METER_CFG_RFC_4115 (0x2ull) /* [CN20K, .) */
678*9a01217eSSatha Rao 
679*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_AQ	(0x0ull)
680*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_C	(0x1ull)
681*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_CINT	(0x2ull)
682*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_MC	(0x3ull)
683*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_PKT	(0x4ull)
684*9a01217eSSatha Rao #define NIX_NDC_RX_PORT_RQ	(0x5ull)
685fa8f86a1SJerin Jacob 
686fa8f86a1SJerin Jacob #define NIX_MNQERR_SQ_CTX_FAULT	    (0x0ull)
687fa8f86a1SJerin Jacob #define NIX_MNQERR_SQ_CTX_POISON    (0x1ull)
688fa8f86a1SJerin Jacob #define NIX_MNQERR_SQB_FAULT	    (0x2ull)
689fa8f86a1SJerin Jacob #define NIX_MNQERR_SQB_POISON	    (0x3ull)
690fa8f86a1SJerin Jacob #define NIX_MNQERR_TOTAL_ERR	    (0x4ull)
691fa8f86a1SJerin Jacob #define NIX_MNQERR_LSO_ERR	    (0x5ull)
692fa8f86a1SJerin Jacob #define NIX_MNQERR_CQ_QUERY_ERR	    (0x6ull)
693fa8f86a1SJerin Jacob #define NIX_MNQERR_MAX_SQE_SIZE_ERR (0x7ull)
694fa8f86a1SJerin Jacob #define NIX_MNQERR_MAXLEN_ERR	    (0x8ull)
695fa8f86a1SJerin Jacob #define NIX_MNQERR_SQE_SIZEM1_ZERO  (0x9ull)
696fa8f86a1SJerin Jacob 
697fa8f86a1SJerin Jacob #define NIX_MDTYPE_RSVD	 (0x0ull)
698fa8f86a1SJerin Jacob #define NIX_MDTYPE_FLUSH (0x1ull)
699fa8f86a1SJerin Jacob #define NIX_MDTYPE_PMD	 (0x2ull)
700fa8f86a1SJerin Jacob 
701fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_LMT (0x0ull)
702fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_ENQ (0x1ull)
703fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_MNQ (0x2ull)
704fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_DEQ (0x3ull)
705fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_DMA (0x4ull)
706fa8f86a1SJerin Jacob #define NIX_NDC_TX_PORT_XQE (0x5ull)
707fa8f86a1SJerin Jacob 
708fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_AQ   (0x0ull)
709fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_CQ   (0x1ull)
710fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_CINT (0x2ull)
711fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_MC   (0x3ull)
712fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_PKT  (0x4ull)
713fa8f86a1SJerin Jacob #define NIX_NDC_RX_PORT_RQ   (0x5ull)
714fa8f86a1SJerin Jacob 
715fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_NONE	   (0x0ull)
716fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_PARTIAL   (0x1ull)
717fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_JABBER	   (0x2ull)
718fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_FCS	   (0x7ull)
719fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_FCS_RCV   (0x8ull)
720fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_TERMINATE (0x9ull)
721fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_RX_CTL	   (0xbull)
722fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_SKIP	   (0xcull)
723fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_RE_DMAPKT	   (0xfull)
724fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_UNDERSIZE	   (0x10ull)
725fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_OVERSIZE	   (0x11ull)
726fa8f86a1SJerin Jacob #define NIX_RE_OPCODE_OL2_LENMISM  (0x12ull)
727fa8f86a1SJerin Jacob 
728fa8f86a1SJerin Jacob #define NIX_REDALG_STD	   (0x0ull)
729fa8f86a1SJerin Jacob #define NIX_REDALG_SEND	   (0x1ull)
730fa8f86a1SJerin Jacob #define NIX_REDALG_STALL   (0x2ull)
731fa8f86a1SJerin Jacob #define NIX_REDALG_DISCARD (0x3ull)
732fa8f86a1SJerin Jacob 
733fa8f86a1SJerin Jacob #define NIX_RX_BAND_PROF_ACTIONRESULT_PASS (0x0ull) /* [CN10K, .) */
734fa8f86a1SJerin Jacob #define NIX_RX_BAND_PROF_ACTIONRESULT_DROP (0x1ull) /* [CN10K, .) */
735fa8f86a1SJerin Jacob #define NIX_RX_BAND_PROF_ACTIONRESULT_RED  (0x2ull) /* [CN10K, .) */
736fa8f86a1SJerin Jacob 
737fa8f86a1SJerin Jacob #define NIX_RX_BAND_PROF_LAYER_LEAF    (0x0ull) /* [CN10K, .) */
738cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_LAYER_INVALID (0x1ull) /* [CN10K, .) */
739cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_LAYER_MIDDLE  (0x2ull) /* [CN10K, .) */
740cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_LAYER_TOP     (0x3ull) /* [CN10K, .) */
741cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_LAYER_MAX     (0x4ull) /* [CN10K, .) */
742cf8f6aa1SSunil Kumar Kori 
743cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_PC_MODE_VLAN (0x0ull) /* [CN10K, .) */
744cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_PC_MODE_DSCP (0x1ull) /* [CN10K, .) */
745cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_PC_MODE_GEN  (0x2ull) /* [CN10K, .) */
746cf8f6aa1SSunil Kumar Kori #define NIX_RX_BAND_PROF_PC_MODE_RSVD (0x3ull) /* [CN10K, .) */
747fa8f86a1SJerin Jacob 
748fa8f86a1SJerin Jacob #define NIX_RX_COLORRESULT_GREEN  (0x0ull) /* [CN10K, .) */
749fa8f86a1SJerin Jacob #define NIX_RX_COLORRESULT_YELLOW (0x1ull) /* [CN10K, .) */
750fa8f86a1SJerin Jacob #define NIX_RX_COLORRESULT_RED	  (0x2ull) /* [CN10K, .) */
751fa8f86a1SJerin Jacob 
752fa8f86a1SJerin Jacob #define NIX_RX_MCOP_RQ	(0x0ull)
753fa8f86a1SJerin Jacob #define NIX_RX_MCOP_RSS (0x1ull)
754fa8f86a1SJerin Jacob 
755fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_NPC_RESULT_ERR (0x2ull)
756fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_MCAST_FAULT    (0x4ull)
757fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_MIRROR_FAULT   (0x5ull)
758fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_MCAST_POISON   (0x6ull)
759fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_MIRROR_POISON  (0x7ull)
760fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_DATA_FAULT     (0x8ull)
761fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_MEMOUT	       (0x9ull)
762fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_BUFS_OFLOW     (0xaull)
763fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_OL3_LEN	       (0x10ull)
764fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_OL4_LEN	       (0x11ull)
765fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_OL4_CHK	       (0x12ull)
766fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_OL4_PORT       (0x13ull)
767fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_IL3_LEN	       (0x20ull)
768fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_IL4_LEN	       (0x21ull)
769fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_IL4_CHK	       (0x22ull)
770fa8f86a1SJerin Jacob #define NIX_RX_PERRCODE_IL4_PORT       (0x23ull)
771fa8f86a1SJerin Jacob 
772fa8f86a1SJerin Jacob #define NIX_SA_ALG_NON_MS     (0x0ull) /* [CN10K, .) */
773*9a01217eSSatha Rao #define NIX_SA_ALG_MS_31_28   (0x1ull) /* [CN10K, .) */
774*9a01217eSSatha Rao #define NIX_SA_ALG_MS_27_25   (0x2ull) /* [CN10K, .) */
775*9a01217eSSatha Rao #define NIX_SA_ALG_MS_28_25   (0x3ull) /* [CN10K, .) */
776fa8f86a1SJerin Jacob 
777fa8f86a1SJerin Jacob #define NIX_SENDCRCALG_CRC32  (0x0ull)
778fa8f86a1SJerin Jacob #define NIX_SENDCRCALG_CRC32C (0x1ull)
779fa8f86a1SJerin Jacob #define NIX_SENDCRCALG_ONES16 (0x2ull)
780*9a01217eSSatha Rao #define NIX_SENDCRCALG_INVCRC (0x3ull) /* [CN10K, .) */
781fa8f86a1SJerin Jacob 
782fa8f86a1SJerin Jacob #define NIX_SENDL3TYPE_NONE	 (0x0ull)
783fa8f86a1SJerin Jacob #define NIX_SENDL3TYPE_IP4	 (0x2ull)
784fa8f86a1SJerin Jacob #define NIX_SENDL3TYPE_IP4_CKSUM (0x3ull)
785fa8f86a1SJerin Jacob #define NIX_SENDL3TYPE_IP6	 (0x4ull)
786fa8f86a1SJerin Jacob 
787fa8f86a1SJerin Jacob #define NIX_SENDL4TYPE_NONE	  (0x0ull)
788fa8f86a1SJerin Jacob #define NIX_SENDL4TYPE_TCP_CKSUM  (0x1ull)
789fa8f86a1SJerin Jacob #define NIX_SENDL4TYPE_SCTP_CKSUM (0x2ull)
790fa8f86a1SJerin Jacob #define NIX_SENDL4TYPE_UDP_CKSUM  (0x3ull)
791fa8f86a1SJerin Jacob 
792fa8f86a1SJerin Jacob #define NIX_SENDLDTYPE_LDD  (0x0ull)
793fa8f86a1SJerin Jacob #define NIX_SENDLDTYPE_LDT  (0x1ull)
794fa8f86a1SJerin Jacob #define NIX_SENDLDTYPE_LDWB (0x2ull)
795fa8f86a1SJerin Jacob 
796fa8f86a1SJerin Jacob #define NIX_XQESZ_W64 (0x0ull)
797fa8f86a1SJerin Jacob #define NIX_XQESZ_W16 (0x1ull)
798fa8f86a1SJerin Jacob 
799fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_INVALID   (0x0ull)
800fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RX	       (0x1ull)
801fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RX_IPSECS (0x2ull)
802fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RX_IPSECH (0x3ull)
803fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RX_IPSECD (0x4ull)
804*9a01217eSSatha Rao #define NIX_XQE_TYPE_RX_VWQE   (0x5ull) /* [CN10K, CN20K) */
805fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_6     (0x6ull)
806fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_7     (0x7ull)
807fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_SEND      (0x8ull)
808fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_9     (0x9ull)
809fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_A     (0xAull)
810fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_B     (0xBull)
811fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_C     (0xCull)
812fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_D     (0xDull)
813fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_E     (0xEull)
814fa8f86a1SJerin Jacob #define NIX_XQE_TYPE_RES_F     (0xFull)
815fa8f86a1SJerin Jacob 
816fa8f86a1SJerin Jacob #define NIX_TX_VTAGOP_NOP     (0x0ull)
817fa8f86a1SJerin Jacob #define NIX_TX_VTAGOP_INSERT  (0x1ull)
818fa8f86a1SJerin Jacob #define NIX_TX_VTAGOP_REPLACE (0x2ull)
819fa8f86a1SJerin Jacob 
820fa8f86a1SJerin Jacob #define NIX_VTAGSIZE_T4 (0x0ull)
821fa8f86a1SJerin Jacob #define NIX_VTAGSIZE_T8 (0x1ull)
822fa8f86a1SJerin Jacob 
823fa8f86a1SJerin Jacob #define NIX_TXLAYER_OL3 (0x0ull)
824fa8f86a1SJerin Jacob #define NIX_TXLAYER_OL4 (0x1ull)
825fa8f86a1SJerin Jacob #define NIX_TXLAYER_IL3 (0x2ull)
826fa8f86a1SJerin Jacob #define NIX_TXLAYER_IL4 (0x3ull)
827fa8f86a1SJerin Jacob 
828fa8f86a1SJerin Jacob #define NIX_TX_ACTIONOP_DROP	      (0x0ull)
829fa8f86a1SJerin Jacob #define NIX_TX_ACTIONOP_UCAST_DEFAULT (0x1ull)
830fa8f86a1SJerin Jacob #define NIX_TX_ACTIONOP_UCAST_CHAN    (0x2ull)
831fa8f86a1SJerin Jacob #define NIX_TX_ACTIONOP_MCAST	      (0x3ull)
832fa8f86a1SJerin Jacob #define NIX_TX_ACTIONOP_DROP_VIOL     (0x5ull)
833fa8f86a1SJerin Jacob 
834fa8f86a1SJerin Jacob #define NIX_AQ_COMP_NOTDONE	   (0x0ull)
835fa8f86a1SJerin Jacob #define NIX_AQ_COMP_GOOD	   (0x1ull)
836fa8f86a1SJerin Jacob #define NIX_AQ_COMP_SWERR	   (0x2ull)
837fa8f86a1SJerin Jacob #define NIX_AQ_COMP_CTX_POISON	   (0x3ull)
838fa8f86a1SJerin Jacob #define NIX_AQ_COMP_CTX_FAULT	   (0x4ull)
839fa8f86a1SJerin Jacob #define NIX_AQ_COMP_LOCKERR	   (0x5ull)
840fa8f86a1SJerin Jacob #define NIX_AQ_COMP_SQB_ALLOC_FAIL (0x6ull)
841fa8f86a1SJerin Jacob 
842fa8f86a1SJerin Jacob #define NIX_AF_INT_VEC_RVU     (0x0ull)
843fa8f86a1SJerin Jacob #define NIX_AF_INT_VEC_GEN     (0x1ull)
844fa8f86a1SJerin Jacob #define NIX_AF_INT_VEC_AQ_DONE (0x2ull)
845fa8f86a1SJerin Jacob #define NIX_AF_INT_VEC_AF_ERR  (0x3ull)
846fa8f86a1SJerin Jacob #define NIX_AF_INT_VEC_POISON  (0x4ull)
847fa8f86a1SJerin Jacob 
848fa8f86a1SJerin Jacob #define NIX_AQINT_GEN_RX_MCAST_DROP  (0x0ull)
849fa8f86a1SJerin Jacob #define NIX_AQINT_GEN_RX_MIRROR_DROP (0x1ull)
850fa8f86a1SJerin Jacob #define NIX_AQINT_GEN_TL1_DRAIN	     (0x3ull)
851fa8f86a1SJerin Jacob #define NIX_AQINT_GEN_SMQ_FLUSH_DONE (0x4ull)
852fa8f86a1SJerin Jacob 
853fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_NOP    (0x0ull)
854fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_INIT   (0x1ull)
855fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_WRITE  (0x2ull)
856fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_READ   (0x3ull)
857fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_LOCK   (0x4ull)
858fa8f86a1SJerin Jacob #define NIX_AQ_INSTOP_UNLOCK (0x5ull)
859fa8f86a1SJerin Jacob 
860fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_RQ	       (0x0ull)
861fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_SQ	       (0x1ull)
862fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_CQ	       (0x2ull)
863fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_MCE       (0x3ull)
864fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_RSS       (0x4ull)
865fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_DYNO      (0x5ull)
866fa8f86a1SJerin Jacob #define NIX_AQ_CTYPE_BAND_PROF (0x6ull) /* [CN10K, .) */
867fa8f86a1SJerin Jacob 
868*9a01217eSSatha Rao #define NIX_CQERRINT_DOOR_ERR  (0x0ull)
869*9a01217eSSatha Rao #define NIX_CQERRINT_WR_FULL   (0x1ull)
870*9a01217eSSatha Rao #define NIX_CQERRINT_CQE_FAULT (0x2ull)
871*9a01217eSSatha Rao #define NIX_CQERRINT_CPT_DROP  (0x3ull) /* [CN10KB, .) */
872*9a01217eSSatha Rao 
873fa8f86a1SJerin Jacob #define NIX_COLORRESULT_GREEN	 (0x0ull)
874fa8f86a1SJerin Jacob #define NIX_COLORRESULT_YELLOW	 (0x1ull)
875fa8f86a1SJerin Jacob #define NIX_COLORRESULT_RED_SEND (0x2ull)
876fa8f86a1SJerin Jacob #define NIX_COLORRESULT_RED_DROP (0x3ull)
877fa8f86a1SJerin Jacob 
878fa8f86a1SJerin Jacob #define NIX_CHAN_LBKX_CHX(a, b)                                                \
879fa8f86a1SJerin Jacob 	(0x000ull | ((uint64_t)(a) << 8) | (uint64_t)(b))
880fa8f86a1SJerin Jacob #define NIX_CHAN_CPT_CH_END   (0x4ffull) /* [CN10K, .) */
8814968b362SSatheesh Paul #define NIX_CHAN_CPT_CH_START (0x800ull) /* [CN10K, .) */
882fa8f86a1SJerin Jacob #define NIX_CHAN_R4	      (0x400ull) /* [CN9K, CN10K) */
883fa8f86a1SJerin Jacob #define NIX_CHAN_R5	      (0x500ull)
884fa8f86a1SJerin Jacob #define NIX_CHAN_R6	      (0x600ull)
885fa8f86a1SJerin Jacob #define NIX_CHAN_SDP_CH_END   (0x7ffull)
886fa8f86a1SJerin Jacob #define NIX_CHAN_SDP_CH_START (0x700ull)
887fa8f86a1SJerin Jacob /* [CN9K, CN10K) */
888fa8f86a1SJerin Jacob #define NIX_CHAN_CGXX_LMACX_CHX(a, b, c)                                       \
889fa8f86a1SJerin Jacob 	(0x800ull | ((uint64_t)(a) << 8) | ((uint64_t)(b) << 4) | (uint64_t)(c))
890fa8f86a1SJerin Jacob /* [CN10K, .) */
891fa8f86a1SJerin Jacob #define NIX_CHAN_RPMX_LMACX_CHX(a, b, c)                                       \
892fa8f86a1SJerin Jacob 	(0x800ull | ((uint64_t)(a) << 8) | ((uint64_t)(b) << 4) | (uint64_t)(c))
893fa8f86a1SJerin Jacob 
894fa8f86a1SJerin Jacob #define NIX_INTF_SDP  (0x4ull)
895fa8f86a1SJerin Jacob #define NIX_INTF_CGX0 (0x0ull) /* [CN9K, CN10K) */
896fa8f86a1SJerin Jacob #define NIX_INTF_CGX1 (0x1ull) /* [CN9K, CN10K) */
897fa8f86a1SJerin Jacob #define NIX_INTF_CGX2 (0x2ull) /* [CN9K, CN10K) */
898fa8f86a1SJerin Jacob #define NIX_INTF_RPM0 (0x0ull) /* [CN10K, .) */
899fa8f86a1SJerin Jacob #define NIX_INTF_RPM1 (0x1ull) /* [CN10K, .) */
900fa8f86a1SJerin Jacob #define NIX_INTF_RPM2 (0x2ull) /* [CN10K, .) */
901fa8f86a1SJerin Jacob #define NIX_INTF_LBK0 (0x3ull)
902fa8f86a1SJerin Jacob #define NIX_INTF_CPT0 (0x5ull) /* [CN10K, .) */
903fa8f86a1SJerin Jacob 
904fa8f86a1SJerin Jacob #define NIX_LINK_SDP (0xdull) /* [CN10K, .) */
905fa8f86a1SJerin Jacob #define NIX_LINK_CPT (0xeull) /* [CN10K, .) */
906fa8f86a1SJerin Jacob #define NIX_LINK_MC  (0xfull) /* [CN10K, .) */
907fa8f86a1SJerin Jacob /* [CN10K, .) */
908fa8f86a1SJerin Jacob #define NIX_LINK_RPMX_LMACX(a, b)                                              \
909fa8f86a1SJerin Jacob 	(0x00ull | ((uint64_t)(a) << 2) | (uint64_t)(b))
910fa8f86a1SJerin Jacob #define NIX_LINK_LBK0 (0xcull)
911fa8f86a1SJerin Jacob 
912fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_GINT	  (0x80ull)
913fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_ERR_INT	  (0x81ull)
914fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_POISON	  (0x82ull)
915fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_QINT_END	  (0x3full)
916fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_QINT_START (0x0ull)
917fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_CINT_END	  (0x7full)
918fa8f86a1SJerin Jacob #define NIX_LF_INT_VEC_CINT_START (0x40ull)
919fa8f86a1SJerin Jacob 
920fa8f86a1SJerin Jacob #define NIX_INTF_RX (0x0ull)
921fa8f86a1SJerin Jacob #define NIX_INTF_TX (0x1ull)
922fa8f86a1SJerin Jacob 
923fa8f86a1SJerin Jacob /* Enums definitions */
924fa8f86a1SJerin Jacob 
925fa8f86a1SJerin Jacob /* Structures definitions */
926fa8f86a1SJerin Jacob 
927fa8f86a1SJerin Jacob /* NIX aging and send stats subdescriptor structure */
928fa8f86a1SJerin Jacob struct nix_age_and_send_stats_s {
929fa8f86a1SJerin Jacob 	uint64_t threshold : 29;
930fa8f86a1SJerin Jacob 	uint64_t latency_drop : 1;
931fa8f86a1SJerin Jacob 	uint64_t aging : 1;
932*9a01217eSSatha Rao 	uint64_t coas_en : 1;
933fa8f86a1SJerin Jacob 	uint64_t ooffset : 12;
934fa8f86a1SJerin Jacob 	uint64_t ioffset : 12;
935fa8f86a1SJerin Jacob 	uint64_t sel : 1;
936fa8f86a1SJerin Jacob 	uint64_t alg : 3;
937fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
938fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W1 */
939fa8f86a1SJerin Jacob };
940fa8f86a1SJerin Jacob 
941fa8f86a1SJerin Jacob /* NIX admin queue instruction structure */
942fa8f86a1SJerin Jacob struct nix_aq_inst_s {
943fa8f86a1SJerin Jacob 	uint64_t op : 4;
944fa8f86a1SJerin Jacob 	uint64_t ctype : 4;
945*9a01217eSSatha Rao 	uint64_t lf : 9;
946*9a01217eSSatha Rao 	uint64_t rsvd_23_17 : 7;
947fa8f86a1SJerin Jacob 	uint64_t cindex : 20;
948fa8f86a1SJerin Jacob 	uint64_t rsvd_62_44 : 19;
949fa8f86a1SJerin Jacob 	uint64_t doneint : 1;
950fa8f86a1SJerin Jacob 	uint64_t res_addr : 64; /* W1 */
951fa8f86a1SJerin Jacob };
952fa8f86a1SJerin Jacob 
953fa8f86a1SJerin Jacob /* NIX admin queue result structure */
954fa8f86a1SJerin Jacob struct nix_aq_res_s {
955fa8f86a1SJerin Jacob 	uint64_t op : 4;
956fa8f86a1SJerin Jacob 	uint64_t ctype : 4;
957fa8f86a1SJerin Jacob 	uint64_t compcode : 8;
958fa8f86a1SJerin Jacob 	uint64_t doneint : 1;
959fa8f86a1SJerin Jacob 	uint64_t rsvd_63_17 : 47;
960fa8f86a1SJerin Jacob 	uint64_t rsvd_127_64 : 64; /* W1 */
961fa8f86a1SJerin Jacob };
962fa8f86a1SJerin Jacob 
963fa8f86a1SJerin Jacob /* NIX bandwidth profile structure */
964fa8f86a1SJerin Jacob struct nix_band_prof_s {
965*9a01217eSSatha Rao 	uint64_t pc_mode : 2; /* W0 */
966fa8f86a1SJerin Jacob 	uint64_t icolor : 2;
967fa8f86a1SJerin Jacob 	uint64_t tnl_ena : 1;
968fa8f86a1SJerin Jacob 	uint64_t rsvd_7_5 : 3;
969fa8f86a1SJerin Jacob 	uint64_t peir_exponent : 5;
970fa8f86a1SJerin Jacob 	uint64_t rsvd_15_13 : 3;
971fa8f86a1SJerin Jacob 	uint64_t pebs_exponent : 5;
972fa8f86a1SJerin Jacob 	uint64_t rsvd_23_21 : 3;
973fa8f86a1SJerin Jacob 	uint64_t cir_exponent : 5;
974fa8f86a1SJerin Jacob 	uint64_t rsvd_31_29 : 3;
975fa8f86a1SJerin Jacob 	uint64_t cbs_exponent : 5;
976fa8f86a1SJerin Jacob 	uint64_t rsvd_39_37 : 3;
977fa8f86a1SJerin Jacob 	uint64_t peir_mantissa : 8;
978fa8f86a1SJerin Jacob 	uint64_t pebs_mantissa : 8;
979fa8f86a1SJerin Jacob 	uint64_t cir_mantissa : 8;
980*9a01217eSSatha Rao 	uint64_t cbs_mantissa : 8; /* W1 */
981fa8f86a1SJerin Jacob 	uint64_t lmode : 1;
982fa8f86a1SJerin Jacob 	uint64_t l_sellect : 3;
983fa8f86a1SJerin Jacob 	uint64_t rdiv : 4;
984fa8f86a1SJerin Jacob 	uint64_t adjust_exponent : 5;
985fa8f86a1SJerin Jacob 	uint64_t rsvd_86_85 : 2;
986fa8f86a1SJerin Jacob 	uint64_t adjust_mantissa : 9;
987fa8f86a1SJerin Jacob 	uint64_t gc_action : 2;
988fa8f86a1SJerin Jacob 	uint64_t yc_action : 2;
989fa8f86a1SJerin Jacob 	uint64_t rc_action : 2;
990fa8f86a1SJerin Jacob 	uint64_t meter_algo : 2;
991*9a01217eSSatha Rao 	uint64_t band_prof_id : 11;
992*9a01217eSSatha Rao 	uint64_t rsvd_118_115 : 4;
993fa8f86a1SJerin Jacob 	uint64_t hl_en : 1;
994fa8f86a1SJerin Jacob 	uint64_t rsvd_127_120 : 8;
995*9a01217eSSatha Rao 	uint64_t ts : 48; /* W2 */
996fa8f86a1SJerin Jacob 	uint64_t rsvd_191_176 : 16;
997*9a01217eSSatha Rao 	uint64_t pe_accum : 32; /* W3 */
998fa8f86a1SJerin Jacob 	uint64_t c_accum : 32;
999*9a01217eSSatha Rao 	uint64_t green_pkt_pass : 48; /* W4 */
1000fa8f86a1SJerin Jacob 	uint64_t rsvd_319_304 : 16;
1001*9a01217eSSatha Rao 	uint64_t yellow_pkt_pass : 48; /* W5 */
1002fa8f86a1SJerin Jacob 	uint64_t rsvd_383_368 : 16;
1003*9a01217eSSatha Rao 	uint64_t red_pkt_pass : 48; /* W6 */
1004fa8f86a1SJerin Jacob 	uint64_t rsvd_447_432 : 16;
1005*9a01217eSSatha Rao 	uint64_t green_octs_pass : 48; /* W7 */
1006fa8f86a1SJerin Jacob 	uint64_t rsvd_511_496 : 16;
1007*9a01217eSSatha Rao 	uint64_t yellow_octs_pass : 48; /* W8 */
1008fa8f86a1SJerin Jacob 	uint64_t rsvd_575_560 : 16;
1009*9a01217eSSatha Rao 	uint64_t red_octs_pass : 48; /* W9 */
1010fa8f86a1SJerin Jacob 	uint64_t rsvd_639_624 : 16;
1011*9a01217eSSatha Rao 	uint64_t green_pkt_drop : 48; /* W10 */
1012fa8f86a1SJerin Jacob 	uint64_t rsvd_703_688 : 16;
1013*9a01217eSSatha Rao 	uint64_t yellow_pkt_drop : 48; /* W11 */
1014fa8f86a1SJerin Jacob 	uint64_t rsvd_767_752 : 16;
1015*9a01217eSSatha Rao 	uint64_t red_pkt_drop : 48; /* W12 */
1016fa8f86a1SJerin Jacob 	uint64_t rsvd_831_816 : 16;
1017*9a01217eSSatha Rao 	uint64_t green_octs_drop : 48; /* W13 */
1018fa8f86a1SJerin Jacob 	uint64_t rsvd_895_880 : 16;
1019*9a01217eSSatha Rao 	uint64_t yellow_octs_drop : 48; /* W14 */
1020fa8f86a1SJerin Jacob 	uint64_t rsvd_959_944 : 16;
1021*9a01217eSSatha Rao 	uint64_t red_octs_drop : 48; /* W15 */
1022fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_1008 : 16;
1023fa8f86a1SJerin Jacob };
1024fa8f86a1SJerin Jacob 
1025fa8f86a1SJerin Jacob /* NIX completion interrupt context hardware structure */
1026fa8f86a1SJerin Jacob struct nix_cint_hw_s {
1027fa8f86a1SJerin Jacob 	uint64_t ecount : 32;
1028fa8f86a1SJerin Jacob 	uint64_t qcount : 16;
1029fa8f86a1SJerin Jacob 	uint64_t intr : 1;
1030fa8f86a1SJerin Jacob 	uint64_t ena : 1;
1031fa8f86a1SJerin Jacob 	uint64_t timer_idx : 8;
1032fa8f86a1SJerin Jacob 	uint64_t rsvd_63_58 : 6;
1033fa8f86a1SJerin Jacob 	uint64_t ecount_wait : 32;
1034fa8f86a1SJerin Jacob 	uint64_t qcount_wait : 16;
1035fa8f86a1SJerin Jacob 	uint64_t time_wait : 8;
1036fa8f86a1SJerin Jacob 	uint64_t rsvd_127_120 : 8;
1037fa8f86a1SJerin Jacob };
1038fa8f86a1SJerin Jacob 
1039fa8f86a1SJerin Jacob /* NIX completion queue entry header structure */
1040fa8f86a1SJerin Jacob struct nix_cqe_hdr_s {
1041fa8f86a1SJerin Jacob 	uint64_t tag : 32;
1042fa8f86a1SJerin Jacob 	uint64_t q : 20;
1043*9a01217eSSatha Rao 	uint64_t long_send_comp : 1;
1044*9a01217eSSatha Rao 	uint64_t rsvd_57_53 : 5;
1045fa8f86a1SJerin Jacob 	uint64_t node : 2;
1046fa8f86a1SJerin Jacob 	uint64_t cqe_type : 4;
1047fa8f86a1SJerin Jacob };
1048fa8f86a1SJerin Jacob 
1049*9a01217eSSatha Rao /* [CN20K, .) NIX Completion queue context structure */
1050*9a01217eSSatha Rao struct nix_cn20k_cq_ctx_s {
1051*9a01217eSSatha Rao 	uint64_t base : 64; /* W0 */
1052*9a01217eSSatha Rao 	uint64_t lbp_ena : 1; /* W1 */
1053*9a01217eSSatha Rao 	uint64_t lbpid_low : 3;
1054*9a01217eSSatha Rao 	uint64_t bp_ena : 1;
1055*9a01217eSSatha Rao 	uint64_t lbpid_med : 3;
1056*9a01217eSSatha Rao 	uint64_t bpid : 9;
1057*9a01217eSSatha Rao 	uint64_t lbpid_high : 3;
1058*9a01217eSSatha Rao 	uint64_t qint_idx : 7;
1059*9a01217eSSatha Rao 	uint64_t cq_err : 1;
1060*9a01217eSSatha Rao 	uint64_t cint_idx : 7;
1061*9a01217eSSatha Rao 	uint64_t avg_con : 9;
1062*9a01217eSSatha Rao 	uint64_t wrptr : 20;
1063*9a01217eSSatha Rao 	uint64_t tail : 20; /* W2 */
1064*9a01217eSSatha Rao 	uint64_t head : 20;
1065*9a01217eSSatha Rao 	uint64_t avg_level : 8;
1066*9a01217eSSatha Rao 	uint64_t update_time : 16;
1067*9a01217eSSatha Rao 	uint64_t bp : 8; /* W3 */
1068*9a01217eSSatha Rao 	uint64_t drop : 8;
1069*9a01217eSSatha Rao 	uint64_t drop_ena : 1;
1070*9a01217eSSatha Rao 	uint64_t ena : 1;
1071*9a01217eSSatha Rao 	uint64_t cpt_drop_err_en  : 1;
1072*9a01217eSSatha Rao 	uint64_t reserved_211_211 : 1;
1073*9a01217eSSatha Rao 	uint64_t msh_dst : 11;
1074*9a01217eSSatha Rao 	uint64_t msh_valid : 1;
1075*9a01217eSSatha Rao 	uint64_t stash_thresh : 4;
1076*9a01217eSSatha Rao 	uint64_t lbp_frac : 4;
1077*9a01217eSSatha Rao 	uint64_t caching : 1;
1078*9a01217eSSatha Rao 	uint64_t stashing : 1;
1079*9a01217eSSatha Rao 	uint64_t reserved_234_235 : 2;
1080*9a01217eSSatha Rao 	uint64_t qsize : 4;
1081*9a01217eSSatha Rao 	uint64_t cq_err_int : 8;
1082*9a01217eSSatha Rao 	uint64_t cq_err_int_ena   : 8;
1083*9a01217eSSatha Rao 	uint64_t bpid_ext : 2; /* W4 */
1084*9a01217eSSatha Rao 	uint64_t reserved_258_259 : 2;
1085*9a01217eSSatha Rao 	uint64_t lbpid_ext : 2;
1086*9a01217eSSatha Rao 	uint64_t reserved_262_319 : 58;
1087*9a01217eSSatha Rao 	uint64_t reserved_320_383 : 64; /* W5 */
1088*9a01217eSSatha Rao 	uint64_t reserved_384_447 : 64; /* W6 */
1089*9a01217eSSatha Rao 	uint64_t reserved_448_511 : 64; /* W7 */
1090*9a01217eSSatha Rao };
1091*9a01217eSSatha Rao 
1092fa8f86a1SJerin Jacob /* NIX completion queue context structure */
1093fa8f86a1SJerin Jacob struct nix_cq_ctx_s {
1094fa8f86a1SJerin Jacob 	uint64_t base : 64; /* W0 */
10958bc924cfSNithin Dabilpuram 	uint64_t lbp_ena : 1;
10968bc924cfSNithin Dabilpuram 	uint64_t lbpid_low : 3;
1097fa8f86a1SJerin Jacob 	uint64_t bp_ena : 1;
10988bc924cfSNithin Dabilpuram 	uint64_t lbpid_med : 3;
1099fa8f86a1SJerin Jacob 	uint64_t bpid : 9;
11008bc924cfSNithin Dabilpuram 	uint64_t lbpid_high : 3;
1101fa8f86a1SJerin Jacob 	uint64_t qint_idx : 7;
1102fa8f86a1SJerin Jacob 	uint64_t cq_err : 1;
1103fa8f86a1SJerin Jacob 	uint64_t cint_idx : 7;
1104fa8f86a1SJerin Jacob 	uint64_t avg_con : 9;
1105fa8f86a1SJerin Jacob 	uint64_t wrptr : 20;
1106fa8f86a1SJerin Jacob 	uint64_t tail : 20;
1107fa8f86a1SJerin Jacob 	uint64_t head : 20;
1108fa8f86a1SJerin Jacob 	uint64_t avg_level : 8;
1109fa8f86a1SJerin Jacob 	uint64_t update_time : 16;
1110fa8f86a1SJerin Jacob 	uint64_t bp : 8;
1111fa8f86a1SJerin Jacob 	uint64_t drop : 8;
1112fa8f86a1SJerin Jacob 	uint64_t drop_ena : 1;
1113fa8f86a1SJerin Jacob 	uint64_t ena : 1;
11148bc924cfSNithin Dabilpuram 	uint64_t cpt_drop_err_en : 1;
11158bc924cfSNithin Dabilpuram 	uint64_t rsvd_211 : 1;
11168bc924cfSNithin Dabilpuram 	uint64_t substream : 12;
11178bc924cfSNithin Dabilpuram 	uint64_t stash_thresh : 4;
11188bc924cfSNithin Dabilpuram 	uint64_t lbp_frac : 4;
1119fa8f86a1SJerin Jacob 	uint64_t caching : 1;
11208bc924cfSNithin Dabilpuram 	uint64_t stashing : 1;
11218bc924cfSNithin Dabilpuram 	uint64_t rsvd_235_234 : 2;
1122fa8f86a1SJerin Jacob 	uint64_t qsize : 4;
1123fa8f86a1SJerin Jacob 	uint64_t cq_err_int : 8;
1124fa8f86a1SJerin Jacob 	uint64_t cq_err_int_ena : 8;
1125fa8f86a1SJerin Jacob };
1126fa8f86a1SJerin Jacob 
1127fa8f86a1SJerin Jacob /* NIX instruction header structure */
1128fa8f86a1SJerin Jacob struct nix_inst_hdr_s {
1129fa8f86a1SJerin Jacob 	uint64_t pf_func : 16;
1130fa8f86a1SJerin Jacob 	uint64_t sq : 20;
1131fa8f86a1SJerin Jacob 	uint64_t rsvd_63_36 : 28;
1132fa8f86a1SJerin Jacob };
1133fa8f86a1SJerin Jacob 
1134fa8f86a1SJerin Jacob /* NIX i/o virtual address structure */
1135fa8f86a1SJerin Jacob struct nix_iova_s {
1136fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W0 */
1137fa8f86a1SJerin Jacob };
1138fa8f86a1SJerin Jacob 
1139fa8f86a1SJerin Jacob /* NIX IPsec dynamic ordering counter structure */
1140fa8f86a1SJerin Jacob struct nix_ipsec_dyno_s {
1141fa8f86a1SJerin Jacob 	uint32_t count : 32; /* W0 */
1142fa8f86a1SJerin Jacob };
1143fa8f86a1SJerin Jacob 
1144fa8f86a1SJerin Jacob /* NIX memory value structure */
1145fa8f86a1SJerin Jacob struct nix_mem_result_s {
1146fa8f86a1SJerin Jacob 	uint64_t v : 1;
1147fa8f86a1SJerin Jacob 	uint64_t color : 2;
1148fa8f86a1SJerin Jacob 	uint64_t rsvd_63_3 : 61;
1149fa8f86a1SJerin Jacob };
1150fa8f86a1SJerin Jacob 
1151fa8f86a1SJerin Jacob /* NIX statistics operation write data structure */
1152fa8f86a1SJerin Jacob struct nix_op_q_wdata_s {
1153fa8f86a1SJerin Jacob 	uint64_t rsvd_31_0 : 32;
1154fa8f86a1SJerin Jacob 	uint64_t q : 20;
1155fa8f86a1SJerin Jacob 	uint64_t rsvd_63_52 : 12;
1156fa8f86a1SJerin Jacob };
1157fa8f86a1SJerin Jacob 
1158fa8f86a1SJerin Jacob /* NIX queue interrupt context hardware structure */
1159fa8f86a1SJerin Jacob struct nix_qint_hw_s {
1160fa8f86a1SJerin Jacob 	uint32_t count : 22;
1161fa8f86a1SJerin Jacob 	uint32_t rsvd_30_22 : 9;
1162fa8f86a1SJerin Jacob 	uint32_t ena : 1;
1163fa8f86a1SJerin Jacob };
1164fa8f86a1SJerin Jacob 
1165*9a01217eSSatha Rao /* [CN20K, .) NIX receive queue context structure */
1166*9a01217eSSatha Rao struct nix_cn20k_rq_ctx_hw_s {
1167*9a01217eSSatha Rao 	uint64_t ena : 1; /* W0 */
1168*9a01217eSSatha Rao 	uint64_t sso_ena : 1;
1169*9a01217eSSatha Rao 	uint64_t ipsech_ena : 1;
1170*9a01217eSSatha Rao 	uint64_t ena_wqwd : 1;
1171*9a01217eSSatha Rao 	uint64_t cq : 20;
1172*9a01217eSSatha Rao 	uint64_t rsvd_34_24 : 11;
1173*9a01217eSSatha Rao 	uint64_t port_il4_dis : 1;
1174*9a01217eSSatha Rao 	uint64_t port_ol4_dis : 1;
1175*9a01217eSSatha Rao 	uint64_t lenerr_dis : 1;
1176*9a01217eSSatha Rao 	uint64_t csum_il4_dis : 1;
1177*9a01217eSSatha Rao 	uint64_t csum_ol4_dis : 1;
1178*9a01217eSSatha Rao 	uint64_t len_il4_dis : 1;
1179*9a01217eSSatha Rao 	uint64_t len_il3_dis : 1;
1180*9a01217eSSatha Rao 	uint64_t len_ol4_dis : 1;
1181*9a01217eSSatha Rao 	uint64_t len_ol3_dis : 1;
1182*9a01217eSSatha Rao 	uint64_t wqe_aura : 20;
1183*9a01217eSSatha Rao 	uint64_t spb_aura : 20; /* W1 */
1184*9a01217eSSatha Rao 	uint64_t lpb_aura : 20;
1185*9a01217eSSatha Rao 	uint64_t sso_grp : 10;
1186*9a01217eSSatha Rao 	uint64_t sso_tt : 2;
1187*9a01217eSSatha Rao 	uint64_t pb_caching : 2;
1188*9a01217eSSatha Rao 	uint64_t wqe_caching : 1;
1189*9a01217eSSatha Rao 	uint64_t xqe_drop_ena : 1;
1190*9a01217eSSatha Rao 	uint64_t spb_drop_ena : 1;
1191*9a01217eSSatha Rao 	uint64_t lpb_drop_ena : 1;
1192*9a01217eSSatha Rao 	uint64_t pb_stashing : 1;
1193*9a01217eSSatha Rao 	uint64_t ipsecd_drop_en : 1;
1194*9a01217eSSatha Rao 	uint64_t chi_ena : 1;
1195*9a01217eSSatha Rao 	uint64_t rsvd_127_125 : 3;
1196*9a01217eSSatha Rao 	uint64_t band_prof_id_l : 10; /* W2 */
1197*9a01217eSSatha Rao 	uint64_t sso_drop_ena : 1;
1198*9a01217eSSatha Rao 	uint64_t policer_ena : 1;
1199*9a01217eSSatha Rao 	uint64_t spb_sizem1 : 6;
1200*9a01217eSSatha Rao 	uint64_t wqe_skip : 2;
1201*9a01217eSSatha Rao 	uint64_t spb_high_sizem1 : 3;
1202*9a01217eSSatha Rao 	uint64_t spb_ena : 1;
1203*9a01217eSSatha Rao 	uint64_t lpb_sizem1 : 12;
1204*9a01217eSSatha Rao 	uint64_t first_skip : 7;
1205*9a01217eSSatha Rao 	uint64_t sso_bp_ena : 1;
1206*9a01217eSSatha Rao 	uint64_t later_skip : 6;
1207*9a01217eSSatha Rao 	uint64_t xqe_imm_size : 6;
1208*9a01217eSSatha Rao 	uint64_t band_prof_id_h : 4;
1209*9a01217eSSatha Rao 	uint64_t rsvd_189_188 : 2;
1210*9a01217eSSatha Rao 	uint64_t xqe_imm_copy : 1;
1211*9a01217eSSatha Rao 	uint64_t xqe_hdr_split : 1;
1212*9a01217eSSatha Rao 	uint64_t xqe_drop : 8; /* W3 */
1213*9a01217eSSatha Rao 	uint64_t xqe_pass : 8;
1214*9a01217eSSatha Rao 	uint64_t wqe_pool_drop : 8;
1215*9a01217eSSatha Rao 	uint64_t wqe_pool_pass : 8;
1216*9a01217eSSatha Rao 	uint64_t spb_aura_drop : 8;
1217*9a01217eSSatha Rao 	uint64_t spb_aura_pass : 8;
1218*9a01217eSSatha Rao 	uint64_t spb_pool_drop : 8;
1219*9a01217eSSatha Rao 	uint64_t spb_pool_pass : 8;
1220*9a01217eSSatha Rao 	uint64_t lpb_aura_drop : 8; /* W4 */
1221*9a01217eSSatha Rao 	uint64_t lpb_aura_pass : 8;
1222*9a01217eSSatha Rao 	uint64_t lpb_pool_drop : 8;
1223*9a01217eSSatha Rao 	uint64_t lpb_pool_pass : 8;
1224*9a01217eSSatha Rao 	uint64_t rsvd_319_288 : 32;
1225*9a01217eSSatha Rao 	uint64_t ltag : 24; /* W5 */
1226*9a01217eSSatha Rao 	uint64_t good_utag : 8;
1227*9a01217eSSatha Rao 	uint64_t bad_utag : 8;
1228*9a01217eSSatha Rao 	uint64_t flow_tagw : 6;
1229*9a01217eSSatha Rao 	uint64_t rsvd_366  : 1;
1230*9a01217eSSatha Rao 	uint64_t rsvd_367  : 1;
1231*9a01217eSSatha Rao 	uint64_t rsvd_375_368 : 8;
1232*9a01217eSSatha Rao 	uint64_t rsvd_379_376 : 4;
1233*9a01217eSSatha Rao 	uint64_t rsvd_381_380 : 2;
1234*9a01217eSSatha Rao 	uint64_t rsvd_383_382 : 2;
1235*9a01217eSSatha Rao 	uint64_t octs : 48; /* W6 */
1236*9a01217eSSatha Rao 	uint64_t rsvd_447_432 : 16;
1237*9a01217eSSatha Rao 	uint64_t pkts : 48; /* W7 */
1238*9a01217eSSatha Rao 	uint64_t rsvd_511_496 : 16;
1239*9a01217eSSatha Rao 	uint64_t drop_octs : 48; /* W8 */
1240*9a01217eSSatha Rao 	uint64_t rsvd_575_560 : 16;
1241*9a01217eSSatha Rao 	uint64_t drop_pkts : 48; /* W9 */
1242*9a01217eSSatha Rao 	uint64_t rsvd_639_624 : 16;
1243*9a01217eSSatha Rao 	uint64_t re_pkts : 48; /* W10 */
1244*9a01217eSSatha Rao 	uint64_t rsvd_702_688 : 15;
1245*9a01217eSSatha Rao 	uint64_t ena_copy : 1;
1246*9a01217eSSatha Rao 	uint64_t rsvd_739_704 : 36; /* W11 */
1247*9a01217eSSatha Rao 	uint64_t rq_int : 8;
1248*9a01217eSSatha Rao 	uint64_t rq_int_ena : 8;
1249*9a01217eSSatha Rao 	uint64_t qint_idx : 7;
1250*9a01217eSSatha Rao 	uint64_t rsvd_767_763 : 5;
1251*9a01217eSSatha Rao 	uint64_t rsvd_831_768 : 64;  /* W12 */
1252*9a01217eSSatha Rao 	uint64_t rsvd_895_832 : 64;  /* W13 */
1253*9a01217eSSatha Rao 	uint64_t rsvd_959_896 : 64;  /* W14 */
1254*9a01217eSSatha Rao 	uint64_t rsvd_1023_960 : 64; /* W15 */
1255*9a01217eSSatha Rao };
1256*9a01217eSSatha Rao 
1257*9a01217eSSatha Rao /* [CN20K, .) NIX Receive queue context structure */
1258*9a01217eSSatha Rao struct nix_cn20k_rq_ctx_s {
1259*9a01217eSSatha Rao 	uint64_t ena : 1; /* W0 */
1260*9a01217eSSatha Rao 	uint64_t sso_ena : 1;
1261*9a01217eSSatha Rao 	uint64_t ipsech_ena : 1;
1262*9a01217eSSatha Rao 	uint64_t ena_wqwd : 1;
1263*9a01217eSSatha Rao 	uint64_t cq : 20;
1264*9a01217eSSatha Rao 	uint64_t reserved_24_34 : 11;
1265*9a01217eSSatha Rao 	uint64_t port_il4_dis : 1;
1266*9a01217eSSatha Rao 	uint64_t port_ol4_dis : 1;
1267*9a01217eSSatha Rao 	uint64_t lenerr_dis : 1;
1268*9a01217eSSatha Rao 	uint64_t csum_il4_dis : 1;
1269*9a01217eSSatha Rao 	uint64_t csum_ol4_dis : 1;
1270*9a01217eSSatha Rao 	uint64_t len_il4_dis : 1;
1271*9a01217eSSatha Rao 	uint64_t len_il3_dis : 1;
1272*9a01217eSSatha Rao 	uint64_t len_ol4_dis : 1;
1273*9a01217eSSatha Rao 	uint64_t len_ol3_dis : 1;
1274*9a01217eSSatha Rao 	uint64_t wqe_aura : 20;
1275*9a01217eSSatha Rao 	uint64_t spb_aura : 20; /* W1 */
1276*9a01217eSSatha Rao 	uint64_t lpb_aura : 20;
1277*9a01217eSSatha Rao 	uint64_t sso_grp : 10;
1278*9a01217eSSatha Rao 	uint64_t sso_tt : 2;
1279*9a01217eSSatha Rao 	uint64_t pb_caching : 2;
1280*9a01217eSSatha Rao 	uint64_t wqe_caching : 1;
1281*9a01217eSSatha Rao 	uint64_t xqe_drop_ena : 1;
1282*9a01217eSSatha Rao 	uint64_t spb_drop_ena : 1;
1283*9a01217eSSatha Rao 	uint64_t lpb_drop_ena : 1;
1284*9a01217eSSatha Rao 	uint64_t pb_stashing : 1;
1285*9a01217eSSatha Rao 	uint64_t ipsecd_drop_en : 1;
1286*9a01217eSSatha Rao 	uint64_t chi_ena : 1;
1287*9a01217eSSatha Rao 	uint64_t reserved_125_127 : 3;
1288*9a01217eSSatha Rao 	uint64_t band_prof_id_l : 10; /* W2 */
1289*9a01217eSSatha Rao 	uint64_t sso_fc_ena : 1;
1290*9a01217eSSatha Rao 	uint64_t policer_ena : 1;
1291*9a01217eSSatha Rao 	uint64_t spb_sizem1 : 6;
1292*9a01217eSSatha Rao 	uint64_t wqe_skip : 2;
1293*9a01217eSSatha Rao 	uint64_t spb_high_sizem1 : 3;
1294*9a01217eSSatha Rao 	uint64_t spb_ena : 1;
1295*9a01217eSSatha Rao 	uint64_t lpb_sizem1 : 12;
1296*9a01217eSSatha Rao 	uint64_t first_skip : 7;
1297*9a01217eSSatha Rao 	uint64_t sso_bp_ena : 1;
1298*9a01217eSSatha Rao 	uint64_t later_skip : 6;
1299*9a01217eSSatha Rao 	uint64_t xqe_imm_size : 6;
1300*9a01217eSSatha Rao 	uint64_t band_prof_id_h : 4;
1301*9a01217eSSatha Rao 	uint64_t reserved_188_189 : 2;
1302*9a01217eSSatha Rao 	uint64_t xqe_imm_copy : 1;
1303*9a01217eSSatha Rao 	uint64_t xqe_hdr_split : 1;
1304*9a01217eSSatha Rao 	uint64_t xqe_drop : 8; /* W3 */
1305*9a01217eSSatha Rao 	uint64_t xqe_pass : 8;
1306*9a01217eSSatha Rao 	uint64_t wqe_pool_drop : 8;
1307*9a01217eSSatha Rao 	uint64_t wqe_pool_pass : 8;
1308*9a01217eSSatha Rao 	uint64_t spb_aura_drop : 8;
1309*9a01217eSSatha Rao 	uint64_t spb_aura_pass : 8;
1310*9a01217eSSatha Rao 	uint64_t spb_pool_drop : 8;
1311*9a01217eSSatha Rao 	uint64_t spb_pool_pass : 8;
1312*9a01217eSSatha Rao 	uint64_t lpb_aura_drop : 8; /* W4 */
1313*9a01217eSSatha Rao 	uint64_t lpb_aura_pass : 8;
1314*9a01217eSSatha Rao 	uint64_t lpb_pool_drop : 8;
1315*9a01217eSSatha Rao 	uint64_t lpb_pool_pass : 8;
1316*9a01217eSSatha Rao 	uint64_t reserved_288_291 : 4;
1317*9a01217eSSatha Rao 	uint64_t rq_int : 8;
1318*9a01217eSSatha Rao 	uint64_t rq_int_ena : 8;
1319*9a01217eSSatha Rao 	uint64_t qint_idx : 7;
1320*9a01217eSSatha Rao 	uint64_t reserved_315_319 : 5;
1321*9a01217eSSatha Rao 	uint64_t ltag : 24; /* W5 */
1322*9a01217eSSatha Rao 	uint64_t good_utag : 8;
1323*9a01217eSSatha Rao 	uint64_t bad_utag : 8;
1324*9a01217eSSatha Rao 	uint64_t flow_tagw : 6;
1325*9a01217eSSatha Rao 	uint64_t reserved_366_383 : 18;
1326*9a01217eSSatha Rao 	uint64_t octs : 48; /* W6 */
1327*9a01217eSSatha Rao 	uint64_t reserved_432_447 : 16;
1328*9a01217eSSatha Rao 	uint64_t pkts : 48; /* W7 */
1329*9a01217eSSatha Rao 	uint64_t reserved_496_511 : 16;
1330*9a01217eSSatha Rao 	uint64_t drop_octs : 48; /* W8 */
1331*9a01217eSSatha Rao 	uint64_t reserved_560_575 : 16;
1332*9a01217eSSatha Rao 	uint64_t drop_pkts : 48; /* W9 */
1333*9a01217eSSatha Rao 	uint64_t reserved_624_639 : 16;
1334*9a01217eSSatha Rao 	uint64_t re_pkts : 48; /* W10 */
1335*9a01217eSSatha Rao 	uint64_t reserved_688_703 : 16;
1336*9a01217eSSatha Rao 	uint64_t reserved_704_767 : 64; /* W11 */
1337*9a01217eSSatha Rao 	uint64_t reserved_768_831 : 64; /* W12 */
1338*9a01217eSSatha Rao 	uint64_t reserved_832_895 : 64; /* W13 */
1339*9a01217eSSatha Rao 	uint64_t reserved_896_959 : 64; /* W14 */
1340*9a01217eSSatha Rao 	uint64_t reserved_960_1023 : 64; /* W15 */
1341*9a01217eSSatha Rao };
1342*9a01217eSSatha Rao 
1343fa8f86a1SJerin Jacob /* [CN10K, .) NIX receive queue context structure */
1344fa8f86a1SJerin Jacob struct nix_cn10k_rq_ctx_hw_s {
1345fa8f86a1SJerin Jacob 	uint64_t ena : 1;
1346fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
1347fa8f86a1SJerin Jacob 	uint64_t ipsech_ena : 1;
1348fa8f86a1SJerin Jacob 	uint64_t ena_wqwd : 1;
1349fa8f86a1SJerin Jacob 	uint64_t cq : 20;
1350fa8f86a1SJerin Jacob 	uint64_t rsvd_36_24 : 13;
1351fa8f86a1SJerin Jacob 	uint64_t lenerr_dis : 1;
1352fa8f86a1SJerin Jacob 	uint64_t csum_il4_dis : 1;
1353fa8f86a1SJerin Jacob 	uint64_t csum_ol4_dis : 1;
1354fa8f86a1SJerin Jacob 	uint64_t len_il4_dis : 1;
1355fa8f86a1SJerin Jacob 	uint64_t len_il3_dis : 1;
1356fa8f86a1SJerin Jacob 	uint64_t len_ol4_dis : 1;
1357fa8f86a1SJerin Jacob 	uint64_t len_ol3_dis : 1;
1358fa8f86a1SJerin Jacob 	uint64_t wqe_aura : 20;
1359fa8f86a1SJerin Jacob 	uint64_t spb_aura : 20;
1360fa8f86a1SJerin Jacob 	uint64_t lpb_aura : 20;
1361fa8f86a1SJerin Jacob 	uint64_t sso_grp : 10;
1362fa8f86a1SJerin Jacob 	uint64_t sso_tt : 2;
1363fa8f86a1SJerin Jacob 	uint64_t pb_caching : 2;
1364fa8f86a1SJerin Jacob 	uint64_t wqe_caching : 1;
1365fa8f86a1SJerin Jacob 	uint64_t xqe_drop_ena : 1;
1366fa8f86a1SJerin Jacob 	uint64_t spb_drop_ena : 1;
1367fa8f86a1SJerin Jacob 	uint64_t lpb_drop_ena : 1;
1368fa8f86a1SJerin Jacob 	uint64_t pb_stashing : 1;
1369fa8f86a1SJerin Jacob 	uint64_t ipsecd_drop_en : 1;
1370fa8f86a1SJerin Jacob 	uint64_t chi_ena : 1;
1371fa8f86a1SJerin Jacob 	uint64_t rsvd_127_125 : 3;
1372fa8f86a1SJerin Jacob 	uint64_t band_prof_id : 10;
1373fa8f86a1SJerin Jacob 	uint64_t rsvd_138 : 1;
1374fa8f86a1SJerin Jacob 	uint64_t policer_ena : 1;
1375fa8f86a1SJerin Jacob 	uint64_t spb_sizem1 : 6;
1376fa8f86a1SJerin Jacob 	uint64_t wqe_skip : 2;
1377fa8f86a1SJerin Jacob 	uint64_t spb_high_sizem1 : 3;
1378fa8f86a1SJerin Jacob 	uint64_t spb_ena : 1;
1379fa8f86a1SJerin Jacob 	uint64_t lpb_sizem1 : 12;
1380fa8f86a1SJerin Jacob 	uint64_t first_skip : 7;
1381fa8f86a1SJerin Jacob 	uint64_t rsvd_171 : 1;
1382fa8f86a1SJerin Jacob 	uint64_t later_skip : 6;
1383fa8f86a1SJerin Jacob 	uint64_t xqe_imm_size : 6;
1384fa8f86a1SJerin Jacob 	uint64_t rsvd_189_184 : 6;
1385fa8f86a1SJerin Jacob 	uint64_t xqe_imm_copy : 1;
1386fa8f86a1SJerin Jacob 	uint64_t xqe_hdr_split : 1;
1387fa8f86a1SJerin Jacob 	uint64_t xqe_drop : 8;
1388fa8f86a1SJerin Jacob 	uint64_t xqe_pass : 8;
1389fa8f86a1SJerin Jacob 	uint64_t wqe_pool_drop : 8;
1390fa8f86a1SJerin Jacob 	uint64_t wqe_pool_pass : 8;
1391fa8f86a1SJerin Jacob 	uint64_t spb_aura_drop : 8;
1392fa8f86a1SJerin Jacob 	uint64_t spb_aura_pass : 8;
1393fa8f86a1SJerin Jacob 	uint64_t spb_pool_drop : 8;
1394fa8f86a1SJerin Jacob 	uint64_t spb_pool_pass : 8;
1395fa8f86a1SJerin Jacob 	uint64_t lpb_aura_drop : 8;
1396fa8f86a1SJerin Jacob 	uint64_t lpb_aura_pass : 8;
1397fa8f86a1SJerin Jacob 	uint64_t lpb_pool_drop : 8;
1398fa8f86a1SJerin Jacob 	uint64_t lpb_pool_pass : 8;
1399fa8f86a1SJerin Jacob 	uint64_t rsvd_319_288 : 32;
1400fa8f86a1SJerin Jacob 	uint64_t ltag : 24;
1401fa8f86a1SJerin Jacob 	uint64_t good_utag : 8;
1402fa8f86a1SJerin Jacob 	uint64_t bad_utag : 8;
1403fa8f86a1SJerin Jacob 	uint64_t flow_tagw : 6;
1404fa8f86a1SJerin Jacob 	uint64_t ipsec_vwqe : 1;
1405fa8f86a1SJerin Jacob 	uint64_t vwqe_ena : 1;
1406fa8f86a1SJerin Jacob 	uint64_t vtime_wait : 8;
1407fa8f86a1SJerin Jacob 	uint64_t max_vsize_exp : 4;
1408fa8f86a1SJerin Jacob 	uint64_t vwqe_skip : 2;
1409fa8f86a1SJerin Jacob 	uint64_t rsvd_383_382 : 2;
1410fa8f86a1SJerin Jacob 	uint64_t octs : 48;
1411fa8f86a1SJerin Jacob 	uint64_t rsvd_447_432 : 16;
1412fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
1413fa8f86a1SJerin Jacob 	uint64_t rsvd_511_496 : 16;
1414fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
1415fa8f86a1SJerin Jacob 	uint64_t rsvd_575_560 : 16;
1416fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
1417fa8f86a1SJerin Jacob 	uint64_t rsvd_639_624 : 16;
1418fa8f86a1SJerin Jacob 	uint64_t re_pkts : 48;
1419fa8f86a1SJerin Jacob 	uint64_t rsvd_702_688 : 15;
1420fa8f86a1SJerin Jacob 	uint64_t ena_copy : 1;
1421fa8f86a1SJerin Jacob 	uint64_t rsvd_739_704 : 36;
1422fa8f86a1SJerin Jacob 	uint64_t rq_int : 8;
1423fa8f86a1SJerin Jacob 	uint64_t rq_int_ena : 8;
1424fa8f86a1SJerin Jacob 	uint64_t qint_idx : 7;
1425fa8f86a1SJerin Jacob 	uint64_t rsvd_767_763 : 5;
1426fa8f86a1SJerin Jacob 	uint64_t rsvd_831_768 : 64;  /* W12 */
1427fa8f86a1SJerin Jacob 	uint64_t rsvd_895_832 : 64;  /* W13 */
1428fa8f86a1SJerin Jacob 	uint64_t rsvd_959_896 : 64;  /* W14 */
1429fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_960 : 64; /* W15 */
1430fa8f86a1SJerin Jacob };
1431fa8f86a1SJerin Jacob 
1432fa8f86a1SJerin Jacob /* NIX receive queue context structure */
1433fa8f86a1SJerin Jacob struct nix_rq_ctx_hw_s {
1434fa8f86a1SJerin Jacob 	uint64_t ena : 1;
1435fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
1436fa8f86a1SJerin Jacob 	uint64_t ipsech_ena : 1;
1437fa8f86a1SJerin Jacob 	uint64_t ena_wqwd : 1;
1438fa8f86a1SJerin Jacob 	uint64_t cq : 20;
1439fa8f86a1SJerin Jacob 	uint64_t substream : 20;
1440fa8f86a1SJerin Jacob 	uint64_t wqe_aura : 20;
1441fa8f86a1SJerin Jacob 	uint64_t spb_aura : 20;
1442fa8f86a1SJerin Jacob 	uint64_t lpb_aura : 20;
1443fa8f86a1SJerin Jacob 	uint64_t sso_grp : 10;
1444fa8f86a1SJerin Jacob 	uint64_t sso_tt : 2;
1445fa8f86a1SJerin Jacob 	uint64_t pb_caching : 2;
1446fa8f86a1SJerin Jacob 	uint64_t wqe_caching : 1;
1447fa8f86a1SJerin Jacob 	uint64_t xqe_drop_ena : 1;
1448fa8f86a1SJerin Jacob 	uint64_t spb_drop_ena : 1;
1449fa8f86a1SJerin Jacob 	uint64_t lpb_drop_ena : 1;
1450fa8f86a1SJerin Jacob 	uint64_t wqe_skip : 2;
1451fa8f86a1SJerin Jacob 	uint64_t rsvd_127_124 : 4;
1452fa8f86a1SJerin Jacob 	uint64_t rsvd_139_128 : 12;
1453fa8f86a1SJerin Jacob 	uint64_t spb_sizem1 : 6;
1454fa8f86a1SJerin Jacob 	uint64_t rsvd_150_146 : 5;
1455fa8f86a1SJerin Jacob 	uint64_t spb_ena : 1;
1456fa8f86a1SJerin Jacob 	uint64_t lpb_sizem1 : 12;
1457fa8f86a1SJerin Jacob 	uint64_t first_skip : 7;
1458fa8f86a1SJerin Jacob 	uint64_t rsvd_171 : 1;
1459fa8f86a1SJerin Jacob 	uint64_t later_skip : 6;
1460fa8f86a1SJerin Jacob 	uint64_t xqe_imm_size : 6;
1461fa8f86a1SJerin Jacob 	uint64_t rsvd_189_184 : 6;
1462fa8f86a1SJerin Jacob 	uint64_t xqe_imm_copy : 1;
1463fa8f86a1SJerin Jacob 	uint64_t xqe_hdr_split : 1;
1464fa8f86a1SJerin Jacob 	uint64_t xqe_drop : 8;
1465fa8f86a1SJerin Jacob 	uint64_t xqe_pass : 8;
1466fa8f86a1SJerin Jacob 	uint64_t wqe_pool_drop : 8;
1467fa8f86a1SJerin Jacob 	uint64_t wqe_pool_pass : 8;
1468fa8f86a1SJerin Jacob 	uint64_t spb_aura_drop : 8;
1469fa8f86a1SJerin Jacob 	uint64_t spb_aura_pass : 8;
1470fa8f86a1SJerin Jacob 	uint64_t spb_pool_drop : 8;
1471fa8f86a1SJerin Jacob 	uint64_t spb_pool_pass : 8;
1472fa8f86a1SJerin Jacob 	uint64_t lpb_aura_drop : 8;
1473fa8f86a1SJerin Jacob 	uint64_t lpb_aura_pass : 8;
1474fa8f86a1SJerin Jacob 	uint64_t lpb_pool_drop : 8;
1475fa8f86a1SJerin Jacob 	uint64_t lpb_pool_pass : 8;
1476fa8f86a1SJerin Jacob 	uint64_t rsvd_319_288 : 32;
1477fa8f86a1SJerin Jacob 	uint64_t ltag : 24;
1478fa8f86a1SJerin Jacob 	uint64_t good_utag : 8;
1479fa8f86a1SJerin Jacob 	uint64_t bad_utag : 8;
1480fa8f86a1SJerin Jacob 	uint64_t flow_tagw : 6;
1481fa8f86a1SJerin Jacob 	uint64_t rsvd_383_366 : 18;
1482fa8f86a1SJerin Jacob 	uint64_t octs : 48;
1483fa8f86a1SJerin Jacob 	uint64_t rsvd_447_432 : 16;
1484fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
1485fa8f86a1SJerin Jacob 	uint64_t rsvd_511_496 : 16;
1486fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
1487fa8f86a1SJerin Jacob 	uint64_t rsvd_575_560 : 16;
1488fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
1489fa8f86a1SJerin Jacob 	uint64_t rsvd_639_624 : 16;
1490fa8f86a1SJerin Jacob 	uint64_t re_pkts : 48;
1491fa8f86a1SJerin Jacob 	uint64_t rsvd_702_688 : 15;
1492fa8f86a1SJerin Jacob 	uint64_t ena_copy : 1;
1493fa8f86a1SJerin Jacob 	uint64_t rsvd_739_704 : 36;
1494fa8f86a1SJerin Jacob 	uint64_t rq_int : 8;
1495fa8f86a1SJerin Jacob 	uint64_t rq_int_ena : 8;
1496fa8f86a1SJerin Jacob 	uint64_t qint_idx : 7;
1497fa8f86a1SJerin Jacob 	uint64_t rsvd_767_763 : 5;
1498fa8f86a1SJerin Jacob 	uint64_t rsvd_831_768 : 64;  /* W12 */
1499fa8f86a1SJerin Jacob 	uint64_t rsvd_895_832 : 64;  /* W13 */
1500fa8f86a1SJerin Jacob 	uint64_t rsvd_959_896 : 64;  /* W14 */
1501fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_960 : 64; /* W15 */
1502fa8f86a1SJerin Jacob };
1503fa8f86a1SJerin Jacob 
1504fa8f86a1SJerin Jacob /* [CN10K, .) NIX Receive queue context structure */
1505fa8f86a1SJerin Jacob struct nix_cn10k_rq_ctx_s {
1506fa8f86a1SJerin Jacob 	uint64_t ena : 1;
1507fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
1508fa8f86a1SJerin Jacob 	uint64_t ipsech_ena : 1;
1509fa8f86a1SJerin Jacob 	uint64_t ena_wqwd : 1;
1510fa8f86a1SJerin Jacob 	uint64_t cq : 20;
1511ddf955d3SRakesh Kudurumalla 	uint64_t rsvd_34_24 : 11;
1512ddf955d3SRakesh Kudurumalla 	uint64_t port_ol4_dis : 1;
1513ddf955d3SRakesh Kudurumalla 	uint64_t port_il4_dis : 1;
1514fa8f86a1SJerin Jacob 	uint64_t lenerr_dis : 1;
1515fa8f86a1SJerin Jacob 	uint64_t csum_il4_dis : 1;
1516fa8f86a1SJerin Jacob 	uint64_t csum_ol4_dis : 1;
1517fa8f86a1SJerin Jacob 	uint64_t len_il4_dis : 1;
1518fa8f86a1SJerin Jacob 	uint64_t len_il3_dis : 1;
1519fa8f86a1SJerin Jacob 	uint64_t len_ol4_dis : 1;
1520fa8f86a1SJerin Jacob 	uint64_t len_ol3_dis : 1;
1521fa8f86a1SJerin Jacob 	uint64_t wqe_aura : 20;
1522fa8f86a1SJerin Jacob 	uint64_t spb_aura : 20;
1523fa8f86a1SJerin Jacob 	uint64_t lpb_aura : 20;
1524fa8f86a1SJerin Jacob 	uint64_t sso_grp : 10;
1525fa8f86a1SJerin Jacob 	uint64_t sso_tt : 2;
1526fa8f86a1SJerin Jacob 	uint64_t pb_caching : 2;
1527fa8f86a1SJerin Jacob 	uint64_t wqe_caching : 1;
1528fa8f86a1SJerin Jacob 	uint64_t xqe_drop_ena : 1;
1529fa8f86a1SJerin Jacob 	uint64_t spb_drop_ena : 1;
1530fa8f86a1SJerin Jacob 	uint64_t lpb_drop_ena : 1;
1531fa8f86a1SJerin Jacob 	uint64_t pb_stashing : 1;
1532fa8f86a1SJerin Jacob 	uint64_t ipsecd_drop_en : 1;
1533fa8f86a1SJerin Jacob 	uint64_t chi_ena : 1;
1534fa8f86a1SJerin Jacob 	uint64_t rsvd_127_125 : 3;
1535fa8f86a1SJerin Jacob 	uint64_t band_prof_id : 10;
1536fa8f86a1SJerin Jacob 	uint64_t rsvd_138 : 1;
1537fa8f86a1SJerin Jacob 	uint64_t policer_ena : 1;
1538fa8f86a1SJerin Jacob 	uint64_t spb_sizem1 : 6;
1539fa8f86a1SJerin Jacob 	uint64_t wqe_skip : 2;
1540fa8f86a1SJerin Jacob 	uint64_t spb_high_sizem1 : 3;
1541fa8f86a1SJerin Jacob 	uint64_t spb_ena : 1;
1542fa8f86a1SJerin Jacob 	uint64_t lpb_sizem1 : 12;
1543fa8f86a1SJerin Jacob 	uint64_t first_skip : 7;
1544fa8f86a1SJerin Jacob 	uint64_t rsvd_171 : 1;
1545fa8f86a1SJerin Jacob 	uint64_t later_skip : 6;
1546fa8f86a1SJerin Jacob 	uint64_t xqe_imm_size : 6;
1547fa8f86a1SJerin Jacob 	uint64_t rsvd_189_184 : 6;
1548fa8f86a1SJerin Jacob 	uint64_t xqe_imm_copy : 1;
1549fa8f86a1SJerin Jacob 	uint64_t xqe_hdr_split : 1;
1550fa8f86a1SJerin Jacob 	uint64_t xqe_drop : 8;
1551fa8f86a1SJerin Jacob 	uint64_t xqe_pass : 8;
1552fa8f86a1SJerin Jacob 	uint64_t wqe_pool_drop : 8;
1553fa8f86a1SJerin Jacob 	uint64_t wqe_pool_pass : 8;
1554fa8f86a1SJerin Jacob 	uint64_t spb_aura_drop : 8;
1555fa8f86a1SJerin Jacob 	uint64_t spb_aura_pass : 8;
1556fa8f86a1SJerin Jacob 	uint64_t spb_pool_drop : 8;
1557fa8f86a1SJerin Jacob 	uint64_t spb_pool_pass : 8;
1558fa8f86a1SJerin Jacob 	uint64_t lpb_aura_drop : 8;
1559fa8f86a1SJerin Jacob 	uint64_t lpb_aura_pass : 8;
1560fa8f86a1SJerin Jacob 	uint64_t lpb_pool_drop : 8;
1561fa8f86a1SJerin Jacob 	uint64_t lpb_pool_pass : 8;
1562fa8f86a1SJerin Jacob 	uint64_t rsvd_291_288 : 4;
1563fa8f86a1SJerin Jacob 	uint64_t rq_int : 8;
1564fa8f86a1SJerin Jacob 	uint64_t rq_int_ena : 8;
1565fa8f86a1SJerin Jacob 	uint64_t qint_idx : 7;
1566fa8f86a1SJerin Jacob 	uint64_t rsvd_319_315 : 5;
1567fa8f86a1SJerin Jacob 	uint64_t ltag : 24;
1568fa8f86a1SJerin Jacob 	uint64_t good_utag : 8;
1569fa8f86a1SJerin Jacob 	uint64_t bad_utag : 8;
1570fa8f86a1SJerin Jacob 	uint64_t flow_tagw : 6;
1571fa8f86a1SJerin Jacob 	uint64_t ipsec_vwqe : 1;
1572fa8f86a1SJerin Jacob 	uint64_t vwqe_ena : 1;
1573fa8f86a1SJerin Jacob 	uint64_t vtime_wait : 8;
1574fa8f86a1SJerin Jacob 	uint64_t max_vsize_exp : 4;
1575fa8f86a1SJerin Jacob 	uint64_t vwqe_skip : 2;
1576fa8f86a1SJerin Jacob 	uint64_t rsvd_383_382 : 2;
1577fa8f86a1SJerin Jacob 	uint64_t octs : 48;
1578fa8f86a1SJerin Jacob 	uint64_t rsvd_447_432 : 16;
1579fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
1580fa8f86a1SJerin Jacob 	uint64_t rsvd_511_496 : 16;
1581fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
1582fa8f86a1SJerin Jacob 	uint64_t rsvd_575_560 : 16;
1583fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
1584fa8f86a1SJerin Jacob 	uint64_t rsvd_639_624 : 16;
1585fa8f86a1SJerin Jacob 	uint64_t re_pkts : 48;
1586fa8f86a1SJerin Jacob 	uint64_t rsvd_703_688 : 16;
1587fa8f86a1SJerin Jacob 	uint64_t rsvd_767_704 : 64;  /* W11 */
1588fa8f86a1SJerin Jacob 	uint64_t rsvd_831_768 : 64;  /* W12 */
1589fa8f86a1SJerin Jacob 	uint64_t rsvd_895_832 : 64;  /* W13 */
1590fa8f86a1SJerin Jacob 	uint64_t rsvd_959_896 : 64;  /* W14 */
1591fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_960 : 64; /* W15 */
1592fa8f86a1SJerin Jacob };
1593fa8f86a1SJerin Jacob 
1594fa8f86a1SJerin Jacob /* NIX receive queue context structure */
1595fa8f86a1SJerin Jacob struct nix_rq_ctx_s {
1596fa8f86a1SJerin Jacob 	uint64_t ena : 1;
1597fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
1598fa8f86a1SJerin Jacob 	uint64_t ipsech_ena : 1;
1599fa8f86a1SJerin Jacob 	uint64_t ena_wqwd : 1;
1600fa8f86a1SJerin Jacob 	uint64_t cq : 20;
1601fa8f86a1SJerin Jacob 	uint64_t substream : 20;
1602fa8f86a1SJerin Jacob 	uint64_t wqe_aura : 20;
1603fa8f86a1SJerin Jacob 	uint64_t spb_aura : 20;
1604fa8f86a1SJerin Jacob 	uint64_t lpb_aura : 20;
1605fa8f86a1SJerin Jacob 	uint64_t sso_grp : 10;
1606fa8f86a1SJerin Jacob 	uint64_t sso_tt : 2;
1607fa8f86a1SJerin Jacob 	uint64_t pb_caching : 2;
1608fa8f86a1SJerin Jacob 	uint64_t wqe_caching : 1;
1609fa8f86a1SJerin Jacob 	uint64_t xqe_drop_ena : 1;
1610fa8f86a1SJerin Jacob 	uint64_t spb_drop_ena : 1;
1611fa8f86a1SJerin Jacob 	uint64_t lpb_drop_ena : 1;
1612fa8f86a1SJerin Jacob 	uint64_t rsvd_127_122 : 6;
1613fa8f86a1SJerin Jacob 	uint64_t rsvd_139_128 : 12;
1614fa8f86a1SJerin Jacob 	uint64_t spb_sizem1 : 6;
1615fa8f86a1SJerin Jacob 	uint64_t wqe_skip : 2;
1616fa8f86a1SJerin Jacob 	uint64_t rsvd_150_148 : 3;
1617fa8f86a1SJerin Jacob 	uint64_t spb_ena : 1;
1618fa8f86a1SJerin Jacob 	uint64_t lpb_sizem1 : 12;
1619fa8f86a1SJerin Jacob 	uint64_t first_skip : 7;
1620fa8f86a1SJerin Jacob 	uint64_t rsvd_171 : 1;
1621fa8f86a1SJerin Jacob 	uint64_t later_skip : 6;
1622fa8f86a1SJerin Jacob 	uint64_t xqe_imm_size : 6;
1623fa8f86a1SJerin Jacob 	uint64_t rsvd_189_184 : 6;
1624fa8f86a1SJerin Jacob 	uint64_t xqe_imm_copy : 1;
1625fa8f86a1SJerin Jacob 	uint64_t xqe_hdr_split : 1;
1626fa8f86a1SJerin Jacob 	uint64_t xqe_drop : 8;
1627fa8f86a1SJerin Jacob 	uint64_t xqe_pass : 8;
1628fa8f86a1SJerin Jacob 	uint64_t wqe_pool_drop : 8;
1629fa8f86a1SJerin Jacob 	uint64_t wqe_pool_pass : 8;
1630fa8f86a1SJerin Jacob 	uint64_t spb_aura_drop : 8;
1631fa8f86a1SJerin Jacob 	uint64_t spb_aura_pass : 8;
1632fa8f86a1SJerin Jacob 	uint64_t spb_pool_drop : 8;
1633fa8f86a1SJerin Jacob 	uint64_t spb_pool_pass : 8;
1634fa8f86a1SJerin Jacob 	uint64_t lpb_aura_drop : 8;
1635fa8f86a1SJerin Jacob 	uint64_t lpb_aura_pass : 8;
1636fa8f86a1SJerin Jacob 	uint64_t lpb_pool_drop : 8;
1637fa8f86a1SJerin Jacob 	uint64_t lpb_pool_pass : 8;
1638fa8f86a1SJerin Jacob 	uint64_t rsvd_291_288 : 4;
1639fa8f86a1SJerin Jacob 	uint64_t rq_int : 8;
1640fa8f86a1SJerin Jacob 	uint64_t rq_int_ena : 8;
1641fa8f86a1SJerin Jacob 	uint64_t qint_idx : 7;
1642fa8f86a1SJerin Jacob 	uint64_t rsvd_319_315 : 5;
1643fa8f86a1SJerin Jacob 	uint64_t ltag : 24;
1644fa8f86a1SJerin Jacob 	uint64_t good_utag : 8;
1645fa8f86a1SJerin Jacob 	uint64_t bad_utag : 8;
1646fa8f86a1SJerin Jacob 	uint64_t flow_tagw : 6;
1647fa8f86a1SJerin Jacob 	uint64_t rsvd_383_366 : 18;
1648fa8f86a1SJerin Jacob 	uint64_t octs : 48;
1649fa8f86a1SJerin Jacob 	uint64_t rsvd_447_432 : 16;
1650fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
1651fa8f86a1SJerin Jacob 	uint64_t rsvd_511_496 : 16;
1652fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
1653fa8f86a1SJerin Jacob 	uint64_t rsvd_575_560 : 16;
1654fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
1655fa8f86a1SJerin Jacob 	uint64_t rsvd_639_624 : 16;
1656fa8f86a1SJerin Jacob 	uint64_t re_pkts : 48;
1657fa8f86a1SJerin Jacob 	uint64_t rsvd_703_688 : 16;
1658fa8f86a1SJerin Jacob 	uint64_t rsvd_767_704 : 64;  /* W11 */
1659fa8f86a1SJerin Jacob 	uint64_t rsvd_831_768 : 64;  /* W12 */
1660fa8f86a1SJerin Jacob 	uint64_t rsvd_895_832 : 64;  /* W13 */
1661fa8f86a1SJerin Jacob 	uint64_t rsvd_959_896 : 64;  /* W14 */
1662fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_960 : 64; /* W15 */
1663fa8f86a1SJerin Jacob };
1664fa8f86a1SJerin Jacob 
1665fa8f86a1SJerin Jacob /* NIX receive side scaling entry structure */
1666fa8f86a1SJerin Jacob struct nix_rsse_s {
1667fa8f86a1SJerin Jacob 	uint32_t rq : 20;
1668fa8f86a1SJerin Jacob 	uint32_t rsvd_31_20 : 12;
1669fa8f86a1SJerin Jacob };
1670fa8f86a1SJerin Jacob 
1671fa8f86a1SJerin Jacob /* NIX receive action structure */
1672fa8f86a1SJerin Jacob struct nix_rx_action_s {
1673fa8f86a1SJerin Jacob 	uint64_t op : 4;
1674fa8f86a1SJerin Jacob 	uint64_t pf_func : 16;
1675fa8f86a1SJerin Jacob 	uint64_t index : 20;
1676fa8f86a1SJerin Jacob 	uint64_t match_id : 16;
1677fa8f86a1SJerin Jacob 	uint64_t flow_key_alg : 5;
1678fa8f86a1SJerin Jacob 	uint64_t rsvd_63_61 : 3;
1679fa8f86a1SJerin Jacob };
1680fa8f86a1SJerin Jacob 
1681fa8f86a1SJerin Jacob /* NIX receive immediate sub descriptor structure */
1682fa8f86a1SJerin Jacob struct nix_rx_imm_s {
1683fa8f86a1SJerin Jacob 	uint64_t size : 16;
1684fa8f86a1SJerin Jacob 	uint64_t apad : 3;
1685fa8f86a1SJerin Jacob 	uint64_t rsvd_59_19 : 41;
1686fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
1687fa8f86a1SJerin Jacob };
1688fa8f86a1SJerin Jacob 
1689fa8f86a1SJerin Jacob /* NIX receive multicast/mirror entry structure */
1690fa8f86a1SJerin Jacob struct nix_rx_mce_s {
1691fa8f86a1SJerin Jacob 	uint64_t op : 2;
1692fa8f86a1SJerin Jacob 	uint64_t rsvd_2 : 1;
1693fa8f86a1SJerin Jacob 	uint64_t eol : 1;
1694fa8f86a1SJerin Jacob 	uint64_t index : 20;
1695fa8f86a1SJerin Jacob 	uint64_t rsvd_31_24 : 8;
1696fa8f86a1SJerin Jacob 	uint64_t pf_func : 16;
1697fa8f86a1SJerin Jacob 	uint64_t next : 16;
1698fa8f86a1SJerin Jacob };
1699fa8f86a1SJerin Jacob 
1700fa8f86a1SJerin Jacob /* NIX receive parse structure */
1701fa8f86a1SJerin Jacob union nix_rx_parse_u {
1702fa8f86a1SJerin Jacob 	struct {
1703fa8f86a1SJerin Jacob 		uint64_t chan : 12;
1704fa8f86a1SJerin Jacob 		uint64_t desc_sizem1 : 5;
1705fa8f86a1SJerin Jacob 		uint64_t imm_copy : 1;
1706fa8f86a1SJerin Jacob 		uint64_t express : 1;
1707fa8f86a1SJerin Jacob 		uint64_t wqwd : 1;
1708fa8f86a1SJerin Jacob 		uint64_t errlev : 4;
1709fa8f86a1SJerin Jacob 		uint64_t errcode : 8;
1710fa8f86a1SJerin Jacob 		uint64_t latype : 4;
1711fa8f86a1SJerin Jacob 		uint64_t lbtype : 4;
1712fa8f86a1SJerin Jacob 		uint64_t lctype : 4;
1713fa8f86a1SJerin Jacob 		uint64_t ldtype : 4;
1714fa8f86a1SJerin Jacob 		uint64_t letype : 4;
1715fa8f86a1SJerin Jacob 		uint64_t lftype : 4;
1716fa8f86a1SJerin Jacob 		uint64_t lgtype : 4;
1717fa8f86a1SJerin Jacob 		uint64_t lhtype : 4;
1718fa8f86a1SJerin Jacob 		uint64_t pkt_lenm1 : 16;
1719fa8f86a1SJerin Jacob 		uint64_t l2m : 1;
1720fa8f86a1SJerin Jacob 		uint64_t l2b : 1;
1721fa8f86a1SJerin Jacob 		uint64_t l3m : 1;
1722fa8f86a1SJerin Jacob 		uint64_t l3b : 1;
1723fa8f86a1SJerin Jacob 		uint64_t vtag0_valid : 1;
1724fa8f86a1SJerin Jacob 		uint64_t vtag0_gone : 1;
1725fa8f86a1SJerin Jacob 		uint64_t vtag1_valid : 1;
1726fa8f86a1SJerin Jacob 		uint64_t vtag1_gone : 1;
1727fa8f86a1SJerin Jacob 		uint64_t pkind : 6;
1728fa8f86a1SJerin Jacob 		uint64_t nix_idx : 2;
1729fa8f86a1SJerin Jacob 		uint64_t vtag0_tci : 16;
1730fa8f86a1SJerin Jacob 		uint64_t vtag1_tci : 16;
1731fa8f86a1SJerin Jacob 		uint64_t laflags : 8;
1732fa8f86a1SJerin Jacob 		uint64_t lbflags : 8;
1733fa8f86a1SJerin Jacob 		uint64_t lcflags : 8;
1734fa8f86a1SJerin Jacob 		uint64_t ldflags : 8;
1735fa8f86a1SJerin Jacob 		uint64_t leflags : 8;
1736fa8f86a1SJerin Jacob 		uint64_t lfflags : 8;
1737fa8f86a1SJerin Jacob 		uint64_t lgflags : 8;
1738fa8f86a1SJerin Jacob 		uint64_t lhflags : 8;
1739fa8f86a1SJerin Jacob 		uint64_t eoh_ptr : 8;
1740fa8f86a1SJerin Jacob 		uint64_t wqe_aura : 20;
1741fa8f86a1SJerin Jacob 		uint64_t pb_aura : 20;
1742fa8f86a1SJerin Jacob 		uint64_t match_id : 16;
1743fa8f86a1SJerin Jacob 		uint64_t laptr : 8;
1744fa8f86a1SJerin Jacob 		uint64_t lbptr : 8;
1745fa8f86a1SJerin Jacob 		uint64_t lcptr : 8;
1746fa8f86a1SJerin Jacob 		uint64_t ldptr : 8;
1747fa8f86a1SJerin Jacob 		uint64_t leptr : 8;
1748fa8f86a1SJerin Jacob 		uint64_t lfptr : 8;
1749fa8f86a1SJerin Jacob 		uint64_t lgptr : 8;
1750fa8f86a1SJerin Jacob 		uint64_t lhptr : 8;
1751fa8f86a1SJerin Jacob 		uint64_t vtag0_ptr : 8;
1752fa8f86a1SJerin Jacob 		uint64_t vtag1_ptr : 8;
1753*9a01217eSSatha Rao 		uint64_t flow_key_alg : 6;
1754fa8f86a1SJerin Jacob 		uint64_t rsvd_349_342 : 8;
1755fa8f86a1SJerin Jacob 		uint64_t rsvd_353_350 : 4;
1756fa8f86a1SJerin Jacob 		uint64_t rsvd_359_354 : 6;
1757fa8f86a1SJerin Jacob 		uint64_t color : 2;
1758*9a01217eSSatha Rao 		uint64_t mcs_mdata    : 14;
1759*9a01217eSSatha Rao 		uint64_t rsvd_381_376 : 6;
1760fa8f86a1SJerin Jacob 		uint64_t rsvd_382 : 1;
1761fa8f86a1SJerin Jacob 		uint64_t rsvd_383 : 1;
1762fa8f86a1SJerin Jacob 		uint64_t rsvd_447_384 : 64; /* W6 */
1763fa8f86a1SJerin Jacob 	};
1764fa8f86a1SJerin Jacob 	struct {
1765fa8f86a1SJerin Jacob 		uint64_t chan : 12;
1766fa8f86a1SJerin Jacob 		uint64_t desc_sizem1 : 5;
1767fa8f86a1SJerin Jacob 		uint64_t imm_copy : 1;
1768fa8f86a1SJerin Jacob 		uint64_t express : 1;
1769fa8f86a1SJerin Jacob 		uint64_t wqwd : 1;
1770fa8f86a1SJerin Jacob 		uint64_t errlev : 4;
1771fa8f86a1SJerin Jacob 		uint64_t errcode : 8;
1772fa8f86a1SJerin Jacob 		uint64_t latype : 4;
1773fa8f86a1SJerin Jacob 		uint64_t lbtype : 4;
1774fa8f86a1SJerin Jacob 		uint64_t lctype : 4;
1775fa8f86a1SJerin Jacob 		uint64_t ldtype : 4;
1776fa8f86a1SJerin Jacob 		uint64_t letype : 4;
1777fa8f86a1SJerin Jacob 		uint64_t lftype : 4;
1778fa8f86a1SJerin Jacob 		uint64_t lgtype : 4;
1779fa8f86a1SJerin Jacob 		uint64_t lhtype : 4;
1780fa8f86a1SJerin Jacob 		uint64_t pkt_lenm1 : 16;
1781fa8f86a1SJerin Jacob 		uint64_t l2m : 1;
1782fa8f86a1SJerin Jacob 		uint64_t l2b : 1;
1783fa8f86a1SJerin Jacob 		uint64_t l3m : 1;
1784fa8f86a1SJerin Jacob 		uint64_t l3b : 1;
1785fa8f86a1SJerin Jacob 		uint64_t vtag0_valid : 1;
1786fa8f86a1SJerin Jacob 		uint64_t vtag0_gone : 1;
1787fa8f86a1SJerin Jacob 		uint64_t vtag1_valid : 1;
1788fa8f86a1SJerin Jacob 		uint64_t vtag1_gone : 1;
1789fa8f86a1SJerin Jacob 		uint64_t pkind : 6;
1790fa8f86a1SJerin Jacob 		uint64_t rsvd_95_94 : 2;
1791fa8f86a1SJerin Jacob 		uint64_t vtag0_tci : 16;
1792fa8f86a1SJerin Jacob 		uint64_t vtag1_tci : 16;
1793fa8f86a1SJerin Jacob 		uint64_t laflags : 8;
1794fa8f86a1SJerin Jacob 		uint64_t lbflags : 8;
1795fa8f86a1SJerin Jacob 		uint64_t lcflags : 8;
1796fa8f86a1SJerin Jacob 		uint64_t ldflags : 8;
1797fa8f86a1SJerin Jacob 		uint64_t leflags : 8;
1798fa8f86a1SJerin Jacob 		uint64_t lfflags : 8;
1799fa8f86a1SJerin Jacob 		uint64_t lgflags : 8;
1800fa8f86a1SJerin Jacob 		uint64_t lhflags : 8;
1801fa8f86a1SJerin Jacob 		uint64_t eoh_ptr : 8;
1802fa8f86a1SJerin Jacob 		uint64_t wqe_aura : 20;
1803fa8f86a1SJerin Jacob 		uint64_t pb_aura : 20;
1804fa8f86a1SJerin Jacob 		uint64_t match_id : 16;
1805fa8f86a1SJerin Jacob 		uint64_t laptr : 8;
1806fa8f86a1SJerin Jacob 		uint64_t lbptr : 8;
1807fa8f86a1SJerin Jacob 		uint64_t lcptr : 8;
1808fa8f86a1SJerin Jacob 		uint64_t ldptr : 8;
1809fa8f86a1SJerin Jacob 		uint64_t leptr : 8;
1810fa8f86a1SJerin Jacob 		uint64_t lfptr : 8;
1811fa8f86a1SJerin Jacob 		uint64_t lgptr : 8;
1812fa8f86a1SJerin Jacob 		uint64_t lhptr : 8;
1813fa8f86a1SJerin Jacob 		uint64_t vtag0_ptr : 8;
1814fa8f86a1SJerin Jacob 		uint64_t vtag1_ptr : 8;
1815fa8f86a1SJerin Jacob 		uint64_t flow_key_alg : 5;
1816fa8f86a1SJerin Jacob 		uint64_t rsvd_383_341 : 43;
1817fa8f86a1SJerin Jacob 		uint64_t rsvd_447_384 : 64; /* W6 */
1818fa8f86a1SJerin Jacob 	} cn9k;
1819fa8f86a1SJerin Jacob };
1820fa8f86a1SJerin Jacob 
1821fa8f86a1SJerin Jacob /* NIX receive scatter/gather sub descriptor structure */
1822fa8f86a1SJerin Jacob struct nix_rx_sg_s {
1823fa8f86a1SJerin Jacob 	uint64_t seg1_size : 16;
1824fa8f86a1SJerin Jacob 	uint64_t seg2_size : 16;
1825fa8f86a1SJerin Jacob 	uint64_t seg3_size : 16;
1826fa8f86a1SJerin Jacob 	uint64_t segs : 2;
1827fa8f86a1SJerin Jacob 	uint64_t rsvd_59_50 : 10;
1828fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
1829fa8f86a1SJerin Jacob };
1830fa8f86a1SJerin Jacob 
1831fa8f86a1SJerin Jacob /* NIX receive vtag action structure */
1832fa8f86a1SJerin Jacob union nix_rx_vtag_action_u {
1833fa8f86a1SJerin Jacob 	struct {
1834fa8f86a1SJerin Jacob 		uint64_t vtag0_relptr : 8;
1835fa8f86a1SJerin Jacob 		uint64_t vtag0_lid : 3;
1836fa8f86a1SJerin Jacob 		uint64_t sa_xor : 1;
1837fa8f86a1SJerin Jacob 		uint64_t vtag0_type : 3;
1838fa8f86a1SJerin Jacob 		uint64_t vtag0_valid : 1;
1839fa8f86a1SJerin Jacob 		uint64_t sa_lo : 16;
1840fa8f86a1SJerin Jacob 		uint64_t vtag1_relptr : 8;
1841fa8f86a1SJerin Jacob 		uint64_t vtag1_lid : 3;
1842fa8f86a1SJerin Jacob 		uint64_t rsvd_43 : 1;
1843fa8f86a1SJerin Jacob 		uint64_t vtag1_type : 3;
1844fa8f86a1SJerin Jacob 		uint64_t vtag1_valid : 1;
1845fa8f86a1SJerin Jacob 		uint64_t sa_hi : 16;
1846fa8f86a1SJerin Jacob 	};
1847fa8f86a1SJerin Jacob 	struct {
1848fa8f86a1SJerin Jacob 		uint64_t vtag0_relptr : 8;
1849fa8f86a1SJerin Jacob 		uint64_t vtag0_lid : 3;
1850fa8f86a1SJerin Jacob 		uint64_t rsvd_11 : 1;
1851fa8f86a1SJerin Jacob 		uint64_t vtag0_type : 3;
1852fa8f86a1SJerin Jacob 		uint64_t vtag0_valid : 1;
1853fa8f86a1SJerin Jacob 		uint64_t rsvd_31_16 : 16;
1854fa8f86a1SJerin Jacob 		uint64_t vtag1_relptr : 8;
1855fa8f86a1SJerin Jacob 		uint64_t vtag1_lid : 3;
1856fa8f86a1SJerin Jacob 		uint64_t rsvd_43 : 1;
1857fa8f86a1SJerin Jacob 		uint64_t vtag1_type : 3;
1858fa8f86a1SJerin Jacob 		uint64_t vtag1_valid : 1;
1859fa8f86a1SJerin Jacob 		uint64_t rsvd_63_48 : 16;
1860fa8f86a1SJerin Jacob 	} cn9k;
1861fa8f86a1SJerin Jacob };
1862fa8f86a1SJerin Jacob 
1863fa8f86a1SJerin Jacob /* NIX send completion structure */
1864fa8f86a1SJerin Jacob struct nix_send_comp_s {
1865fa8f86a1SJerin Jacob 	uint64_t status : 8;
1866fa8f86a1SJerin Jacob 	uint64_t sqe_id : 16;
1867fa8f86a1SJerin Jacob 	uint64_t rsvd_63_24 : 40;
1868fa8f86a1SJerin Jacob };
1869fa8f86a1SJerin Jacob 
1870fa8f86a1SJerin Jacob /* NIX send CRC sub descriptor structure */
1871fa8f86a1SJerin Jacob struct nix_send_crc_s {
1872fa8f86a1SJerin Jacob 	uint64_t size : 16;
1873fa8f86a1SJerin Jacob 	uint64_t start : 16;
1874fa8f86a1SJerin Jacob 	uint64_t insert : 16;
1875fa8f86a1SJerin Jacob 	uint64_t rsvd_57_48 : 10;
1876fa8f86a1SJerin Jacob 	uint64_t alg : 2;
1877fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
1878fa8f86a1SJerin Jacob 	uint64_t iv : 32;
1879fa8f86a1SJerin Jacob 	uint64_t rsvd_127_96 : 32;
1880fa8f86a1SJerin Jacob };
1881fa8f86a1SJerin Jacob 
1882fa8f86a1SJerin Jacob /* NIX send extended header sub descriptor structure */
1883fa8f86a1SJerin Jacob union nix_send_ext_w0_u {
1884fa8f86a1SJerin Jacob 	uint64_t u;
1885fa8f86a1SJerin Jacob 	struct {
1886fa8f86a1SJerin Jacob 		uint64_t lso_mps : 14;
1887fa8f86a1SJerin Jacob 		uint64_t lso : 1;
1888fa8f86a1SJerin Jacob 		uint64_t tstmp : 1;
1889fa8f86a1SJerin Jacob 		uint64_t lso_sb : 8;
1890fa8f86a1SJerin Jacob 		uint64_t lso_format : 5;
1891fa8f86a1SJerin Jacob 		uint64_t rsvd_31_29 : 3;
1892fa8f86a1SJerin Jacob 		uint64_t shp_chg : 9;
1893fa8f86a1SJerin Jacob 		uint64_t shp_dis : 1;
1894fa8f86a1SJerin Jacob 		uint64_t shp_ra : 2;
1895fa8f86a1SJerin Jacob 		uint64_t markptr : 8;
1896fa8f86a1SJerin Jacob 		uint64_t markform : 7;
1897fa8f86a1SJerin Jacob 		uint64_t mark_en : 1;
1898fa8f86a1SJerin Jacob 		uint64_t subdc : 4;
1899fa8f86a1SJerin Jacob 	};
1900fa8f86a1SJerin Jacob };
1901fa8f86a1SJerin Jacob 
1902fa8f86a1SJerin Jacob union nix_send_ext_w1_u {
1903fa8f86a1SJerin Jacob 	uint64_t u;
1904fa8f86a1SJerin Jacob 	struct {
1905fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_ptr : 8;
1906fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_tci : 16;
1907fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_ptr : 8;
1908fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_tci : 16;
1909fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_ena : 1;
1910fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_ena : 1;
1911fa8f86a1SJerin Jacob 		uint64_t init_color : 2;
1912*9a01217eSSatha Rao 		uint64_t flow_id       : 7;
1913*9a01217eSSatha Rao 		uint64_t flow_override : 1;
1914*9a01217eSSatha Rao 		uint64_t rsvd_127_124 : 4;
1915fa8f86a1SJerin Jacob 	};
1916fa8f86a1SJerin Jacob 	struct {
1917fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_ptr : 8;
1918fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_tci : 16;
1919fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_ptr : 8;
1920fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_tci : 16;
1921fa8f86a1SJerin Jacob 		uint64_t vlan0_ins_ena : 1;
1922fa8f86a1SJerin Jacob 		uint64_t vlan1_ins_ena : 1;
1923fa8f86a1SJerin Jacob 		uint64_t rsvd_127_114 : 14;
1924fa8f86a1SJerin Jacob 	} cn9k;
1925fa8f86a1SJerin Jacob };
1926fa8f86a1SJerin Jacob 
1927fa8f86a1SJerin Jacob struct nix_send_ext_s {
1928fa8f86a1SJerin Jacob 	union nix_send_ext_w0_u w0;
1929fa8f86a1SJerin Jacob 	union nix_send_ext_w1_u w1;
1930fa8f86a1SJerin Jacob };
1931fa8f86a1SJerin Jacob 
1932fa8f86a1SJerin Jacob /* NIX send header sub descriptor structure */
1933fa8f86a1SJerin Jacob union nix_send_hdr_w0_u {
1934fa8f86a1SJerin Jacob 	uint64_t u;
1935fa8f86a1SJerin Jacob 	struct {
1936fa8f86a1SJerin Jacob 		uint64_t total : 18;
1937*9a01217eSSatha Rao 		uint64_t cpt_error : 1;
1938fa8f86a1SJerin Jacob 		uint64_t df : 1;
1939fa8f86a1SJerin Jacob 		uint64_t aura : 20;
1940fa8f86a1SJerin Jacob 		uint64_t sizem1 : 3;
1941fa8f86a1SJerin Jacob 		uint64_t pnc : 1;
1942fa8f86a1SJerin Jacob 		uint64_t sq : 20;
1943fa8f86a1SJerin Jacob 	};
1944fa8f86a1SJerin Jacob };
1945fa8f86a1SJerin Jacob 
1946fa8f86a1SJerin Jacob union nix_send_hdr_w1_u {
1947fa8f86a1SJerin Jacob 	uint64_t u;
1948fa8f86a1SJerin Jacob 	struct {
1949fa8f86a1SJerin Jacob 		uint64_t ol3ptr : 8;
1950fa8f86a1SJerin Jacob 		uint64_t ol4ptr : 8;
1951fa8f86a1SJerin Jacob 		uint64_t il3ptr : 8;
1952fa8f86a1SJerin Jacob 		uint64_t il4ptr : 8;
1953fa8f86a1SJerin Jacob 		uint64_t ol3type : 4;
1954fa8f86a1SJerin Jacob 		uint64_t ol4type : 4;
1955fa8f86a1SJerin Jacob 		uint64_t il3type : 4;
1956fa8f86a1SJerin Jacob 		uint64_t il4type : 4;
1957fa8f86a1SJerin Jacob 		uint64_t sqe_id : 16;
1958fa8f86a1SJerin Jacob 	};
1959fa8f86a1SJerin Jacob };
1960fa8f86a1SJerin Jacob 
1961fa8f86a1SJerin Jacob struct nix_send_hdr_s {
1962fa8f86a1SJerin Jacob 	union nix_send_hdr_w0_u w0;
1963fa8f86a1SJerin Jacob 	union nix_send_hdr_w1_u w1;
1964fa8f86a1SJerin Jacob };
1965fa8f86a1SJerin Jacob 
1966fa8f86a1SJerin Jacob /* NIX send immediate sub descriptor structure */
1967fa8f86a1SJerin Jacob struct nix_send_imm_s {
1968fa8f86a1SJerin Jacob 	uint64_t size : 16;
1969fa8f86a1SJerin Jacob 	uint64_t apad : 3;
1970fa8f86a1SJerin Jacob 	uint64_t rsvd_59_19 : 41;
1971fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
1972fa8f86a1SJerin Jacob };
1973fa8f86a1SJerin Jacob 
1974fa8f86a1SJerin Jacob /* NIX send jump sub descriptor structure */
1975fa8f86a1SJerin Jacob struct nix_send_jump_s {
1976fa8f86a1SJerin Jacob 	uint64_t sizem1 : 7;
1977fa8f86a1SJerin Jacob 	uint64_t rsvd_13_7 : 7;
1978fa8f86a1SJerin Jacob 	uint64_t ld_type : 2;
1979fa8f86a1SJerin Jacob 	uint64_t aura : 20;
1980*9a01217eSSatha Rao 	uint64_t refcnt_en  : 1;
1981*9a01217eSSatha Rao 	uint64_t rsvd_58_37 : 22;
1982fa8f86a1SJerin Jacob 	uint64_t f : 1;
1983fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
1984fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W1 */
1985fa8f86a1SJerin Jacob };
1986fa8f86a1SJerin Jacob 
1987fa8f86a1SJerin Jacob /* NIX send memory sub descriptor structure */
1988fa8f86a1SJerin Jacob union nix_send_mem_w0_u {
1989fa8f86a1SJerin Jacob 	uint64_t u;
1990fa8f86a1SJerin Jacob 	struct {
1991fa8f86a1SJerin Jacob 		uint64_t offset : 16;
1992*9a01217eSSatha Rao 		uint64_t base_ns     : 32;
1993*9a01217eSSatha Rao 		uint64_t step_type   : 1;
1994*9a01217eSSatha Rao 		uint64_t rsvd_50_49  : 2;
1995*9a01217eSSatha Rao 		uint64_t coas_en     : 1;
1996fa8f86a1SJerin Jacob 		uint64_t per_lso_seg : 1;
1997fa8f86a1SJerin Jacob 		uint64_t wmem : 1;
1998fa8f86a1SJerin Jacob 		uint64_t dsz : 2;
1999fa8f86a1SJerin Jacob 		uint64_t alg : 4;
2000fa8f86a1SJerin Jacob 		uint64_t subdc : 4;
2001fa8f86a1SJerin Jacob 	};
2002fa8f86a1SJerin Jacob 	struct {
2003fa8f86a1SJerin Jacob 		uint64_t offset : 16;
2004fa8f86a1SJerin Jacob 		uint64_t rsvd_52_16 : 37;
2005fa8f86a1SJerin Jacob 		uint64_t wmem : 1;
2006fa8f86a1SJerin Jacob 		uint64_t dsz : 2;
2007fa8f86a1SJerin Jacob 		uint64_t alg : 4;
2008fa8f86a1SJerin Jacob 		uint64_t subdc : 4;
2009fa8f86a1SJerin Jacob 	} cn9k;
2010fa8f86a1SJerin Jacob };
2011fa8f86a1SJerin Jacob 
2012fa8f86a1SJerin Jacob struct nix_send_mem_s {
2013fa8f86a1SJerin Jacob 	union nix_send_mem_w0_u w0;
2014fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W1 */
2015fa8f86a1SJerin Jacob };
2016fa8f86a1SJerin Jacob 
2017fa8f86a1SJerin Jacob /* NIX send scatter/gather sub descriptor structure */
2018fa8f86a1SJerin Jacob union nix_send_sg2_s {
2019fa8f86a1SJerin Jacob 	uint64_t u;
2020fa8f86a1SJerin Jacob 	struct {
2021fa8f86a1SJerin Jacob 		uint64_t seg1_size : 16;
2022fa8f86a1SJerin Jacob 		uint64_t aura : 20;
2023fa8f86a1SJerin Jacob 		uint64_t i1 : 1;
2024fa8f86a1SJerin Jacob 		uint64_t fabs : 1;
2025fa8f86a1SJerin Jacob 		uint64_t foff : 8;
2026*9a01217eSSatha Rao 		uint64_t refcnt_en1 : 1;
2027*9a01217eSSatha Rao 		uint64_t rsvd_57_47 : 11;
2028fa8f86a1SJerin Jacob 		uint64_t ld_type : 2;
2029fa8f86a1SJerin Jacob 		uint64_t subdc : 4;
2030fa8f86a1SJerin Jacob 	};
2031fa8f86a1SJerin Jacob };
2032fa8f86a1SJerin Jacob 
2033fa8f86a1SJerin Jacob union nix_send_sg_s {
2034fa8f86a1SJerin Jacob 	uint64_t u;
2035fa8f86a1SJerin Jacob 	struct {
2036fa8f86a1SJerin Jacob 		uint64_t seg1_size : 16;
2037fa8f86a1SJerin Jacob 		uint64_t seg2_size : 16;
2038fa8f86a1SJerin Jacob 		uint64_t seg3_size : 16;
2039fa8f86a1SJerin Jacob 		uint64_t segs : 2;
2040*9a01217eSSatha Rao 		uint64_t rsvd_51_50 : 2;
2041*9a01217eSSatha Rao 		uint64_t refcnt_en1 : 1;
2042*9a01217eSSatha Rao 		uint64_t refcnt_en2 : 1;
2043*9a01217eSSatha Rao 		uint64_t refcnt_en3 : 1;
2044fa8f86a1SJerin Jacob 		uint64_t i1 : 1;
2045fa8f86a1SJerin Jacob 		uint64_t i2 : 1;
2046fa8f86a1SJerin Jacob 		uint64_t i3 : 1;
2047fa8f86a1SJerin Jacob 		uint64_t ld_type : 2;
2048fa8f86a1SJerin Jacob 		uint64_t subdc : 4;
2049fa8f86a1SJerin Jacob 	};
2050fa8f86a1SJerin Jacob };
2051fa8f86a1SJerin Jacob 
2052fa8f86a1SJerin Jacob /* NIX send work sub descriptor structure */
2053fa8f86a1SJerin Jacob struct nix_send_work_s {
2054fa8f86a1SJerin Jacob 	uint64_t tag : 32;
2055fa8f86a1SJerin Jacob 	uint64_t tt : 2;
2056fa8f86a1SJerin Jacob 	uint64_t grp : 10;
2057fa8f86a1SJerin Jacob 	uint64_t rsvd_59_44 : 16;
2058fa8f86a1SJerin Jacob 	uint64_t subdc : 4;
2059fa8f86a1SJerin Jacob 	uint64_t addr : 64; /* W1 */
2060fa8f86a1SJerin Jacob };
2061fa8f86a1SJerin Jacob 
2062*9a01217eSSatha Rao /* [CN20K, .) NIX sq context hardware structure */
2063*9a01217eSSatha Rao struct nix_cn20k_sq_ctx_hw_s {
2064*9a01217eSSatha Rao 	uint64_t ena : 1;
2065*9a01217eSSatha Rao 	uint64_t substream : 20;
2066*9a01217eSSatha Rao 	uint64_t max_sqe_size : 2;
2067*9a01217eSSatha Rao 	uint64_t sqe_way_mask : 16;
2068*9a01217eSSatha Rao 	uint64_t sqb_aura : 20;
2069*9a01217eSSatha Rao 	uint64_t gbl_rsvd1 : 5;
2070*9a01217eSSatha Rao 	uint64_t cq_id : 20; /* W1 */
2071*9a01217eSSatha Rao 	uint64_t cq_ena : 1;
2072*9a01217eSSatha Rao 	uint64_t qint_idx : 6;
2073*9a01217eSSatha Rao 	uint64_t gbl_rsvd2 : 1;
2074*9a01217eSSatha Rao 	uint64_t sq_int : 8;
2075*9a01217eSSatha Rao 	uint64_t sq_int_ena : 8;
2076*9a01217eSSatha Rao 	uint64_t xoff : 1;
2077*9a01217eSSatha Rao 	uint64_t sqe_stype : 2;
2078*9a01217eSSatha Rao 	uint64_t gbl_rsvd : 17;
2079*9a01217eSSatha Rao 	uint64_t head_sqb : 64; /* W2 */
2080*9a01217eSSatha Rao 	uint64_t head_offset : 6; /* W3 */
2081*9a01217eSSatha Rao 	uint64_t sqb_dequeue_count : 16;
2082*9a01217eSSatha Rao 	uint64_t default_chan : 12;
2083*9a01217eSSatha Rao 	uint64_t sdp_mcast : 1;
2084*9a01217eSSatha Rao 	uint64_t sso_ena : 1;
2085*9a01217eSSatha Rao 	uint64_t dse_rsvd1 : 28;
2086*9a01217eSSatha Rao 	uint64_t sqb_enqueue_count : 16; /* W4 */
2087*9a01217eSSatha Rao 	uint64_t tail_offset : 6;
2088*9a01217eSSatha Rao 	uint64_t lmt_dis : 1;
2089*9a01217eSSatha Rao 	uint64_t smq_rr_weight : 14;
2090*9a01217eSSatha Rao 	uint64_t dnq_rsvd1 : 27;
2091*9a01217eSSatha Rao 	uint64_t tail_sqb : 64; /* W5 */
2092*9a01217eSSatha Rao 	uint64_t next_sqb : 64; /* W6 */
2093*9a01217eSSatha Rao 	uint64_t smq : 11; /* W7 */
2094*9a01217eSSatha Rao 	uint64_t smq_pend : 1;
2095*9a01217eSSatha Rao 	uint64_t smq_next_sq : 20;
2096*9a01217eSSatha Rao 	uint64_t smq_next_sq_vld : 1;
2097*9a01217eSSatha Rao 	uint64_t mnq_dis : 1;
2098*9a01217eSSatha Rao 	uint64_t scm1_rsvd2 : 30;
2099*9a01217eSSatha Rao 	uint64_t smenq_sqb : 64; /* W8 */
2100*9a01217eSSatha Rao 	uint64_t smenq_offset : 6; /* W9 */
2101*9a01217eSSatha Rao 	uint64_t cq_limit : 8;
2102*9a01217eSSatha Rao 	uint64_t smq_rr_count : 32;
2103*9a01217eSSatha Rao 	uint64_t scm_lso_rem : 18;
2104*9a01217eSSatha Rao 	uint64_t smq_lso_segnum : 8; /* W10 */
2105*9a01217eSSatha Rao 	uint64_t vfi_lso_total : 18;
2106*9a01217eSSatha Rao 	uint64_t vfi_lso_sizem1 : 3;
2107*9a01217eSSatha Rao 	uint64_t vfi_lso_sb : 8;
2108*9a01217eSSatha Rao 	uint64_t vfi_lso_mps : 14;
2109*9a01217eSSatha Rao 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2110*9a01217eSSatha Rao 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2111*9a01217eSSatha Rao 	uint64_t vfi_lso_vld : 1;
2112*9a01217eSSatha Rao 	uint64_t smenq_next_sqb_vld : 1;
2113*9a01217eSSatha Rao 	uint64_t scm_dq_rsvd1 : 9;
2114*9a01217eSSatha Rao 	uint64_t smenq_next_sqb : 64; /* W11 */
2115*9a01217eSSatha Rao 	uint64_t age_drop_octs : 32; /* W12 */
2116*9a01217eSSatha Rao 	uint64_t age_drop_pkts : 32;
2117*9a01217eSSatha Rao 	uint64_t drop_pkts : 48; /* W13 */
2118*9a01217eSSatha Rao 	uint64_t drop_octs_lsw : 16;
2119*9a01217eSSatha Rao 	uint64_t drop_octs_msw : 32; /* W14 */
2120*9a01217eSSatha Rao 	uint64_t pkts_lsw : 32;
2121*9a01217eSSatha Rao 	uint64_t pkts_msw : 16; /* W15 */
2122*9a01217eSSatha Rao 	uint64_t octs : 48;
2123*9a01217eSSatha Rao };
2124*9a01217eSSatha Rao 
2125*9a01217eSSatha Rao /* [CN20K, .) NIX Send queue context structure */
2126*9a01217eSSatha Rao struct nix_cn20k_sq_ctx_s {
2127*9a01217eSSatha Rao 	uint64_t ena : 1; /* W0 */
2128*9a01217eSSatha Rao 	uint64_t qint_idx : 6;
2129*9a01217eSSatha Rao 	uint64_t substream : 20;
2130*9a01217eSSatha Rao 	uint64_t sdp_mcast :  1;
2131*9a01217eSSatha Rao 	uint64_t cq : 20;
2132*9a01217eSSatha Rao 	uint64_t sqe_way_mask : 16;
2133*9a01217eSSatha Rao 	uint64_t smq : 11; /* W1 */
2134*9a01217eSSatha Rao 	uint64_t cq_ena : 1;
2135*9a01217eSSatha Rao 	uint64_t xoff : 1;
2136*9a01217eSSatha Rao 	uint64_t sso_ena : 1;
2137*9a01217eSSatha Rao 	uint64_t smq_rr_weight : 14;
2138*9a01217eSSatha Rao 	uint64_t default_chan : 12;
2139*9a01217eSSatha Rao 	uint64_t sqb_count : 16;
2140*9a01217eSSatha Rao 	uint64_t reserved_120_120 : 1;
2141*9a01217eSSatha Rao 	uint64_t smq_rr_count_lb : 7;
2142*9a01217eSSatha Rao 	uint64_t smq_rr_count_ub : 25; /* W2 */
2143*9a01217eSSatha Rao 	uint64_t sqb_aura : 20;
2144*9a01217eSSatha Rao 	uint64_t sq_int : 8;
2145*9a01217eSSatha Rao 	uint64_t sq_int_ena : 8;
2146*9a01217eSSatha Rao 	uint64_t sqe_stype : 2;
2147*9a01217eSSatha Rao 	uint64_t reserved_191_191 : 1;
2148*9a01217eSSatha Rao 	uint64_t max_sqe_size : 2; /* W3 */
2149*9a01217eSSatha Rao 	uint64_t cq_limit : 8;
2150*9a01217eSSatha Rao 	uint64_t lmt_dis : 1;
2151*9a01217eSSatha Rao 	uint64_t mnq_dis : 1;
2152*9a01217eSSatha Rao 	uint64_t smq_next_sq : 20;
2153*9a01217eSSatha Rao 	uint64_t smq_lso_segnum :  8;
2154*9a01217eSSatha Rao 	uint64_t tail_offset :  6;
2155*9a01217eSSatha Rao 	uint64_t smenq_offset :  6;
2156*9a01217eSSatha Rao 	uint64_t head_offset :  6;
2157*9a01217eSSatha Rao 	uint64_t smenq_next_sqb_vld :  1;
2158*9a01217eSSatha Rao 	uint64_t smq_pend :  1;
2159*9a01217eSSatha Rao 	uint64_t smq_next_sq_vld :  1;
2160*9a01217eSSatha Rao 	uint64_t reserved_253_255 :  3;
2161*9a01217eSSatha Rao 	uint64_t next_sqb : 64; /* W4 */
2162*9a01217eSSatha Rao 	uint64_t tail_sqb : 64; /* W5 */
2163*9a01217eSSatha Rao 	uint64_t smenq_sqb : 64; /* W6 */
2164*9a01217eSSatha Rao 	uint64_t smenq_next_sqb : 64; /* W7 */
2165*9a01217eSSatha Rao 	uint64_t head_sqb : 64; /* W8 */
2166*9a01217eSSatha Rao 	uint64_t reserved_576_583 : 8; /* W9 */
2167*9a01217eSSatha Rao 	uint64_t vfi_lso_total : 18;
2168*9a01217eSSatha Rao 	uint64_t vfi_lso_sizem1 : 3;
2169*9a01217eSSatha Rao 	uint64_t vfi_lso_sb : 8;
2170*9a01217eSSatha Rao 	uint64_t vfi_lso_mps : 14;
2171*9a01217eSSatha Rao 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2172*9a01217eSSatha Rao 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2173*9a01217eSSatha Rao 	uint64_t vfi_lso_vld : 1;
2174*9a01217eSSatha Rao 	uint64_t reserved_630_639 : 10;
2175*9a01217eSSatha Rao 	uint64_t scm_lso_rem : 18; /* W10 */
2176*9a01217eSSatha Rao 	uint64_t reserved_658_703 : 46;
2177*9a01217eSSatha Rao 	uint64_t octs : 48; /* W11 */
2178*9a01217eSSatha Rao 	uint64_t reserved_752_767 : 16;
2179*9a01217eSSatha Rao 	uint64_t pkts : 48; /* W12 */
2180*9a01217eSSatha Rao 	uint64_t reserved_816_831 : 16;
2181*9a01217eSSatha Rao 	uint64_t aged_drop_octs : 32; /* W13 */
2182*9a01217eSSatha Rao 	uint64_t aged_drop_pkts : 32;
2183*9a01217eSSatha Rao 	uint64_t drop_octs : 48; /* W14 */
2184*9a01217eSSatha Rao 	uint64_t reserved_944_959 : 16;
2185*9a01217eSSatha Rao 	uint64_t drop_pkts : 48; /* W15 */
2186*9a01217eSSatha Rao 	uint64_t reserved_1008_1023 : 16;
2187*9a01217eSSatha Rao };
2188*9a01217eSSatha Rao 
2189fa8f86a1SJerin Jacob /* [CN10K, .) NIX sq context hardware structure */
2190fa8f86a1SJerin Jacob struct nix_cn10k_sq_ctx_hw_s {
2191fa8f86a1SJerin Jacob 	uint64_t ena : 1;
2192fa8f86a1SJerin Jacob 	uint64_t substream : 20;
2193fa8f86a1SJerin Jacob 	uint64_t max_sqe_size : 2;
2194fa8f86a1SJerin Jacob 	uint64_t sqe_way_mask : 16;
2195fa8f86a1SJerin Jacob 	uint64_t sqb_aura : 20;
2196fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd1 : 5;
2197fa8f86a1SJerin Jacob 	uint64_t cq_id : 20;
2198fa8f86a1SJerin Jacob 	uint64_t cq_ena : 1;
2199fa8f86a1SJerin Jacob 	uint64_t qint_idx : 6;
2200fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd2 : 1;
2201fa8f86a1SJerin Jacob 	uint64_t sq_int : 8;
2202fa8f86a1SJerin Jacob 	uint64_t sq_int_ena : 8;
2203fa8f86a1SJerin Jacob 	uint64_t xoff : 1;
2204fa8f86a1SJerin Jacob 	uint64_t sqe_stype : 2;
2205fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd : 17;
2206fa8f86a1SJerin Jacob 	uint64_t head_sqb : 64; /* W2 */
2207fa8f86a1SJerin Jacob 	uint64_t head_offset : 6;
2208fa8f86a1SJerin Jacob 	uint64_t sqb_dequeue_count : 16;
2209fa8f86a1SJerin Jacob 	uint64_t default_chan : 12;
2210fa8f86a1SJerin Jacob 	uint64_t sdp_mcast : 1;
2211fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
2212fa8f86a1SJerin Jacob 	uint64_t dse_rsvd1 : 28;
2213fa8f86a1SJerin Jacob 	uint64_t sqb_enqueue_count : 16;
2214fa8f86a1SJerin Jacob 	uint64_t tail_offset : 6;
2215fa8f86a1SJerin Jacob 	uint64_t lmt_dis : 1;
2216fa8f86a1SJerin Jacob 	uint64_t smq_rr_weight : 14;
2217fa8f86a1SJerin Jacob 	uint64_t dnq_rsvd1 : 27;
2218fa8f86a1SJerin Jacob 	uint64_t tail_sqb : 64; /* W5 */
2219fa8f86a1SJerin Jacob 	uint64_t next_sqb : 64; /* W6 */
2220fa8f86a1SJerin Jacob 	uint64_t smq : 10;
2221fa8f86a1SJerin Jacob 	uint64_t smq_pend : 1;
2222fa8f86a1SJerin Jacob 	uint64_t smq_next_sq : 20;
2223fa8f86a1SJerin Jacob 	uint64_t smq_next_sq_vld : 1;
2224fa8f86a1SJerin Jacob 	uint64_t mnq_dis : 1;
2225fa8f86a1SJerin Jacob 	uint64_t scm1_rsvd2 : 31;
2226fa8f86a1SJerin Jacob 	uint64_t smenq_sqb : 64; /* W8 */
2227fa8f86a1SJerin Jacob 	uint64_t smenq_offset : 6;
2228fa8f86a1SJerin Jacob 	uint64_t cq_limit : 8;
2229fa8f86a1SJerin Jacob 	uint64_t smq_rr_count : 32;
2230fa8f86a1SJerin Jacob 	uint64_t scm_lso_rem : 18;
2231fa8f86a1SJerin Jacob 	uint64_t smq_lso_segnum : 8;
2232fa8f86a1SJerin Jacob 	uint64_t vfi_lso_total : 18;
2233fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sizem1 : 3;
2234fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sb : 8;
2235fa8f86a1SJerin Jacob 	uint64_t vfi_lso_mps : 14;
2236fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2237fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2238fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vld : 1;
2239fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb_vld : 1;
2240fa8f86a1SJerin Jacob 	uint64_t scm_dq_rsvd1 : 9;
2241fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb : 64; /* W11 */
2242fa8f86a1SJerin Jacob 	uint64_t age_drop_octs : 32;
2243fa8f86a1SJerin Jacob 	uint64_t age_drop_pkts : 32;
2244fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
2245fa8f86a1SJerin Jacob 	uint64_t drop_octs_lsw : 16;
2246fa8f86a1SJerin Jacob 	uint64_t drop_octs_msw : 32;
2247fa8f86a1SJerin Jacob 	uint64_t pkts_lsw : 32;
2248fa8f86a1SJerin Jacob 	uint64_t pkts_msw : 16;
2249fa8f86a1SJerin Jacob 	uint64_t octs : 48;
2250fa8f86a1SJerin Jacob };
2251fa8f86a1SJerin Jacob 
2252fa8f86a1SJerin Jacob /* NIX sq context hardware structure */
2253fa8f86a1SJerin Jacob struct nix_sq_ctx_hw_s {
2254fa8f86a1SJerin Jacob 	uint64_t ena : 1;
2255fa8f86a1SJerin Jacob 	uint64_t substream : 20;
2256fa8f86a1SJerin Jacob 	uint64_t max_sqe_size : 2;
2257fa8f86a1SJerin Jacob 	uint64_t sqe_way_mask : 16;
2258fa8f86a1SJerin Jacob 	uint64_t sqb_aura : 20;
2259fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd1 : 5;
2260fa8f86a1SJerin Jacob 	uint64_t cq_id : 20;
2261fa8f86a1SJerin Jacob 	uint64_t cq_ena : 1;
2262fa8f86a1SJerin Jacob 	uint64_t qint_idx : 6;
2263fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd2 : 1;
2264fa8f86a1SJerin Jacob 	uint64_t sq_int : 8;
2265fa8f86a1SJerin Jacob 	uint64_t sq_int_ena : 8;
2266fa8f86a1SJerin Jacob 	uint64_t xoff : 1;
2267fa8f86a1SJerin Jacob 	uint64_t sqe_stype : 2;
2268fa8f86a1SJerin Jacob 	uint64_t gbl_rsvd : 17;
2269fa8f86a1SJerin Jacob 	uint64_t head_sqb : 64; /* W2 */
2270fa8f86a1SJerin Jacob 	uint64_t head_offset : 6;
2271fa8f86a1SJerin Jacob 	uint64_t sqb_dequeue_count : 16;
2272fa8f86a1SJerin Jacob 	uint64_t default_chan : 12;
2273fa8f86a1SJerin Jacob 	uint64_t sdp_mcast : 1;
2274fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
2275fa8f86a1SJerin Jacob 	uint64_t dse_rsvd1 : 28;
2276fa8f86a1SJerin Jacob 	uint64_t sqb_enqueue_count : 16;
2277fa8f86a1SJerin Jacob 	uint64_t tail_offset : 6;
2278fa8f86a1SJerin Jacob 	uint64_t lmt_dis : 1;
2279fa8f86a1SJerin Jacob 	uint64_t smq_rr_quantum : 24;
2280fa8f86a1SJerin Jacob 	uint64_t dnq_rsvd1 : 17;
2281fa8f86a1SJerin Jacob 	uint64_t tail_sqb : 64; /* W5 */
2282fa8f86a1SJerin Jacob 	uint64_t next_sqb : 64; /* W6 */
2283fa8f86a1SJerin Jacob 	uint64_t mnq_dis : 1;
2284fa8f86a1SJerin Jacob 	uint64_t smq : 9;
2285fa8f86a1SJerin Jacob 	uint64_t smq_pend : 1;
2286fa8f86a1SJerin Jacob 	uint64_t smq_next_sq : 20;
2287fa8f86a1SJerin Jacob 	uint64_t smq_next_sq_vld : 1;
2288fa8f86a1SJerin Jacob 	uint64_t scm1_rsvd2 : 32;
2289fa8f86a1SJerin Jacob 	uint64_t smenq_sqb : 64; /* W8 */
2290fa8f86a1SJerin Jacob 	uint64_t smenq_offset : 6;
2291fa8f86a1SJerin Jacob 	uint64_t cq_limit : 8;
2292fa8f86a1SJerin Jacob 	uint64_t smq_rr_count : 25;
2293fa8f86a1SJerin Jacob 	uint64_t scm_lso_rem : 18;
2294fa8f86a1SJerin Jacob 	uint64_t scm_dq_rsvd0 : 7;
2295fa8f86a1SJerin Jacob 	uint64_t smq_lso_segnum : 8;
2296fa8f86a1SJerin Jacob 	uint64_t vfi_lso_total : 18;
2297fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sizem1 : 3;
2298fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sb : 8;
2299fa8f86a1SJerin Jacob 	uint64_t vfi_lso_mps : 14;
2300fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2301fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2302fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vld : 1;
2303fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb_vld : 1;
2304fa8f86a1SJerin Jacob 	uint64_t scm_dq_rsvd1 : 9;
2305fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb : 64; /* W11 */
2306fa8f86a1SJerin Jacob 	uint64_t seb_rsvd1 : 64;      /* W12 */
2307fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
2308fa8f86a1SJerin Jacob 	uint64_t drop_octs_lsw : 16;
2309fa8f86a1SJerin Jacob 	uint64_t drop_octs_msw : 32;
2310fa8f86a1SJerin Jacob 	uint64_t pkts_lsw : 32;
2311fa8f86a1SJerin Jacob 	uint64_t pkts_msw : 16;
2312fa8f86a1SJerin Jacob 	uint64_t octs : 48;
2313fa8f86a1SJerin Jacob };
2314fa8f86a1SJerin Jacob 
2315fa8f86a1SJerin Jacob /* [CN10K, .) NIX Send queue context structure */
2316fa8f86a1SJerin Jacob struct nix_cn10k_sq_ctx_s {
2317fa8f86a1SJerin Jacob 	uint64_t ena : 1;
2318fa8f86a1SJerin Jacob 	uint64_t qint_idx : 6;
2319fa8f86a1SJerin Jacob 	uint64_t substream : 20;
2320fa8f86a1SJerin Jacob 	uint64_t sdp_mcast : 1;
2321fa8f86a1SJerin Jacob 	uint64_t cq : 20;
2322fa8f86a1SJerin Jacob 	uint64_t sqe_way_mask : 16;
2323fa8f86a1SJerin Jacob 	uint64_t smq : 10;
2324fa8f86a1SJerin Jacob 	uint64_t cq_ena : 1;
2325fa8f86a1SJerin Jacob 	uint64_t xoff : 1;
2326fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
2327fa8f86a1SJerin Jacob 	uint64_t smq_rr_weight : 14;
2328fa8f86a1SJerin Jacob 	uint64_t default_chan : 12;
2329fa8f86a1SJerin Jacob 	uint64_t sqb_count : 16;
2330fa8f86a1SJerin Jacob 	uint64_t rsvd_120_119 : 2;
2331fa8f86a1SJerin Jacob 	uint64_t smq_rr_count_lb : 7;
2332fa8f86a1SJerin Jacob 	uint64_t smq_rr_count_ub : 25;
2333fa8f86a1SJerin Jacob 	uint64_t sqb_aura : 20;
2334fa8f86a1SJerin Jacob 	uint64_t sq_int : 8;
2335fa8f86a1SJerin Jacob 	uint64_t sq_int_ena : 8;
2336fa8f86a1SJerin Jacob 	uint64_t sqe_stype : 2;
2337fa8f86a1SJerin Jacob 	uint64_t rsvd_191 : 1;
2338fa8f86a1SJerin Jacob 	uint64_t max_sqe_size : 2;
2339fa8f86a1SJerin Jacob 	uint64_t cq_limit : 8;
2340fa8f86a1SJerin Jacob 	uint64_t lmt_dis : 1;
2341fa8f86a1SJerin Jacob 	uint64_t mnq_dis : 1;
2342fa8f86a1SJerin Jacob 	uint64_t smq_next_sq : 20;
2343fa8f86a1SJerin Jacob 	uint64_t smq_lso_segnum : 8;
2344fa8f86a1SJerin Jacob 	uint64_t tail_offset : 6;
2345fa8f86a1SJerin Jacob 	uint64_t smenq_offset : 6;
2346fa8f86a1SJerin Jacob 	uint64_t head_offset : 6;
2347fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb_vld : 1;
2348fa8f86a1SJerin Jacob 	uint64_t smq_pend : 1;
2349fa8f86a1SJerin Jacob 	uint64_t smq_next_sq_vld : 1;
2350fa8f86a1SJerin Jacob 	uint64_t rsvd_255_253 : 3;
2351fa8f86a1SJerin Jacob 	uint64_t next_sqb : 64;	      /* W4 */
2352fa8f86a1SJerin Jacob 	uint64_t tail_sqb : 64;	      /* W5 */
2353fa8f86a1SJerin Jacob 	uint64_t smenq_sqb : 64;      /* W6 */
2354fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb : 64; /* W7 */
2355fa8f86a1SJerin Jacob 	uint64_t head_sqb : 64;	      /* W8 */
2356fa8f86a1SJerin Jacob 	uint64_t rsvd_583_576 : 8;
2357fa8f86a1SJerin Jacob 	uint64_t vfi_lso_total : 18;
2358fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sizem1 : 3;
2359fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sb : 8;
2360fa8f86a1SJerin Jacob 	uint64_t vfi_lso_mps : 14;
2361fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2362fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2363fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vld : 1;
2364fa8f86a1SJerin Jacob 	uint64_t rsvd_639_630 : 10;
2365fa8f86a1SJerin Jacob 	uint64_t scm_lso_rem : 18;
2366fa8f86a1SJerin Jacob 	uint64_t rsvd_703_658 : 46;
2367fa8f86a1SJerin Jacob 	uint64_t octs : 48;
2368fa8f86a1SJerin Jacob 	uint64_t rsvd_767_752 : 16;
2369fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
2370fa8f86a1SJerin Jacob 	uint64_t rsvd_831_816 : 16;
2371fa8f86a1SJerin Jacob 	uint64_t aged_drop_octs : 32;
2372fa8f86a1SJerin Jacob 	uint64_t aged_drop_pkts : 32;
2373fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
2374fa8f86a1SJerin Jacob 	uint64_t rsvd_959_944 : 16;
2375fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
2376fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_1008 : 16;
2377fa8f86a1SJerin Jacob };
2378fa8f86a1SJerin Jacob 
2379fa8f86a1SJerin Jacob /* NIX send queue context structure */
2380fa8f86a1SJerin Jacob struct nix_sq_ctx_s {
2381fa8f86a1SJerin Jacob 	uint64_t ena : 1;
2382fa8f86a1SJerin Jacob 	uint64_t qint_idx : 6;
2383fa8f86a1SJerin Jacob 	uint64_t substream : 20;
2384fa8f86a1SJerin Jacob 	uint64_t sdp_mcast : 1;
2385fa8f86a1SJerin Jacob 	uint64_t cq : 20;
2386fa8f86a1SJerin Jacob 	uint64_t sqe_way_mask : 16;
2387fa8f86a1SJerin Jacob 	uint64_t smq : 9;
2388fa8f86a1SJerin Jacob 	uint64_t cq_ena : 1;
2389fa8f86a1SJerin Jacob 	uint64_t xoff : 1;
2390fa8f86a1SJerin Jacob 	uint64_t sso_ena : 1;
2391fa8f86a1SJerin Jacob 	uint64_t smq_rr_quantum : 24;
2392fa8f86a1SJerin Jacob 	uint64_t default_chan : 12;
2393fa8f86a1SJerin Jacob 	uint64_t sqb_count : 16;
2394fa8f86a1SJerin Jacob 	uint64_t smq_rr_count : 25;
2395fa8f86a1SJerin Jacob 	uint64_t sqb_aura : 20;
2396fa8f86a1SJerin Jacob 	uint64_t sq_int : 8;
2397fa8f86a1SJerin Jacob 	uint64_t sq_int_ena : 8;
2398fa8f86a1SJerin Jacob 	uint64_t sqe_stype : 2;
2399fa8f86a1SJerin Jacob 	uint64_t rsvd_191 : 1;
2400fa8f86a1SJerin Jacob 	uint64_t max_sqe_size : 2;
2401fa8f86a1SJerin Jacob 	uint64_t cq_limit : 8;
2402fa8f86a1SJerin Jacob 	uint64_t lmt_dis : 1;
2403fa8f86a1SJerin Jacob 	uint64_t mnq_dis : 1;
2404fa8f86a1SJerin Jacob 	uint64_t smq_next_sq : 20;
2405fa8f86a1SJerin Jacob 	uint64_t smq_lso_segnum : 8;
2406fa8f86a1SJerin Jacob 	uint64_t tail_offset : 6;
2407fa8f86a1SJerin Jacob 	uint64_t smenq_offset : 6;
2408fa8f86a1SJerin Jacob 	uint64_t head_offset : 6;
2409fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb_vld : 1;
2410fa8f86a1SJerin Jacob 	uint64_t smq_pend : 1;
2411fa8f86a1SJerin Jacob 	uint64_t smq_next_sq_vld : 1;
2412fa8f86a1SJerin Jacob 	uint64_t rsvd_255_253 : 3;
2413fa8f86a1SJerin Jacob 	uint64_t next_sqb : 64;	      /* W4 */
2414fa8f86a1SJerin Jacob 	uint64_t tail_sqb : 64;	      /* W5 */
2415fa8f86a1SJerin Jacob 	uint64_t smenq_sqb : 64;      /* W6 */
2416fa8f86a1SJerin Jacob 	uint64_t smenq_next_sqb : 64; /* W7 */
2417fa8f86a1SJerin Jacob 	uint64_t head_sqb : 64;	      /* W8 */
2418fa8f86a1SJerin Jacob 	uint64_t rsvd_583_576 : 8;
2419fa8f86a1SJerin Jacob 	uint64_t vfi_lso_total : 18;
2420fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sizem1 : 3;
2421fa8f86a1SJerin Jacob 	uint64_t vfi_lso_sb : 8;
2422fa8f86a1SJerin Jacob 	uint64_t vfi_lso_mps : 14;
2423fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan0_ins_ena : 1;
2424fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vlan1_ins_ena : 1;
2425fa8f86a1SJerin Jacob 	uint64_t vfi_lso_vld : 1;
2426fa8f86a1SJerin Jacob 	uint64_t rsvd_639_630 : 10;
2427fa8f86a1SJerin Jacob 	uint64_t scm_lso_rem : 18;
2428fa8f86a1SJerin Jacob 	uint64_t rsvd_703_658 : 46;
2429fa8f86a1SJerin Jacob 	uint64_t octs : 48;
2430fa8f86a1SJerin Jacob 	uint64_t rsvd_767_752 : 16;
2431fa8f86a1SJerin Jacob 	uint64_t pkts : 48;
2432fa8f86a1SJerin Jacob 	uint64_t rsvd_831_816 : 16;
2433fa8f86a1SJerin Jacob 	uint64_t rsvd_895_832 : 64; /* W13 */
2434fa8f86a1SJerin Jacob 	uint64_t drop_octs : 48;
2435fa8f86a1SJerin Jacob 	uint64_t rsvd_959_944 : 16;
2436fa8f86a1SJerin Jacob 	uint64_t drop_pkts : 48;
2437fa8f86a1SJerin Jacob 	uint64_t rsvd_1023_1008 : 16;
2438fa8f86a1SJerin Jacob };
2439fa8f86a1SJerin Jacob 
2440fa8f86a1SJerin Jacob /* NIX transmit action structure */
2441fa8f86a1SJerin Jacob struct nix_tx_action_s {
2442fa8f86a1SJerin Jacob 	uint64_t op : 4;
2443fa8f86a1SJerin Jacob 	uint64_t rsvd_11_4 : 8;
2444fa8f86a1SJerin Jacob 	uint64_t index : 20;
2445fa8f86a1SJerin Jacob 	uint64_t match_id : 16;
2446fa8f86a1SJerin Jacob 	uint64_t rsvd_63_48 : 16;
2447fa8f86a1SJerin Jacob };
2448fa8f86a1SJerin Jacob 
2449fa8f86a1SJerin Jacob /* NIX transmit vtag action structure */
2450fa8f86a1SJerin Jacob struct nix_tx_vtag_action_s {
2451fa8f86a1SJerin Jacob 	uint64_t vtag0_relptr : 8;
2452fa8f86a1SJerin Jacob 	uint64_t vtag0_lid : 3;
2453fa8f86a1SJerin Jacob 	uint64_t rsvd_11 : 1;
2454fa8f86a1SJerin Jacob 	uint64_t vtag0_op : 2;
2455fa8f86a1SJerin Jacob 	uint64_t rsvd_15_14 : 2;
2456fa8f86a1SJerin Jacob 	uint64_t vtag0_def : 10;
2457fa8f86a1SJerin Jacob 	uint64_t rsvd_31_26 : 6;
2458fa8f86a1SJerin Jacob 	uint64_t vtag1_relptr : 8;
2459fa8f86a1SJerin Jacob 	uint64_t vtag1_lid : 3;
2460fa8f86a1SJerin Jacob 	uint64_t rsvd_43 : 1;
2461fa8f86a1SJerin Jacob 	uint64_t vtag1_op : 2;
2462fa8f86a1SJerin Jacob 	uint64_t rsvd_47_46 : 2;
2463fa8f86a1SJerin Jacob 	uint64_t vtag1_def : 10;
2464fa8f86a1SJerin Jacob 	uint64_t rsvd_63_58 : 6;
2465fa8f86a1SJerin Jacob };
2466fa8f86a1SJerin Jacob 
2467fa8f86a1SJerin Jacob /* NIX work queue entry header structure */
2468fa8f86a1SJerin Jacob struct nix_wqe_hdr_s {
2469fa8f86a1SJerin Jacob 	uint64_t tag : 32;
2470fa8f86a1SJerin Jacob 	uint64_t tt : 2;
2471fa8f86a1SJerin Jacob 	uint64_t grp : 10;
2472fa8f86a1SJerin Jacob 	uint64_t node : 2;
2473fa8f86a1SJerin Jacob 	uint64_t q : 14;
2474fa8f86a1SJerin Jacob 	uint64_t wqe_type : 4;
2475fa8f86a1SJerin Jacob };
2476fa8f86a1SJerin Jacob 
2477fa8f86a1SJerin Jacob /* NIX Rx flow key algorithm field structure */
2478fa8f86a1SJerin Jacob struct nix_rx_flowkey_alg {
2479fa8f86a1SJerin Jacob 	uint64_t key_offset : 6;
2480fa8f86a1SJerin Jacob 	uint64_t ln_mask : 1;
2481fa8f86a1SJerin Jacob 	uint64_t fn_mask : 1;
2482fa8f86a1SJerin Jacob 	uint64_t hdr_offset : 8;
2483fa8f86a1SJerin Jacob 	uint64_t bytesm1 : 5;
2484fa8f86a1SJerin Jacob 	uint64_t lid : 3;
2485fa8f86a1SJerin Jacob 	uint64_t reserved_24_24 : 1;
2486fa8f86a1SJerin Jacob 	uint64_t ena : 1;
2487fa8f86a1SJerin Jacob 	uint64_t sel_chan : 1;
2488fa8f86a1SJerin Jacob 	uint64_t ltype_mask : 4;
2489fa8f86a1SJerin Jacob 	uint64_t ltype_match : 4;
2490fa8f86a1SJerin Jacob 	uint64_t reserved_35_63 : 29;
2491fa8f86a1SJerin Jacob };
2492fa8f86a1SJerin Jacob 
2493fa8f86a1SJerin Jacob /* NIX LSO format field structure */
2494fa8f86a1SJerin Jacob struct nix_lso_format {
2495fa8f86a1SJerin Jacob 	uint64_t offset : 8;
2496fa8f86a1SJerin Jacob 	uint64_t layer : 2;
2497fa8f86a1SJerin Jacob 	uint64_t rsvd_10_11 : 2;
2498fa8f86a1SJerin Jacob 	uint64_t sizem1 : 2;
2499fa8f86a1SJerin Jacob 	uint64_t rsvd_14_15 : 2;
2500fa8f86a1SJerin Jacob 	uint64_t alg : 3;
2501fa8f86a1SJerin Jacob 	uint64_t rsvd_19_63 : 45;
2502fa8f86a1SJerin Jacob };
2503fa8f86a1SJerin Jacob 
2504fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_MAX      (8)
2505fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_ALG_MASK GENMASK(18, 16)
2506fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_SZ_MASK  GENMASK(13, 12)
2507fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_LY_MASK  GENMASK(9, 8)
2508fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_OFF_MASK GENMASK(7, 0)
2509fa8f86a1SJerin Jacob 
2510fa8f86a1SJerin Jacob #define NIX_LSO_FIELD_MASK                                                     \
2511fa8f86a1SJerin Jacob 	(NIX_LSO_FIELD_OFF_MASK | NIX_LSO_FIELD_LY_MASK |                      \
2512fa8f86a1SJerin Jacob 	 NIX_LSO_FIELD_SZ_MASK | NIX_LSO_FIELD_ALG_MASK)
2513fa8f86a1SJerin Jacob 
2514fa8f86a1SJerin Jacob #define NIX_CN9K_MAX_HW_FRS 9212UL
2515fa8f86a1SJerin Jacob #define NIX_LBK_MAX_HW_FRS  65535UL
2516457d0774SSatha Rao #define NIX_SDP_MAX_HW_FRS  65535UL
2517e98f5831SSathesh Edara #define NIX_SDP_16K_HW_FRS  16380UL
2518fa8f86a1SJerin Jacob #define NIX_RPM_MAX_HW_FRS  16380UL
25193e504438SAkhil Goyal #define NIX_MIN_HW_FRS	    40UL
2520fa8f86a1SJerin Jacob 
25214ad8bc2fSSunil Kumar Kori /** NIX policer rate limits */
25224ad8bc2fSSunil Kumar Kori #define NIX_BPF_MAX_RATE_DIV_EXP  12
252367e1cbf3SRakesh Kudurumalla #define NIX_BPF_MAX_RATE_EXPONENT 0x16
25244ad8bc2fSSunil Kumar Kori #define NIX_BPF_MAX_RATE_MANTISSA 0xff
25254ad8bc2fSSunil Kumar Kori 
252667e1cbf3SRakesh Kudurumalla #define NIX_BPF_RATE_CONST 8000000000ULL
25274ad8bc2fSSunil Kumar Kori 
25284ad8bc2fSSunil Kumar Kori /* NIX rate calculation in Bits/Sec
25294ad8bc2fSSunil Kumar Kori  *	PIR_ADD = ((256 + NIX_*_PIR[RATE_MANTISSA])
25304ad8bc2fSSunil Kumar Kori  *		<< NIX_*_PIR[RATE_EXPONENT]) / 256
25314ad8bc2fSSunil Kumar Kori  *	PIR = (2E6 * PIR_ADD / (1 << NIX_*_PIR[RATE_DIVIDER_EXPONENT]))
25324ad8bc2fSSunil Kumar Kori  *
25334ad8bc2fSSunil Kumar Kori  *	CIR_ADD = ((256 + NIX_*_CIR[RATE_MANTISSA])
25344ad8bc2fSSunil Kumar Kori  *		<< NIX_*_CIR[RATE_EXPONENT]) / 256
25354ad8bc2fSSunil Kumar Kori  *	CIR = (2E6 * CIR_ADD / (CCLK_TICKS << NIX_*_CIR[RATE_DIVIDER_EXPONENT]))
25364ad8bc2fSSunil Kumar Kori  */
253767e1cbf3SRakesh Kudurumalla #define NIX_BPF_RATE(policer_timeunit, exponent, mantissa, div_exp)            \
25384ad8bc2fSSunil Kumar Kori 	((NIX_BPF_RATE_CONST * ((256 + (mantissa)) << (exponent))) /           \
253967e1cbf3SRakesh Kudurumalla 	 (((1ull << (div_exp)) * 256 * policer_timeunit)))
25404ad8bc2fSSunil Kumar Kori 
25414ad8bc2fSSunil Kumar Kori #define NIX_BPF_DEFAULT_ADJUST_MANTISSA 511
25424ad8bc2fSSunil Kumar Kori #define NIX_BPF_DEFAULT_ADJUST_EXPONENT 0
25434ad8bc2fSSunil Kumar Kori 
25444ad8bc2fSSunil Kumar Kori /** NIX burst limits */
25454ad8bc2fSSunil Kumar Kori #define NIX_BPF_MAX_BURST_EXPONENT 0xf
25464ad8bc2fSSunil Kumar Kori #define NIX_BPF_MAX_BURST_MANTISSA 0xff
25474ad8bc2fSSunil Kumar Kori 
25484ad8bc2fSSunil Kumar Kori /* NIX burst calculation
25494ad8bc2fSSunil Kumar Kori  *	PIR_BURST = ((256 + NIX_*_PIR[BURST_MANTISSA])
25504ad8bc2fSSunil Kumar Kori  *		<< (NIX_*_PIR[BURST_EXPONENT] + 1))
25514ad8bc2fSSunil Kumar Kori  *			/ 256
25524ad8bc2fSSunil Kumar Kori  *
25534ad8bc2fSSunil Kumar Kori  *	CIR_BURST = ((256 + NIX_*_CIR[BURST_MANTISSA])
25544ad8bc2fSSunil Kumar Kori  *		<< (NIX_*_CIR[BURST_EXPONENT] + 1))
25554ad8bc2fSSunil Kumar Kori  *			/ 256
25564ad8bc2fSSunil Kumar Kori  */
25574ad8bc2fSSunil Kumar Kori #define NIX_BPF_BURST(exponent, mantissa)                                      \
25584ad8bc2fSSunil Kumar Kori 	(((256 + (mantissa)) << ((exponent) + 1)) / 256)
25594ad8bc2fSSunil Kumar Kori 
25604ad8bc2fSSunil Kumar Kori /** Meter burst limits */
25614ad8bc2fSSunil Kumar Kori #define NIX_BPF_BURST_MIN NIX_BPF_BURST(0, 0)
25624ad8bc2fSSunil Kumar Kori #define NIX_BPF_BURST_MAX                                                      \
25634ad8bc2fSSunil Kumar Kori 	NIX_BPF_BURST(NIX_BPF_MAX_BURST_EXPONENT, NIX_BPF_MAX_BURST_MANTISSA)
25644ad8bc2fSSunil Kumar Kori 
2565fa8f86a1SJerin Jacob /* NIX rate limits */
2566fa8f86a1SJerin Jacob #define NIX_TM_MAX_RATE_DIV_EXP	 12
2567fa8f86a1SJerin Jacob #define NIX_TM_MAX_RATE_EXPONENT 0xf
2568fa8f86a1SJerin Jacob #define NIX_TM_MAX_RATE_MANTISSA 0xff
2569fa8f86a1SJerin Jacob 
2570fa8f86a1SJerin Jacob #define NIX_TM_SHAPER_RATE_CONST ((uint64_t)2E6)
2571fa8f86a1SJerin Jacob 
2572fa8f86a1SJerin Jacob /* NIX rate calculation in Bits/Sec
2573fa8f86a1SJerin Jacob  *	PIR_ADD = ((256 + NIX_*_PIR[RATE_MANTISSA])
2574fa8f86a1SJerin Jacob  *		<< NIX_*_PIR[RATE_EXPONENT]) / 256
2575fa8f86a1SJerin Jacob  *	PIR = (2E6 * PIR_ADD / (1 << NIX_*_PIR[RATE_DIVIDER_EXPONENT]))
2576fa8f86a1SJerin Jacob  *
2577fa8f86a1SJerin Jacob  *	CIR_ADD = ((256 + NIX_*_CIR[RATE_MANTISSA])
2578fa8f86a1SJerin Jacob  *		<< NIX_*_CIR[RATE_EXPONENT]) / 256
2579fa8f86a1SJerin Jacob  *	CIR = (2E6 * CIR_ADD / (CCLK_TICKS << NIX_*_CIR[RATE_DIVIDER_EXPONENT]))
2580fa8f86a1SJerin Jacob  */
2581fa8f86a1SJerin Jacob #define NIX_TM_SHAPER_RATE(exponent, mantissa, div_exp)                        \
2582fa8f86a1SJerin Jacob 	((NIX_TM_SHAPER_RATE_CONST * ((256 + (mantissa)) << (exponent))) /     \
2583fa8f86a1SJerin Jacob 	 (((1ull << (div_exp)) * 256)))
2584fa8f86a1SJerin Jacob 
2585fa8f86a1SJerin Jacob /* Rate limit in Bits/Sec */
2586fa8f86a1SJerin Jacob #define NIX_TM_MIN_SHAPER_RATE NIX_TM_SHAPER_RATE(0, 0, NIX_TM_MAX_RATE_DIV_EXP)
2587fa8f86a1SJerin Jacob 
2588fa8f86a1SJerin Jacob #define NIX_TM_MAX_SHAPER_RATE                                                 \
2589fa8f86a1SJerin Jacob 	NIX_TM_SHAPER_RATE(NIX_TM_MAX_RATE_EXPONENT, NIX_TM_MAX_RATE_MANTISSA, \
2590fa8f86a1SJerin Jacob 			   0)
2591fa8f86a1SJerin Jacob 
2592680078faSSatha Rao #define NIX_TM_MIN_SHAPER_PPS_RATE 25
2593680078faSSatha Rao #define NIX_TM_MAX_SHAPER_PPS_RATE (100ul << 20)
2594680078faSSatha Rao 
2595fa8f86a1SJerin Jacob /* NIX burst limits */
25966fe49f10SNithin Dabilpuram #define NIX_TM_MAX_BURST_EXPONENT      0xful
25976fe49f10SNithin Dabilpuram #define NIX_TM_MAX_BURST_MANTISSA      0x7ffful
25986fe49f10SNithin Dabilpuram #define NIX_CN9K_TM_MAX_BURST_MANTISSA 0xfful
2599fa8f86a1SJerin Jacob 
2600fa8f86a1SJerin Jacob /* NIX burst calculation
2601fa8f86a1SJerin Jacob  *	PIR_BURST = ((256 + NIX_*_PIR[BURST_MANTISSA])
2602fa8f86a1SJerin Jacob  *		<< (NIX_*_PIR[BURST_EXPONENT] + 1))
2603fa8f86a1SJerin Jacob  *			/ 256
2604fa8f86a1SJerin Jacob  *
2605fa8f86a1SJerin Jacob  *	CIR_BURST = ((256 + NIX_*_CIR[BURST_MANTISSA])
2606fa8f86a1SJerin Jacob  *		<< (NIX_*_CIR[BURST_EXPONENT] + 1))
2607fa8f86a1SJerin Jacob  *			/ 256
2608fa8f86a1SJerin Jacob  */
2609fa8f86a1SJerin Jacob #define NIX_TM_SHAPER_BURST(exponent, mantissa)                                \
26106fe49f10SNithin Dabilpuram 	(((256ul + (mantissa)) << ((exponent) + 1)) / 256ul)
2611fa8f86a1SJerin Jacob 
2612fa8f86a1SJerin Jacob /* Burst limit in Bytes */
2613fa8f86a1SJerin Jacob #define NIX_TM_MIN_SHAPER_BURST NIX_TM_SHAPER_BURST(0, 0)
2614fa8f86a1SJerin Jacob 
2615fa8f86a1SJerin Jacob #define NIX_TM_MAX_SHAPER_BURST                                                \
2616fa8f86a1SJerin Jacob 	NIX_TM_SHAPER_BURST(NIX_TM_MAX_BURST_EXPONENT,                         \
2617fa8f86a1SJerin Jacob 			    NIX_TM_MAX_BURST_MANTISSA)
2618fa8f86a1SJerin Jacob 
26196fe49f10SNithin Dabilpuram #define NIX_CN9K_TM_MAX_SHAPER_BURST                                           \
26206fe49f10SNithin Dabilpuram 	NIX_TM_SHAPER_BURST(NIX_TM_MAX_BURST_EXPONENT,                         \
26216fe49f10SNithin Dabilpuram 			    NIX_CN9K_TM_MAX_BURST_MANTISSA)
26226fe49f10SNithin Dabilpuram 
2623fa8f86a1SJerin Jacob /* Min is limited so that NIX_AF_SMQX_CFG[MINLEN]+ADJUST is not -ve */
2624fa8f86a1SJerin Jacob #define NIX_TM_LENGTH_ADJUST_MIN ((int)-NIX_MIN_HW_FRS + 1)
2625fa8f86a1SJerin Jacob #define NIX_TM_LENGTH_ADJUST_MAX 255
2626fa8f86a1SJerin Jacob 
2627fa8f86a1SJerin Jacob #define NIX_TM_TLX_SP_PRIO_MAX	   10
2628fa8f86a1SJerin Jacob #define NIX_CN9K_TM_RR_QUANTUM_MAX (BIT_ULL(24) - 1)
26296fe49f10SNithin Dabilpuram #define NIX_TM_RR_WEIGHT_MAX	   (BIT_ULL(14) - 1)
2630fa8f86a1SJerin Jacob 
2631*9a01217eSSatha Rao /* [CN9K, .) */
2632*9a01217eSSatha Rao #define NIX_TXSCH_LVL_TL1_MAX 28
2633*9a01217eSSatha Rao #define NIX_TXSCH_LVL_TL2_MAX 256
2634*9a01217eSSatha Rao 
2635*9a01217eSSatha Rao /* CN9K */
2636*9a01217eSSatha Rao #define NIX_CN9K_TXSCH_LVL_TL3_MAX 256
2637*9a01217eSSatha Rao #define NIX_CN9K_TXSCH_LVL_TL4_MAX 512
2638fa8f86a1SJerin Jacob #define NIX_CN9K_TXSCH_LVL_SMQ_MAX 512
2639fa8f86a1SJerin Jacob 
2640*9a01217eSSatha Rao /* CN10K */
2641*9a01217eSSatha Rao #define NIX_CN10K_TXSCH_LVL_TL3_MAX 256
2642*9a01217eSSatha Rao #define NIX_CN10K_TXSCH_LVL_TL4_MAX 512
2643*9a01217eSSatha Rao #define NIX_CN10K_TXSCH_LVL_SMQ_MAX 832
2644fa8f86a1SJerin Jacob 
2645*9a01217eSSatha Rao /* [CN20K, .) */
2646*9a01217eSSatha Rao #define NIX_TXSCH_LVL_TL3_MAX 512
2647*9a01217eSSatha Rao #define NIX_TXSCH_LVL_TL4_MAX 1280
2648*9a01217eSSatha Rao #define NIX_TXSCH_LVL_SMQ_MAX 2048
2649fa8f86a1SJerin Jacob 
2650fa8f86a1SJerin Jacob #define NIX_CQ_OP_STAT_OP_ERR 63
2651fa8f86a1SJerin Jacob #define NIX_CQ_OP_STAT_CQ_ERR 46
2652fa8f86a1SJerin Jacob 
2653fa8f86a1SJerin Jacob #define NIX_RQ_CN10K_SPB_MAX_SIZE 4096
2654fa8f86a1SJerin Jacob 
2655fa8f86a1SJerin Jacob /* [CN9K, .) */
2656fa8f86a1SJerin Jacob #define NIX_LSO_SEG_MAX 256
2657fa8f86a1SJerin Jacob #define NIX_LSO_MPS_MAX (BIT_ULL(14) - 1)
2658fa8f86a1SJerin Jacob 
2659fa8f86a1SJerin Jacob /* Software defined LSO base format IDX */
2660fa8f86a1SJerin Jacob #define NIX_LSO_FORMAT_IDX_TSOV4 0
2661fa8f86a1SJerin Jacob #define NIX_LSO_FORMAT_IDX_TSOV6 1
2662fa8f86a1SJerin Jacob 
26638cfde95dSSatha Rao /* [CN10K, .) */
26648cfde95dSSatha Rao #define NIX_SENDSTATALG_MASK	  0x7
26658cfde95dSSatha Rao #define NIX_SENDSTATALG_SEL_MASK  0x8
26668cfde95dSSatha Rao #define NIX_SENDSTAT_IOFFSET_MASK 0xFFF
26678cfde95dSSatha Rao #define NIX_SENDSTAT_OOFFSET_MASK 0xFFF
26688cfde95dSSatha Rao 
2669*9a01217eSSatha Rao /* The mask is to extract lower 10-bits of channel number
2670*9a01217eSSatha Rao  * which CPT will pass to X2P.
2671*9a01217eSSatha Rao  */
2672*9a01217eSSatha Rao #define NIX_CHAN_CPT_X2P_MASK (0x3ffull)
2673*9a01217eSSatha Rao 
2674fa8f86a1SJerin Jacob #endif /* __NIX_HW_H__ */
2675