blob: 2908f25049d100677295e09a6db39f575a73758f [file] [log] [blame]
Suneel Garapati81526d52019-10-19 18:35:54 -07001/* SPDX-License-Identifier: GPL-2.0
2 *
3 * Copyright (C) 2020 Marvell International Ltd.
4 *
5 * https://spdx.org/licenses
6 */
7#ifndef __CSRS_NIX_H__
8#define __CSRS_NIX_H__
9
10/**
11 * @file
12 *
13 * Configuration and status register (CSR) address and type definitions for
14 * NIX.
15 *
16 * This file is auto generated. Do not edit.
17 *
18 */
19
20/**
21 * Enumeration nix_af_int_vec_e
22 *
23 * NIX Admin Function Interrupt Vector Enumeration Enumerates the NIX AF
24 * MSI-X interrupt vectors.
25 */
26#define NIX_AF_INT_VEC_E_AF_ERR (3)
27#define NIX_AF_INT_VEC_E_AQ_DONE (2)
28#define NIX_AF_INT_VEC_E_GEN (1)
29#define NIX_AF_INT_VEC_E_POISON (4)
30#define NIX_AF_INT_VEC_E_RVU (0)
31
32/**
33 * Enumeration nix_aq_comp_e
34 *
35 * NIX Completion Enumeration Enumerates the values of
36 * NIX_AQ_RES_S[COMPCODE].
37 */
38#define NIX_AQ_COMP_E_CTX_FAULT (4)
39#define NIX_AQ_COMP_E_CTX_POISON (3)
40#define NIX_AQ_COMP_E_GOOD (1)
41#define NIX_AQ_COMP_E_LOCKERR (5)
42#define NIX_AQ_COMP_E_NOTDONE (0)
43#define NIX_AQ_COMP_E_SQB_ALLOC_FAIL (6)
44#define NIX_AQ_COMP_E_SWERR (2)
45
46/**
47 * Enumeration nix_aq_ctype_e
48 *
49 * NIX Context Type Enumeration Enumerates NIX_AQ_INST_S[CTYPE] values.
50 */
51#define NIX_AQ_CTYPE_E_CQ (2)
52#define NIX_AQ_CTYPE_E_DYNO (5)
53#define NIX_AQ_CTYPE_E_MCE (3)
54#define NIX_AQ_CTYPE_E_RQ (0)
55#define NIX_AQ_CTYPE_E_RSS (4)
56#define NIX_AQ_CTYPE_E_SQ (1)
57
58/**
59 * Enumeration nix_aq_instop_e
60 *
61 * NIX Admin Queue Opcode Enumeration Enumerates NIX_AQ_INST_S[OP]
62 * values.
63 */
64#define NIX_AQ_INSTOP_E_INIT (1)
65#define NIX_AQ_INSTOP_E_LOCK (4)
66#define NIX_AQ_INSTOP_E_NOP (0)
67#define NIX_AQ_INSTOP_E_READ (3)
68#define NIX_AQ_INSTOP_E_UNLOCK (5)
69#define NIX_AQ_INSTOP_E_WRITE (2)
70
71/**
72 * Enumeration nix_chan_e
73 *
74 * NIX Channel Number Enumeration Enumerates the receive and transmit
75 * channels, and values of NIX_RX_PARSE_S[CHAN],
76 * NIX_SQ_CTX_S[DEFAULT_CHAN]. CNXXXX implements a subset of these
77 * channels. Specifically, only channels for links enumerated by
78 * NIX_LINK_E are implemented. Internal: P2X/X2P channel enumeration for
79 * t9x.
80 */
81#define NIX_CHAN_E_CGXX_LMACX_CHX(a, b, c) \
82 (0x800 + 0x100 * (a) + 0x10 * (b) + (c))
83#define NIX_CHAN_E_LBKX_CHX(a, b) (0 + 0x100 * (a) + (b))
84#define NIX_CHAN_E_RX(a) (0 + 0x100 * (a))
85#define NIX_CHAN_E_SDP_CHX(a) (0x700 + (a))
86
87/**
88 * Enumeration nix_colorresult_e
89 *
90 * NIX Color Result Enumeration Enumerates the values of
91 * NIX_MEM_RESULT_S[COLOR], NIX_AF_TL1()_MD_DEBUG1[COLOR] and
92 * NIX_AF_TL1()_MD_DEBUG1[COLOR].
93 */
94#define NIX_COLORRESULT_E_GREEN (0)
95#define NIX_COLORRESULT_E_RED_DROP (3)
96#define NIX_COLORRESULT_E_RED_SEND (2)
97#define NIX_COLORRESULT_E_YELLOW (1)
98
99/**
100 * Enumeration nix_cqerrint_e
101 *
102 * NIX Completion Queue Interrupt Enumeration Enumerates the bit index of
103 * NIX_CQ_CTX_S[CQ_ERR_INT,CQ_ERR_INT_ENA].
104 */
105#define NIX_CQERRINT_E_CQE_FAULT (2)
106#define NIX_CQERRINT_E_DOOR_ERR (0)
107#define NIX_CQERRINT_E_WR_FULL (1)
108
109/**
110 * Enumeration nix_intf_e
111 *
112 * NIX Interface Number Enumeration Enumerates the bit index of
113 * NIX_AF_STATUS[CALIBRATE_STATUS].
114 */
115#define NIX_INTF_E_CGXX(a) (0 + (a))
116#define NIX_INTF_E_LBKX(a) (3 + (a))
117#define NIX_INTF_E_SDP (4)
118
119/**
120 * Enumeration nix_lf_int_vec_e
121 *
122 * NIX Local Function Interrupt Vector Enumeration Enumerates the NIX
123 * MSI-X interrupt vectors per LF.
124 */
125#define NIX_LF_INT_VEC_E_CINTX(a) (0x40 + (a))
126#define NIX_LF_INT_VEC_E_ERR_INT (0x81)
127#define NIX_LF_INT_VEC_E_GINT (0x80)
128#define NIX_LF_INT_VEC_E_POISON (0x82)
129#define NIX_LF_INT_VEC_E_QINTX(a) (0 + (a))
130
131/**
132 * Enumeration nix_link_e
133 *
134 * NIX Link Number Enumeration Enumerates the receive and transmit links,
135 * and LINK index of NIX_AF_RX_LINK()_CFG, NIX_AF_RX_LINK()_WRR_CFG,
136 * NIX_AF_TX_LINK()_NORM_CREDIT, NIX_AF_TX_LINK()_HW_XOFF and
137 * NIX_AF_TL3_TL2()_LINK()_CFG.
138 */
139#define NIX_LINK_E_CGXX_LMACX(a, b) (0 + 4 * (a) + (b))
140#define NIX_LINK_E_LBKX(a) (0xc + (a))
141#define NIX_LINK_E_MC (0xe)
142#define NIX_LINK_E_SDP (0xd)
143
144/**
145 * Enumeration nix_lsoalg_e
146 *
147 * NIX Large Send Offload Algorithm Enumeration Enumerates
148 * NIX_AF_LSO_FORMAT()_FIELD()[ALG] values. Specifies algorithm for
149 * modifying the associated LSO packet field.
150 */
151#define NIX_LSOALG_E_ADD_OFFSET (3)
152#define NIX_LSOALG_E_ADD_PAYLEN (2)
153#define NIX_LSOALG_E_ADD_SEGNUM (1)
154#define NIX_LSOALG_E_NOP (0)
155#define NIX_LSOALG_E_TCP_FLAGS (4)
156
157/**
158 * Enumeration nix_maxsqesz_e
159 *
160 * NIX Maximum SQE Size Enumeration Enumerates the values of
161 * NIX_SQ_CTX_S[MAX_SQE_SIZE].
162 */
163#define NIX_MAXSQESZ_E_W16 (0)
164#define NIX_MAXSQESZ_E_W8 (1)
165
166/**
167 * Enumeration nix_mdtype_e
168 *
169 * NIX Meta Descriptor Type Enumeration Enumerates values of
170 * NIX_AF_MDQ()_MD_DEBUG[MD_TYPE].
171 */
172#define NIX_MDTYPE_E_FLUSH (1)
173#define NIX_MDTYPE_E_PMD (2)
174#define NIX_MDTYPE_E_RSVD (0)
175
176/**
177 * Enumeration nix_mnqerr_e
178 *
179 * NIX Meta-Descriptor Enqueue Error Enumeration Enumerates
180 * NIX_LF_MNQ_ERR_DBG[ERRCODE] values.
181 */
182#define NIX_MNQERR_E_CQ_QUERY_ERR (6)
183#define NIX_MNQERR_E_LSO_ERR (5)
184#define NIX_MNQERR_E_MAXLEN_ERR (8)
185#define NIX_MNQERR_E_MAX_SQE_SIZE_ERR (7)
186#define NIX_MNQERR_E_SQB_FAULT (2)
187#define NIX_MNQERR_E_SQB_POISON (3)
188#define NIX_MNQERR_E_SQE_SIZEM1_ZERO (9)
189#define NIX_MNQERR_E_SQ_CTX_FAULT (0)
190#define NIX_MNQERR_E_SQ_CTX_POISON (1)
191#define NIX_MNQERR_E_TOTAL_ERR (4)
192
193/**
194 * Enumeration nix_ndc_rx_port_e
195 *
196 * NIX Receive NDC Port Enumeration Enumerates NIX receive NDC
197 * (NDC_IDX_E::NIX()_RX) ports and the PORT index of
198 * NDC_AF_PORT()_RT()_RW()_REQ_PC and NDC_AF_PORT()_RT()_RW()_LAT_PC.
199 */
200#define NIX_NDC_RX_PORT_E_AQ (0)
201#define NIX_NDC_RX_PORT_E_CINT (2)
202#define NIX_NDC_RX_PORT_E_CQ (1)
203#define NIX_NDC_RX_PORT_E_MC (3)
204#define NIX_NDC_RX_PORT_E_PKT (4)
205#define NIX_NDC_RX_PORT_E_RQ (5)
206
207/**
208 * Enumeration nix_ndc_tx_port_e
209 *
210 * NIX Transmit NDC Port Enumeration Enumerates NIX transmit NDC
211 * (NDC_IDX_E::NIX()_TX) ports and the PORT index of
212 * NDC_AF_PORT()_RT()_RW()_REQ_PC and NDC_AF_PORT()_RT()_RW()_LAT_PC.
213 */
214#define NIX_NDC_TX_PORT_E_DEQ (3)
215#define NIX_NDC_TX_PORT_E_DMA (4)
216#define NIX_NDC_TX_PORT_E_ENQ (1)
217#define NIX_NDC_TX_PORT_E_LMT (0)
218#define NIX_NDC_TX_PORT_E_MNQ (2)
219#define NIX_NDC_TX_PORT_E_XQE (5)
220
221/**
222 * Enumeration nix_re_opcode_e
223 *
224 * NIX Receive Error Opcode Enumeration Enumerates
225 * NIX_RX_PARSE_S[ERRCODE] values when NIX_RX_PARSE_S[ERRLEV] =
226 * NPC_ERRLEV_E::RE.
227 */
228#define NIX_RE_OPCODE_E_OL2_LENMISM (0x12)
229#define NIX_RE_OPCODE_E_OVERSIZE (0x11)
230#define NIX_RE_OPCODE_E_RE_DMAPKT (0xf)
231#define NIX_RE_OPCODE_E_RE_FCS (7)
232#define NIX_RE_OPCODE_E_RE_FCS_RCV (8)
233#define NIX_RE_OPCODE_E_RE_JABBER (2)
234#define NIX_RE_OPCODE_E_RE_NONE (0)
235#define NIX_RE_OPCODE_E_RE_PARTIAL (1)
236#define NIX_RE_OPCODE_E_RE_RX_CTL (0xb)
237#define NIX_RE_OPCODE_E_RE_SKIP (0xc)
238#define NIX_RE_OPCODE_E_RE_TERMINATE (9)
239#define NIX_RE_OPCODE_E_UNDERSIZE (0x10)
240
241/**
242 * Enumeration nix_redalg_e
243 *
244 * NIX Red Algorithm Enumeration Enumerates the different algorithms of
245 * NIX_SEND_EXT_S[SHP_RA].
246 */
247#define NIX_REDALG_E_DISCARD (3)
248#define NIX_REDALG_E_SEND (1)
249#define NIX_REDALG_E_STALL (2)
250#define NIX_REDALG_E_STD (0)
251
252/**
253 * Enumeration nix_rqint_e
254 *
255 * NIX Receive Queue Interrupt Enumeration Enumerates the bit index of
256 * NIX_RQ_CTX_S[RQ_INT,RQ_INT_ENA].
257 */
258#define NIX_RQINT_E_DROP (0)
259#define NIX_RQINT_E_RX(a) (0 + (a))
260#define NIX_RQINT_E_RED (1)
261
262/**
263 * Enumeration nix_rx_actionop_e
264 *
265 * NIX Receive Action Opcode Enumeration Enumerates the values of
266 * NIX_RX_ACTION_S[OP].
267 */
268#define NIX_RX_ACTIONOP_E_DROP (0)
269#define NIX_RX_ACTIONOP_E_MCAST (3)
270#define NIX_RX_ACTIONOP_E_MIRROR (6)
271#define NIX_RX_ACTIONOP_E_PF_FUNC_DROP (5)
272#define NIX_RX_ACTIONOP_E_RSS (4)
273#define NIX_RX_ACTIONOP_E_UCAST (1)
274#define NIX_RX_ACTIONOP_E_UCAST_IPSEC (2)
275
276/**
277 * Enumeration nix_rx_mcop_e
278 *
279 * NIX Receive Multicast/Mirror Opcode Enumeration Enumerates the values
280 * of NIX_RX_MCE_S[OP].
281 */
282#define NIX_RX_MCOP_E_RQ (0)
283#define NIX_RX_MCOP_E_RSS (1)
284
285/**
286 * Enumeration nix_rx_perrcode_e
287 *
288 * NIX Receive Protocol Error Code Enumeration Enumerates
289 * NIX_RX_PARSE_S[ERRCODE] values when NIX_RX_PARSE_S[ERRLEV] =
290 * NPC_ERRLEV_E::NIX.
291 */
292#define NIX_RX_PERRCODE_E_BUFS_OFLOW (0xa)
293#define NIX_RX_PERRCODE_E_DATA_FAULT (8)
294#define NIX_RX_PERRCODE_E_IL3_LEN (0x20)
295#define NIX_RX_PERRCODE_E_IL4_CHK (0x22)
296#define NIX_RX_PERRCODE_E_IL4_LEN (0x21)
297#define NIX_RX_PERRCODE_E_IL4_PORT (0x23)
298#define NIX_RX_PERRCODE_E_MCAST_FAULT (4)
299#define NIX_RX_PERRCODE_E_MCAST_POISON (6)
300#define NIX_RX_PERRCODE_E_MEMOUT (9)
301#define NIX_RX_PERRCODE_E_MIRROR_FAULT (5)
302#define NIX_RX_PERRCODE_E_MIRROR_POISON (7)
303#define NIX_RX_PERRCODE_E_NPC_RESULT_ERR (2)
304#define NIX_RX_PERRCODE_E_OL3_LEN (0x10)
305#define NIX_RX_PERRCODE_E_OL4_CHK (0x12)
306#define NIX_RX_PERRCODE_E_OL4_LEN (0x11)
307#define NIX_RX_PERRCODE_E_OL4_PORT (0x13)
308
309/**
310 * Enumeration nix_send_status_e
311 *
312 * NIX Send Completion Status Enumeration Enumerates values of
313 * NIX_SEND_COMP_S[STATUS] and NIX_LF_SEND_ERR_DBG[ERRCODE].
314 */
315#define NIX_SEND_STATUS_E_DATA_FAULT (0x16)
316#define NIX_SEND_STATUS_E_DATA_POISON (0x17)
317#define NIX_SEND_STATUS_E_GOOD (0)
318#define NIX_SEND_STATUS_E_INVALID_SUBDC (0x14)
319#define NIX_SEND_STATUS_E_JUMP_FAULT (7)
320#define NIX_SEND_STATUS_E_JUMP_POISON (8)
321#define NIX_SEND_STATUS_E_LOCK_VIOL (0x21)
322#define NIX_SEND_STATUS_E_NPC_DROP_ACTION (0x20)
323#define NIX_SEND_STATUS_E_NPC_MCAST_ABORT (0x24)
324#define NIX_SEND_STATUS_E_NPC_MCAST_CHAN_ERR (0x23)
325#define NIX_SEND_STATUS_E_NPC_UCAST_CHAN_ERR (0x22)
326#define NIX_SEND_STATUS_E_NPC_VTAG_PTR_ERR (0x25)
327#define NIX_SEND_STATUS_E_NPC_VTAG_SIZE_ERR (0x26)
328#define NIX_SEND_STATUS_E_SEND_CRC_ERR (0x10)
329#define NIX_SEND_STATUS_E_SEND_EXT_ERR (6)
330#define NIX_SEND_STATUS_E_SEND_HDR_ERR (5)
331#define NIX_SEND_STATUS_E_SEND_IMM_ERR (0x11)
332#define NIX_SEND_STATUS_E_SEND_MEM_ERR (0x13)
333#define NIX_SEND_STATUS_E_SEND_MEM_FAULT (0x27)
334#define NIX_SEND_STATUS_E_SEND_SG_ERR (0x12)
335#define NIX_SEND_STATUS_E_SQB_FAULT (3)
336#define NIX_SEND_STATUS_E_SQB_POISON (4)
337#define NIX_SEND_STATUS_E_SQ_CTX_FAULT (1)
338#define NIX_SEND_STATUS_E_SQ_CTX_POISON (2)
339#define NIX_SEND_STATUS_E_SUBDC_ORDER_ERR (0x15)
340
341/**
342 * Enumeration nix_sendcrcalg_e
343 *
344 * NIX Send CRC Algorithm Enumeration Enumerates the CRC algorithm used,
345 * see NIX_SEND_CRC_S[ALG].
346 */
347#define NIX_SENDCRCALG_E_CRC32 (0)
348#define NIX_SENDCRCALG_E_CRC32C (1)
349#define NIX_SENDCRCALG_E_ONES16 (2)
350
351/**
352 * Enumeration nix_sendl3type_e
353 *
354 * NIX Send Layer 3 Header Type Enumeration Enumerates values of
355 * NIX_SEND_HDR_S[OL3TYPE], NIX_SEND_HDR_S[IL3TYPE]. Internal: Encoding
356 * matches DPDK TX IP types: \<pre\> PKT_TX_IP_CKSUM (1ULL \<\< 54)
357 * PKT_TX_IPV4 (1ULL \<\< 55) PKT_TX_IPV6 (1ULL \<\<
358 * 56) PKT_TX_OUTER_IP_CKSUM(1ULL \<\< 58) PKT_TX_OUTER_IPV4 (1ULL
359 * \<\< 59) PKT_TX_OUTER_IPV6 (1ULL \<\< 60) \</pre\>
360 */
361#define NIX_SENDL3TYPE_E_IP4 (2)
362#define NIX_SENDL3TYPE_E_IP4_CKSUM (3)
363#define NIX_SENDL3TYPE_E_IP6 (4)
364#define NIX_SENDL3TYPE_E_NONE (0)
365
366/**
367 * Enumeration nix_sendl4type_e
368 *
369 * NIX Send Layer 4 Header Type Enumeration Enumerates values of
370 * NIX_SEND_HDR_S[OL4TYPE], NIX_SEND_HDR_S[IL4TYPE]. Internal: Encoding
371 * matches DPDK TX L4 types. \<pre\> PKT_TX_L4_NO_CKSUM (0ULL \<\< 52)
372 * // Disable L4 cksum of TX pkt. PKT_TX_TCP_CKSUM (1ULL \<\< 52) //
373 * TCP cksum of TX pkt. computed by nic. PKT_TX_SCTP_CKSUM (2ULL \<\<
374 * 52) // SCTP cksum of TX pkt. computed by nic. PKT_TX_UDP_CKSUM
375 * (3ULL \<\< 52) // UDP cksum of TX pkt. computed by nic. \</pre\>
376 */
377#define NIX_SENDL4TYPE_E_NONE (0)
378#define NIX_SENDL4TYPE_E_SCTP_CKSUM (2)
379#define NIX_SENDL4TYPE_E_TCP_CKSUM (1)
380#define NIX_SENDL4TYPE_E_UDP_CKSUM (3)
381
382/**
383 * Enumeration nix_sendldtype_e
384 *
385 * NIX Send Load Type Enumeration Enumerates the load transaction types
386 * for reading segment bytes specified by NIX_SEND_SG_S[LD_TYPE] and
387 * NIX_SEND_JUMP_S[LD_TYPE]. Internal: The hardware implementation
388 * treats undefined encodings as LDD load type.
389 */
390#define NIX_SENDLDTYPE_E_LDD (0)
391#define NIX_SENDLDTYPE_E_LDT (1)
392#define NIX_SENDLDTYPE_E_LDWB (2)
393
394/**
395 * Enumeration nix_sendmemalg_e
396 *
397 * NIX Memory Modify Algorithm Enumeration Enumerates the different
398 * algorithms for modifying memory; see NIX_SEND_MEM_S[ALG]. mbufs_freed
399 * is the number of gather buffers freed to NPA for the send descriptor.
400 * See NIX_SEND_HDR_S[DF] and NIX_SEND_SG_S[I*].
401 */
402#define NIX_SENDMEMALG_E_ADD (8)
403#define NIX_SENDMEMALG_E_ADDLEN (0xa)
404#define NIX_SENDMEMALG_E_ADDMBUF (0xc)
405#define NIX_SENDMEMALG_E_SET (0)
406#define NIX_SENDMEMALG_E_SETRSLT (2)
407#define NIX_SENDMEMALG_E_SETTSTMP (1)
408#define NIX_SENDMEMALG_E_SUB (9)
409#define NIX_SENDMEMALG_E_SUBLEN (0xb)
410#define NIX_SENDMEMALG_E_SUBMBUF (0xd)
411
412/**
413 * Enumeration nix_sendmemdsz_e
414 *
415 * NIX Memory Data Size Enumeration Enumerates the datum size for
416 * modifying memory; see NIX_SEND_MEM_S[DSZ].
417 */
418#define NIX_SENDMEMDSZ_E_B16 (2)
419#define NIX_SENDMEMDSZ_E_B32 (1)
420#define NIX_SENDMEMDSZ_E_B64 (0)
421#define NIX_SENDMEMDSZ_E_B8 (3)
422
423/**
424 * Enumeration nix_sqint_e
425 *
426 * NIX Send Queue Interrupt Enumeration Enumerates the bit index of
427 * NIX_SQ_CTX_S[SQ_INT,SQ_INT_ENA].
428 */
429#define NIX_SQINT_E_LMT_ERR (0)
430#define NIX_SQINT_E_MNQ_ERR (1)
431#define NIX_SQINT_E_SEND_ERR (2)
432#define NIX_SQINT_E_SQB_ALLOC_FAIL (3)
433
434/**
435 * Enumeration nix_sqoperr_e
436 *
437 * NIX SQ Operation Error Enumeration Enumerates
438 * NIX_LF_SQ_OP_ERR_DBG[ERRCODE] values.
439 */
440#define NIX_SQOPERR_E_MAX_SQE_SIZE_ERR (4)
441#define NIX_SQOPERR_E_SQB_FAULT (7)
442#define NIX_SQOPERR_E_SQB_NULL (6)
443#define NIX_SQOPERR_E_SQE_OFLOW (5)
444#define NIX_SQOPERR_E_SQE_SIZEM1_ZERO (8)
445#define NIX_SQOPERR_E_SQ_CTX_FAULT (1)
446#define NIX_SQOPERR_E_SQ_CTX_POISON (2)
447#define NIX_SQOPERR_E_SQ_DISABLED (3)
448#define NIX_SQOPERR_E_SQ_OOR (0)
449
450/**
451 * Enumeration nix_stat_lf_rx_e
452 *
453 * NIX Local Function Receive Statistics Enumeration Enumerates the last
454 * index of NIX_AF_LF()_RX_STAT() and NIX_LF_RX_STAT().
455 */
456#define NIX_STAT_LF_RX_E_RX_BCAST (2)
457#define NIX_STAT_LF_RX_E_RX_DROP (4)
458#define NIX_STAT_LF_RX_E_RX_DROP_OCTS (5)
459#define NIX_STAT_LF_RX_E_RX_DRP_BCAST (8)
460#define NIX_STAT_LF_RX_E_RX_DRP_L3BCAST (0xa)
461#define NIX_STAT_LF_RX_E_RX_DRP_L3MCAST (0xb)
462#define NIX_STAT_LF_RX_E_RX_DRP_MCAST (9)
463#define NIX_STAT_LF_RX_E_RX_ERR (7)
464#define NIX_STAT_LF_RX_E_RX_FCS (6)
465#define NIX_STAT_LF_RX_E_RX_MCAST (3)
466#define NIX_STAT_LF_RX_E_RX_OCTS (0)
467#define NIX_STAT_LF_RX_E_RX_UCAST (1)
468
469/**
470 * Enumeration nix_stat_lf_tx_e
471 *
472 * NIX Local Function Transmit Statistics Enumeration Enumerates the
473 * index of NIX_AF_LF()_TX_STAT() and NIX_LF_TX_STAT(). These statistics
474 * do not account for packet replication due to NIX_TX_ACTION_S[OP] =
475 * NIX_TX_ACTIONOP_E::MCAST.
476 */
477#define NIX_STAT_LF_TX_E_TX_BCAST (1)
478#define NIX_STAT_LF_TX_E_TX_DROP (3)
479#define NIX_STAT_LF_TX_E_TX_MCAST (2)
480#define NIX_STAT_LF_TX_E_TX_OCTS (4)
481#define NIX_STAT_LF_TX_E_TX_UCAST (0)
482
483/**
484 * Enumeration nix_stype_e
485 *
486 * NIX SQB Caching Type Enumeration Enumerates the values of
487 * NIX_SQ_CTX_S[SQE_STYPE].
488 */
489#define NIX_STYPE_E_STF (0)
490#define NIX_STYPE_E_STP (2)
491#define NIX_STYPE_E_STT (1)
492
493/**
494 * Enumeration nix_subdc_e
495 *
496 * NIX Subdescriptor Operation Enumeration Enumerates send and receive
497 * subdescriptor codes. The codes differentiate subdescriptors within a
498 * NIX send or receive descriptor, excluding NIX_SEND_HDR_S for send and
499 * NIX_CQE_HDR_S/NIX_WQE_HDR_S for receive, which are determined by their
500 * position as the first subdescriptor, and NIX_RX_PARSE_S, which is
501 * determined by its position as the second subdescriptor.
502 */
503#define NIX_SUBDC_E_CRC (2)
504#define NIX_SUBDC_E_EXT (1)
505#define NIX_SUBDC_E_IMM (3)
506#define NIX_SUBDC_E_JUMP (6)
507#define NIX_SUBDC_E_MEM (5)
508#define NIX_SUBDC_E_NOP (0)
509#define NIX_SUBDC_E_SG (4)
510#define NIX_SUBDC_E_SOD (0xf)
511#define NIX_SUBDC_E_WORK (7)
512
513/**
514 * Enumeration nix_tx_actionop_e
515 *
516 * NIX Transmit Action Opcode Enumeration Enumerates the values of
517 * NIX_TX_ACTION_S[OP].
518 */
519#define NIX_TX_ACTIONOP_E_DROP (0)
520#define NIX_TX_ACTIONOP_E_DROP_VIOL (5)
521#define NIX_TX_ACTIONOP_E_MCAST (3)
522#define NIX_TX_ACTIONOP_E_UCAST_CHAN (2)
523#define NIX_TX_ACTIONOP_E_UCAST_DEFAULT (1)
524
525/**
526 * Enumeration nix_tx_vtagop_e
527 *
528 * NIX Transmit Vtag Opcode Enumeration Enumerates the values of
529 * NIX_TX_VTAG_ACTION_S[VTAG0_OP,VTAG1_OP].
530 */
531#define NIX_TX_VTAGOP_E_INSERT (1)
532#define NIX_TX_VTAGOP_E_NOP (0)
533#define NIX_TX_VTAGOP_E_REPLACE (2)
534
535/**
536 * Enumeration nix_txlayer_e
537 *
538 * NIX Transmit Layer Enumeration Enumerates the values of
539 * NIX_AF_LSO_FORMAT()_FIELD()[LAYER].
540 */
541#define NIX_TXLAYER_E_IL3 (2)
542#define NIX_TXLAYER_E_IL4 (3)
543#define NIX_TXLAYER_E_OL3 (0)
544#define NIX_TXLAYER_E_OL4 (1)
545
546/**
547 * Enumeration nix_vtagsize_e
548 *
549 * NIX Vtag Size Enumeration Enumerates the values of
550 * NIX_AF_TX_VTAG_DEF()_CTL[SIZE] and NIX_AF_LF()_RX_VTAG_TYPE()[SIZE].
551 */
552#define NIX_VTAGSIZE_E_T4 (0)
553#define NIX_VTAGSIZE_E_T8 (1)
554
555/**
556 * Enumeration nix_xqe_type_e
557 *
558 * NIX WQE/CQE Type Enumeration Enumerates the values of
559 * NIX_WQE_HDR_S[WQE_TYPE], NIX_CQE_HDR_S[CQE_TYPE].
560 */
561#define NIX_XQE_TYPE_E_INVALID (0)
562#define NIX_XQE_TYPE_E_RX (1)
563#define NIX_XQE_TYPE_E_RX_IPSECD (4)
564#define NIX_XQE_TYPE_E_RX_IPSECH (3)
565#define NIX_XQE_TYPE_E_RX_IPSECS (2)
566#define NIX_XQE_TYPE_E_SEND (8)
567
568/**
569 * Enumeration nix_xqesz_e
570 *
571 * NIX WQE/CQE Size Enumeration Enumerates the values of
572 * NIX_AF_LF()_CFG[XQE_SIZE].
573 */
574#define NIX_XQESZ_E_W16 (1)
575#define NIX_XQESZ_E_W64 (0)
576
577/**
578 * Structure nix_aq_inst_s
579 *
580 * NIX Admin Queue Instruction Structure This structure specifies the AQ
581 * instruction. Instructions and associated software structures are
582 * stored in memory as little-endian unless NIX_AF_CFG[AF_BE] is set.
583 * Hardware reads of NIX_AQ_INST_S do not allocate into LLC. Hardware
584 * reads and writes of the context structure selected by [CTYPE], [LF]
585 * and [CINDEX] use the NDC and LLC caching style configured for that
586 * context. For example: * When [CTYPE] = NIX_AQ_CTYPE_E::RQ: use
587 * NIX_AF_LF()_RSS_CFG[CACHING] and NIX_AF_LF()_RSS_CFG[WAY_MASK]. * When
588 * [CTYPE] = NIX_AQ_CTYPE_E::MCE: use NIX_AF_RX_MCAST_CFG[CACHING] and
589 * NIX_AF_RX_MCAST_CFG[WAY_MASK].
590 */
591union nix_aq_inst_s {
592 u64 u[2];
593 struct nix_aq_inst_s_s {
594 u64 op : 4;
595 u64 ctype : 4;
596 u64 lf : 7;
597 u64 reserved_15_23 : 9;
598 u64 cindex : 20;
599 u64 reserved_44_62 : 19;
600 u64 doneint : 1;
601 u64 res_addr : 64;
602 } s;
603 /* struct nix_aq_inst_s_s cn; */
604};
605
606/**
607 * Structure nix_aq_res_s
608 *
609 * NIX Admin Queue Result Structure NIX writes this structure after it
610 * completes the NIX_AQ_INST_S instruction. The result structure is
611 * exactly 16 bytes, and each instruction completion produces exactly one
612 * result structure. Results and associated software structures are
613 * stored in memory as little-endian unless NIX_AF_CFG[AF_BE] is set.
614 * When [OP] = NIX_AQ_INSTOP_E::INIT, WRITE or READ, this structure is
615 * immediately followed by context read or write data. See
616 * NIX_AQ_INSTOP_E. Hardware writes of NIX_AQ_RES_S and context data
617 * always allocate into LLC. Hardware reads of context data do not
618 * allocate into LLC.
619 */
620union nix_aq_res_s {
621 u64 u[2];
622 struct nix_aq_res_s_s {
623 u64 op : 4;
624 u64 ctype : 4;
625 u64 compcode : 8;
626 u64 doneint : 1;
627 u64 reserved_17_63 : 47;
628 u64 reserved_64_127 : 64;
629 } s;
630 /* struct nix_aq_res_s_s cn; */
631};
632
633/**
634 * Structure nix_cint_hw_s
635 *
636 * NIX Completion Interrupt Context Hardware Structure This structure
637 * contains context state maintained by hardware for each completion
638 * interrupt (CINT) in NDC/LLC/DRAM. Software accesses this structure
639 * with the NIX_LF_CINT()* registers. Hardware maintains a table of
640 * NIX_AF_CONST2[CINTS] contiguous NIX_CINT_HW_S structures per LF
641 * starting at AF IOVA NIX_AF_LF()_CINTS_BASE. Always stored in byte
642 * invariant little-endian format (LE8).
643 */
644union nix_cint_hw_s {
645 u64 u[2];
646 struct nix_cint_hw_s_s {
647 u64 ecount : 32;
648 u64 qcount : 16;
649 u64 intr : 1;
650 u64 ena : 1;
651 u64 timer_idx : 8;
652 u64 reserved_58_63 : 6;
653 u64 ecount_wait : 32;
654 u64 qcount_wait : 16;
655 u64 time_wait : 8;
656 u64 reserved_120_127 : 8;
657 } s;
658 /* struct nix_cint_hw_s_s cn; */
659};
660
661/**
662 * Structure nix_cq_ctx_s
663 *
664 * NIX Completion Queue Context Structure This structure contains context
665 * state maintained by hardware for each CQ in NDC/LLC/DRAM. Software
666 * uses the same structure format to read and write an CQ context with
667 * the NIX admin queue.
668 */
669union nix_cq_ctx_s {
670 u64 u[4];
671 struct nix_cq_ctx_s_s {
672 u64 base : 64;
673 u64 reserved_64_67 : 4;
674 u64 bp_ena : 1;
675 u64 reserved_69_71 : 3;
676 u64 bpid : 9;
677 u64 reserved_81_83 : 3;
678 u64 qint_idx : 7;
679 u64 cq_err : 1;
680 u64 cint_idx : 7;
681 u64 avg_con : 9;
682 u64 wrptr : 20;
683 u64 tail : 20;
684 u64 head : 20;
685 u64 avg_level : 8;
686 u64 update_time : 16;
687 u64 bp : 8;
688 u64 drop : 8;
689 u64 drop_ena : 1;
690 u64 ena : 1;
691 u64 reserved_210_211 : 2;
692 u64 substream : 20;
693 u64 caching : 1;
694 u64 reserved_233_235 : 3;
695 u64 qsize : 4;
696 u64 cq_err_int : 8;
697 u64 cq_err_int_ena : 8;
698 } s;
699 /* struct nix_cq_ctx_s_s cn; */
700};
701
702/**
703 * Structure nix_cqe_hdr_s
704 *
705 * NIX Completion Queue Entry Header Structure This 64-bit structure
706 * defines the first word of every CQE. It is immediately followed by
707 * NIX_RX_PARSE_S in a receive CQE, and by NIX_SEND_COMP_S in a send
708 * completion CQE. Stored in memory as little-endian unless
709 * NIX_AF_LF()_CFG[BE] is set.
710 */
711union nix_cqe_hdr_s {
712 u64 u;
713 struct nix_cqe_hdr_s_s {
714 u64 tag : 32;
715 u64 q : 20;
716 u64 reserved_52_57 : 6;
717 u64 node : 2;
718 u64 cqe_type : 4;
719 } s;
720 /* struct nix_cqe_hdr_s_s cn; */
721};
722
723/**
724 * Structure nix_inst_hdr_s
725 *
726 * NIX Instruction Header Structure This structure defines the
727 * instruction header that precedes the packet header supplied to NPC for
728 * packets to be transmitted by NIX.
729 */
730union nix_inst_hdr_s {
731 u64 u;
732 struct nix_inst_hdr_s_s {
733 u64 pf_func : 16;
734 u64 sq : 20;
735 u64 reserved_36_63 : 28;
736 } s;
737 /* struct nix_inst_hdr_s_s cn; */
738};
739
740/**
741 * Structure nix_iova_s
742 *
743 * NIX I/O Virtual Address Structure
744 */
745union nix_iova_s {
746 u64 u;
747 struct nix_iova_s_s {
748 u64 addr : 64;
749 } s;
750 /* struct nix_iova_s_s cn; */
751};
752
753/**
754 * Structure nix_ipsec_dyno_s
755 *
756 * INTERNAL: NIX IPSEC Dynamic Ordering Counter Structure Internal: Not
757 * used; no IPSEC fast-path.
758 */
759union nix_ipsec_dyno_s {
760 u32 u;
761 struct nix_ipsec_dyno_s_s {
762 u32 count : 32;
763 } s;
764 /* struct nix_ipsec_dyno_s_s cn; */
765};
766
767/**
768 * Structure nix_mem_result_s
769 *
770 * NIX Memory Value Structure When
771 * NIX_SEND_MEM_S[ALG]=NIX_SENDMEMALG_E::SETRSLT, the value written to
772 * memory is formed with this structure.
773 */
774union nix_mem_result_s {
775 u64 u;
776 struct nix_mem_result_s_s {
777 u64 v : 1;
778 u64 color : 2;
779 u64 reserved_3_63 : 61;
780 } s;
781 /* struct nix_mem_result_s_s cn; */
782};
783
784/**
785 * Structure nix_op_q_wdata_s
786 *
787 * NIX Statistics Operation Write Data Structure This structure specifies
788 * the write data format of an atomic 64-bit load-and-add of some
789 * NIX_LF_RQ_OP_*, NIX_LF_SQ_OP* and NIX_LF_CQ_OP* registers.
790 */
791union nix_op_q_wdata_s {
792 u64 u;
793 struct nix_op_q_wdata_s_s {
794 u64 reserved_0_31 : 32;
795 u64 q : 20;
796 u64 reserved_52_63 : 12;
797 } s;
798 /* struct nix_op_q_wdata_s_s cn; */
799};
800
801/**
802 * Structure nix_qint_hw_s
803 *
804 * NIX Queue Interrupt Context Hardware Structure This structure contains
805 * context state maintained by hardware for each queue interrupt (QINT)
806 * in NDC/LLC/DRAM. Software accesses this structure with the
807 * NIX_LF_QINT()* registers. Hardware maintains a table of
808 * NIX_AF_CONST2[QINTS] contiguous NIX_QINT_HW_S structures per LF
809 * starting at IOVA NIX_AF_LF()_QINTS_BASE. Always stored in byte
810 * invariant little-endian format (LE8).
811 */
812union nix_qint_hw_s {
813 u32 u;
814 struct nix_qint_hw_s_s {
815 u32 count : 22;
816 u32 reserved_22_30 : 9;
817 u32 ena : 1;
818 } s;
819 /* struct nix_qint_hw_s_s cn; */
820};
821
822/**
823 * Structure nix_rq_ctx_hw_s
824 *
825 * NIX Receive Queue Context Structure This structure contains context
826 * state maintained by hardware for each RQ in NDC/LLC/DRAM. Software
827 * uses the equivalent NIX_RQ_CTX_S structure format to read and write an
828 * RQ context with the NIX admin queue. Always stored in byte invariant
829 * little-endian format (LE8).
830 */
831union nix_rq_ctx_hw_s {
832 u64 u[16];
833 struct nix_rq_ctx_hw_s_s {
834 u64 ena : 1;
835 u64 sso_ena : 1;
836 u64 ipsech_ena : 1;
837 u64 ena_wqwd : 1;
838 u64 cq : 20;
839 u64 substream : 20;
840 u64 wqe_aura : 20;
841 u64 spb_aura : 20;
842 u64 lpb_aura : 20;
843 u64 sso_grp : 10;
844 u64 sso_tt : 2;
845 u64 pb_caching : 2;
846 u64 wqe_caching : 1;
847 u64 xqe_drop_ena : 1;
848 u64 spb_drop_ena : 1;
849 u64 lpb_drop_ena : 1;
850 u64 wqe_skip : 2;
851 u64 reserved_124_127 : 4;
852 u64 reserved_128_139 : 12;
853 u64 spb_sizem1 : 6;
854 u64 reserved_146_150 : 5;
855 u64 spb_ena : 1;
856 u64 lpb_sizem1 : 12;
857 u64 first_skip : 7;
858 u64 reserved_171 : 1;
859 u64 later_skip : 6;
860 u64 xqe_imm_size : 6;
861 u64 reserved_184_189 : 6;
862 u64 xqe_imm_copy : 1;
863 u64 xqe_hdr_split : 1;
864 u64 xqe_drop : 8;
865 u64 xqe_pass : 8;
866 u64 wqe_pool_drop : 8;
867 u64 wqe_pool_pass : 8;
868 u64 spb_aura_drop : 8;
869 u64 spb_aura_pass : 8;
870 u64 spb_pool_drop : 8;
871 u64 spb_pool_pass : 8;
872 u64 lpb_aura_drop : 8;
873 u64 lpb_aura_pass : 8;
874 u64 lpb_pool_drop : 8;
875 u64 lpb_pool_pass : 8;
876 u64 reserved_288_319 : 32;
877 u64 ltag : 24;
878 u64 good_utag : 8;
879 u64 bad_utag : 8;
880 u64 flow_tagw : 6;
881 u64 reserved_366_383 : 18;
882 u64 octs : 48;
883 u64 reserved_432_447 : 16;
884 u64 pkts : 48;
885 u64 reserved_496_511 : 16;
886 u64 drop_octs : 48;
887 u64 reserved_560_575 : 16;
888 u64 drop_pkts : 48;
889 u64 reserved_624_639 : 16;
890 u64 re_pkts : 48;
891 u64 reserved_688_702 : 15;
892 u64 ena_copy : 1;
893 u64 reserved_704_739 : 36;
894 u64 rq_int : 8;
895 u64 rq_int_ena : 8;
896 u64 qint_idx : 7;
897 u64 reserved_763_767 : 5;
898 u64 reserved_768_831 : 64;
899 u64 reserved_832_895 : 64;
900 u64 reserved_896_959 : 64;
901 u64 reserved_960_1023 : 64;
902 } s;
903 /* struct nix_rq_ctx_hw_s_s cn; */
904};
905
906/**
907 * Structure nix_rq_ctx_s
908 *
909 * NIX Receive Queue Context Structure This structure specifies the
910 * format used by software to read and write an RQ context with the NIX
911 * admin queue.
912 */
913union nix_rq_ctx_s {
914 u64 u[16];
915 struct nix_rq_ctx_s_s {
916 u64 ena : 1;
917 u64 sso_ena : 1;
918 u64 ipsech_ena : 1;
919 u64 ena_wqwd : 1;
920 u64 cq : 20;
921 u64 substream : 20;
922 u64 wqe_aura : 20;
923 u64 spb_aura : 20;
924 u64 lpb_aura : 20;
925 u64 sso_grp : 10;
926 u64 sso_tt : 2;
927 u64 pb_caching : 2;
928 u64 wqe_caching : 1;
929 u64 xqe_drop_ena : 1;
930 u64 spb_drop_ena : 1;
931 u64 lpb_drop_ena : 1;
932 u64 reserved_122_127 : 6;
933 u64 reserved_128_139 : 12;
934 u64 spb_sizem1 : 6;
935 u64 wqe_skip : 2;
936 u64 reserved_148_150 : 3;
937 u64 spb_ena : 1;
938 u64 lpb_sizem1 : 12;
939 u64 first_skip : 7;
940 u64 reserved_171 : 1;
941 u64 later_skip : 6;
942 u64 xqe_imm_size : 6;
943 u64 reserved_184_189 : 6;
944 u64 xqe_imm_copy : 1;
945 u64 xqe_hdr_split : 1;
946 u64 xqe_drop : 8;
947 u64 xqe_pass : 8;
948 u64 wqe_pool_drop : 8;
949 u64 wqe_pool_pass : 8;
950 u64 spb_aura_drop : 8;
951 u64 spb_aura_pass : 8;
952 u64 spb_pool_drop : 8;
953 u64 spb_pool_pass : 8;
954 u64 lpb_aura_drop : 8;
955 u64 lpb_aura_pass : 8;
956 u64 lpb_pool_drop : 8;
957 u64 lpb_pool_pass : 8;
958 u64 reserved_288_291 : 4;
959 u64 rq_int : 8;
960 u64 rq_int_ena : 8;
961 u64 qint_idx : 7;
962 u64 reserved_315_319 : 5;
963 u64 ltag : 24;
964 u64 good_utag : 8;
965 u64 bad_utag : 8;
966 u64 flow_tagw : 6;
967 u64 reserved_366_383 : 18;
968 u64 octs : 48;
969 u64 reserved_432_447 : 16;
970 u64 pkts : 48;
971 u64 reserved_496_511 : 16;
972 u64 drop_octs : 48;
973 u64 reserved_560_575 : 16;
974 u64 drop_pkts : 48;
975 u64 reserved_624_639 : 16;
976 u64 re_pkts : 48;
977 u64 reserved_688_703 : 16;
978 u64 reserved_704_767 : 64;
979 u64 reserved_768_831 : 64;
980 u64 reserved_832_895 : 64;
981 u64 reserved_896_959 : 64;
982 u64 reserved_960_1023 : 64;
983 } s;
984 /* struct nix_rq_ctx_s_s cn; */
985};
986
987/**
988 * Structure nix_rsse_s
989 *
990 * NIX Receive Side Scaling Entry Structure This structure specifies the
991 * format of each hardware entry in the NIX RSS tables in NDC/LLC/DRAM.
992 * See NIX_AF_LF()_RSS_BASE and NIX_AF_LF()_RSS_GRP(). Software uses the
993 * same structure format to read and write an RSS table entry with the
994 * NIX admin queue.
995 */
996union nix_rsse_s {
997 u32 u;
998 struct nix_rsse_s_s {
999 u32 rq : 20;
1000 u32 reserved_20_31 : 12;
1001 } s;
1002 /* struct nix_rsse_s_s cn; */
1003};
1004
1005/**
1006 * Structure nix_rx_action_s
1007 *
1008 * NIX Receive Action Structure This structure defines the format of
1009 * NPC_RESULT_S[ACTION] for a receive packet.
1010 */
1011union nix_rx_action_s {
1012 u64 u;
1013 struct nix_rx_action_s_s {
1014 u64 op : 4;
1015 u64 pf_func : 16;
1016 u64 index : 20;
1017 u64 match_id : 16;
1018 u64 flow_key_alg : 5;
1019 u64 reserved_61_63 : 3;
1020 } s;
1021 /* struct nix_rx_action_s_s cn; */
1022};
1023
1024/**
1025 * Structure nix_rx_imm_s
1026 *
1027 * NIX Receive Immediate Subdescriptor Structure The receive immediate
1028 * subdescriptor indicates that bytes immediately following this
1029 * NIX_RX_IMM_S (after skipping [APAD] bytes) were saved from the
1030 * received packet. The next subdescriptor following this NIX_RX_IMM_S
1031 * (when one exists) will follow the immediate bytes, after rounding up
1032 * the address to a multiple of 16 bytes.
1033 */
1034union nix_rx_imm_s {
1035 u64 u;
1036 struct nix_rx_imm_s_s {
1037 u64 size : 16;
1038 u64 apad : 3;
1039 u64 reserved_19_59 : 41;
1040 u64 subdc : 4;
1041 } s;
1042 /* struct nix_rx_imm_s_s cn; */
1043};
1044
1045/**
1046 * Structure nix_rx_mce_s
1047 *
1048 * NIX Receive Multicast/Mirror Entry Structure This structure specifies
1049 * the format of entries in the NIX receive multicast/mirror table
1050 * maintained by hardware in NDC/LLC/DRAM. See NIX_AF_RX_MCAST_BASE and
1051 * NIX_AF_RX_MCAST_CFG. Note the table may contain both multicast and
1052 * mirror replication lists. Software uses the same structure format to
1053 * read and write a multicast/mirror table entry with the NIX admin
1054 * queue.
1055 */
1056union nix_rx_mce_s {
1057 u64 u;
1058 struct nix_rx_mce_s_s {
1059 u64 op : 2;
1060 u64 reserved_2 : 1;
1061 u64 eol : 1;
1062 u64 index : 20;
1063 u64 reserved_24_31 : 8;
1064 u64 pf_func : 16;
1065 u64 next : 16;
1066 } s;
1067 /* struct nix_rx_mce_s_s cn; */
1068};
1069
1070/**
1071 * Structure nix_rx_parse_s
1072 *
1073 * NIX Receive Parse Structure This structure contains the receive packet
1074 * parse result. It immediately follows NIX_CQE_HDR_S in a receive CQE,
1075 * or NIX_WQE_HDR_S in a receive WQE. Stored in memory as little-endian
1076 * unless NIX_AF_LF()_CFG[BE] is set. Header layers are always 2-byte
1077 * aligned, so all header pointers in this structure ([EOH_PTR], [LAPTR]
1078 * through [LHPTR], [VTAG*_PTR]) are even.
1079 */
1080union nix_rx_parse_s {
1081 u64 u[7];
1082 struct nix_rx_parse_s_s {
1083 u64 chan : 12;
1084 u64 desc_sizem1 : 5;
1085 u64 imm_copy : 1;
1086 u64 express : 1;
1087 u64 wqwd : 1;
1088 u64 errlev : 4;
1089 u64 errcode : 8;
1090 u64 latype : 4;
1091 u64 lbtype : 4;
1092 u64 lctype : 4;
1093 u64 ldtype : 4;
1094 u64 letype : 4;
1095 u64 lftype : 4;
1096 u64 lgtype : 4;
1097 u64 lhtype : 4;
1098 u64 pkt_lenm1 : 16;
1099 u64 l2m : 1;
1100 u64 l2b : 1;
1101 u64 l3m : 1;
1102 u64 l3b : 1;
1103 u64 vtag0_valid : 1;
1104 u64 vtag0_gone : 1;
1105 u64 vtag1_valid : 1;
1106 u64 vtag1_gone : 1;
1107 u64 pkind : 6;
1108 u64 reserved_94_95 : 2;
1109 u64 vtag0_tci : 16;
1110 u64 vtag1_tci : 16;
1111 u64 laflags : 8;
1112 u64 lbflags : 8;
1113 u64 lcflags : 8;
1114 u64 ldflags : 8;
1115 u64 leflags : 8;
1116 u64 lfflags : 8;
1117 u64 lgflags : 8;
1118 u64 lhflags : 8;
1119 u64 eoh_ptr : 8;
1120 u64 wqe_aura : 20;
1121 u64 pb_aura : 20;
1122 u64 match_id : 16;
1123 u64 laptr : 8;
1124 u64 lbptr : 8;
1125 u64 lcptr : 8;
1126 u64 ldptr : 8;
1127 u64 leptr : 8;
1128 u64 lfptr : 8;
1129 u64 lgptr : 8;
1130 u64 lhptr : 8;
1131 u64 vtag0_ptr : 8;
1132 u64 vtag1_ptr : 8;
1133 u64 flow_key_alg : 5;
1134 u64 reserved_341_383 : 43;
1135 u64 reserved_384_447 : 64;
1136 } s;
1137 /* struct nix_rx_parse_s_s cn; */
1138};
1139
1140/**
1141 * Structure nix_rx_sg_s
1142 *
1143 * NIX Receive Scatter/Gather Subdescriptor Structure The receive
1144 * scatter/gather subdescriptor specifies one to three segments of packet
1145 * data bytes. There may be multiple NIX_RX_SG_Ss in each NIX receive
1146 * descriptor. NIX_RX_SG_S is immediately followed by one NIX_IOVA_S
1147 * word when [SEGS] = 1, three NIX_IOVA_S words when [SEGS] \>= 2. Each
1148 * NIX_IOVA_S word specifies the LF IOVA of first packet data byte in the
1149 * corresponding segment; first NIX_IOVA_S word for segment 1, second
1150 * word for segment 2, third word for segment 3. Note the third word is
1151 * present when [SEGS] \>= 2 but only valid when [SEGS] = 3.
1152 */
1153union nix_rx_sg_s {
1154 u64 u;
1155 struct nix_rx_sg_s_s {
1156 u64 seg1_size : 16;
1157 u64 seg2_size : 16;
1158 u64 seg3_size : 16;
1159 u64 segs : 2;
1160 u64 reserved_50_59 : 10;
1161 u64 subdc : 4;
1162 } s;
1163 /* struct nix_rx_sg_s_s cn; */
1164};
1165
1166/**
1167 * Structure nix_rx_vtag_action_s
1168 *
1169 * NIX Receive Vtag Action Structure This structure defines the format of
1170 * NPC_RESULT_S[VTAG_ACTION] for a receive packet. It specifies up to two
1171 * Vtags (e.g. C-VLAN/S-VLAN tags, 802.1BR E-TAG) for optional capture
1172 * and/or stripping.
1173 */
1174union nix_rx_vtag_action_s {
1175 u64 u;
1176 struct nix_rx_vtag_action_s_s {
1177 u64 vtag0_relptr : 8;
1178 u64 vtag0_lid : 3;
1179 u64 reserved_11 : 1;
1180 u64 vtag0_type : 3;
1181 u64 vtag0_valid : 1;
1182 u64 reserved_16_31 : 16;
1183 u64 vtag1_relptr : 8;
1184 u64 vtag1_lid : 3;
1185 u64 reserved_43 : 1;
1186 u64 vtag1_type : 3;
1187 u64 vtag1_valid : 1;
1188 u64 reserved_48_63 : 16;
1189 } s;
1190 /* struct nix_rx_vtag_action_s_s cn; */
1191};
1192
1193/**
1194 * Structure nix_send_comp_s
1195 *
1196 * NIX Send Completion Structure This structure immediately follows
1197 * NIX_CQE_HDR_S in a send completion CQE.
1198 */
1199union nix_send_comp_s {
1200 u64 u;
1201 struct nix_send_comp_s_s {
1202 u64 status : 8;
1203 u64 sqe_id : 16;
1204 u64 reserved_24_63 : 40;
1205 } s;
1206 /* struct nix_send_comp_s_s cn; */
1207};
1208
1209/**
1210 * Structure nix_send_crc_s
1211 *
1212 * NIX Send CRC Subdescriptor Structure The send CRC subdescriptor
1213 * specifies a CRC calculation be performed during transmission. Ignored
1214 * when present in a send descriptor with NIX_SEND_EXT_S[LSO] set. There
1215 * may be up to two NIX_SEND_CRC_Ss per send descriptor. NIX_SEND_CRC_S
1216 * constraints: * When present, NIX_SEND_CRC_S subdescriptors must
1217 * precede all NIX_SEND_SG_S, NIX_SEND_IMM_S and NIX_SEND_MEM_S
1218 * subdescriptors in the send descriptor. * NIX_SEND_CRC_S subdescriptors
1219 * must follow the same order as their checksum and insert regions in the
1220 * packet, i.e. the checksum and insert regions of a NIX_SEND_CRC_S must
1221 * come after the checksum and insert regions of a preceding
1222 * NIX_SEND_CRC_S. There must be no overlap between any NIX_SEND_CRC_S
1223 * checksum and insert regions. * If either
1224 * NIX_SEND_HDR_S[OL4TYPE,IL4TYPE] = NIX_SENDL4TYPE_E::SCTP_CKSUM, the
1225 * SCTP checksum region and NIX_SEND_CRC_S insert region must not
1226 * overlap, and likewise the NIX_SEND_CRC_S checksum region and SCTP
1227 * insert region must not overlap. * If either
1228 * NIX_SEND_HDR_S[OL3TYPE,IL3TYPE] = NIX_SENDL3TYPE_E::IP4_CKSUM, the
1229 * IPv4 header checksum region and NIX_SEND_CRC_S insert region must not
1230 * overlap. * Any checksums inserted by
1231 * NIX_SEND_HDR_S[OL3TYPE,OL4TYPE,IL3TYPE,IL4TYPE] must be outside of the
1232 * NIX_SEND_CRC_S checksum and insert regions. Hardware adjusts [START],
1233 * [SIZE] and [INSERT] as needed to account for any VLAN inserted by
1234 * NIX_SEND_EXT_S[VLAN*] or Vtag inserted by NIX_TX_VTAG_ACTION_S.
1235 */
1236union nix_send_crc_s {
1237 u64 u[2];
1238 struct nix_send_crc_s_s {
1239 u64 size : 16;
1240 u64 start : 16;
1241 u64 insert : 16;
1242 u64 reserved_48_57 : 10;
1243 u64 alg : 2;
1244 u64 subdc : 4;
1245 u64 iv : 32;
1246 u64 reserved_96_127 : 32;
1247 } s;
1248 /* struct nix_send_crc_s_s cn; */
1249};
1250
1251/**
1252 * Structure nix_send_ext_s
1253 *
1254 * NIX Send Extended Header Subdescriptor Structure The send extended
1255 * header specifies LSO, VLAN insertion, timestamp and/or scheduling
1256 * services on the packet. If present, it must immediately follow
1257 * NIX_SEND_HDR_S. All fields are assumed to be zero when this
1258 * subdescriptor is not present.
1259 */
1260union nix_send_ext_s {
1261 u64 u[2];
1262 struct nix_send_ext_s_s {
1263 u64 lso_mps : 14;
1264 u64 lso : 1;
1265 u64 tstmp : 1;
1266 u64 lso_sb : 8;
1267 u64 lso_format : 5;
1268 u64 reserved_29_31 : 3;
1269 u64 shp_chg : 9;
1270 u64 shp_dis : 1;
1271 u64 shp_ra : 2;
1272 u64 markptr : 8;
1273 u64 markform : 7;
1274 u64 mark_en : 1;
1275 u64 subdc : 4;
1276 u64 vlan0_ins_ptr : 8;
1277 u64 vlan0_ins_tci : 16;
1278 u64 vlan1_ins_ptr : 8;
1279 u64 vlan1_ins_tci : 16;
1280 u64 vlan0_ins_ena : 1;
1281 u64 vlan1_ins_ena : 1;
1282 u64 reserved_114_127 : 14;
1283 } s;
1284 /* struct nix_send_ext_s_s cn; */
1285};
1286
1287/**
1288 * Structure nix_send_hdr_s
1289 *
1290 * NIX Send Header Subdescriptor Structure The send header is the first
1291 * subdescriptor of every send descriptor.
1292 */
1293union nix_send_hdr_s {
1294 u64 u[2];
1295 struct nix_send_hdr_s_s {
1296 u64 total : 18;
1297 u64 reserved_18 : 1;
1298 u64 df : 1;
1299 u64 aura : 20;
1300 u64 sizem1 : 3;
1301 u64 pnc : 1;
1302 u64 sq : 20;
1303 u64 ol3ptr : 8;
1304 u64 ol4ptr : 8;
1305 u64 il3ptr : 8;
1306 u64 il4ptr : 8;
1307 u64 ol3type : 4;
1308 u64 ol4type : 4;
1309 u64 il3type : 4;
1310 u64 il4type : 4;
1311 u64 sqe_id : 16;
1312 } s;
1313 /* struct nix_send_hdr_s_s cn; */
1314};
1315
1316/**
1317 * Structure nix_send_imm_s
1318 *
1319 * NIX Send Immediate Subdescriptor Structure The send immediate
1320 * subdescriptor requests that bytes immediately following this
1321 * NIX_SEND_IMM_S (after skipping [APAD] bytes) are to be included in the
1322 * packet data. The next subdescriptor following this NIX_SEND_IMM_S
1323 * (when one exists) will follow the immediate bytes, after rounding up
1324 * the address to a multiple of 16 bytes. There may be multiple
1325 * NIX_SEND_IMM_S in one NIX send descriptor. A NIX_SEND_IMM_S is ignored
1326 * in a NIX send descriptor if the sum of all prior
1327 * NIX_SEND_SG_S[SEG*_SIZE]s and NIX_SEND_IMM_S[SIZE]s meets or exceeds
1328 * NIX_SEND_HDR_S[TOTAL]. When NIX_SEND_EXT_S[LSO] is set in the
1329 * descriptor, all NIX_SEND_IMM_S bytes must be included in the first
1330 * NIX_SEND_EXT_S[LSO_SB] bytes of the source packet.
1331 */
1332union nix_send_imm_s {
1333 u64 u;
1334 struct nix_send_imm_s_s {
1335 u64 size : 16;
1336 u64 apad : 3;
1337 u64 reserved_19_59 : 41;
1338 u64 subdc : 4;
1339 } s;
1340 /* struct nix_send_imm_s_s cn; */
1341};
1342
1343/**
1344 * Structure nix_send_jump_s
1345 *
1346 * NIX Send Jump Subdescriptor Structure The send jump subdescriptor
1347 * selects a new address for fetching the remaining subdescriptors of a
1348 * send descriptor. This allows software to create a send descriptor
1349 * longer than SQE size selected by NIX_SQ_CTX_S[MAX_SQE_SIZE]. There
1350 * can be only one NIX_SEND_JUMP_S subdescriptor in a send descriptor. If
1351 * present, it must immediately follow NIX_SEND_HDR_S if NIX_SEND_EXT_S
1352 * is not present, else it must immediately follow NIX_SEND_EXT_S. In
1353 * either case, it must terminate the SQE enqueued by software.
1354 */
1355union nix_send_jump_s {
1356 u64 u[2];
1357 struct nix_send_jump_s_s {
1358 u64 sizem1 : 7;
1359 u64 reserved_7_13 : 7;
1360 u64 ld_type : 2;
1361 u64 aura : 20;
1362 u64 reserved_36_58 : 23;
1363 u64 f : 1;
1364 u64 subdc : 4;
1365 u64 addr : 64;
1366 } s;
1367 /* struct nix_send_jump_s_s cn; */
1368};
1369
1370/**
1371 * Structure nix_send_mem_s
1372 *
1373 * NIX Send Memory Subdescriptor Structure The send memory subdescriptor
1374 * atomically sets, increments or decrements a memory location.
1375 * NIX_SEND_MEM_S subdescriptors must follow all NIX_SEND_SG_S and
1376 * NIX_SEND_IMM_S subdescriptors in the NIX send descriptor. NIX will not
1377 * initiate the memory update for this subdescriptor until after it has
1378 * completed all LLC/DRAM fetches that service all prior NIX_SEND_SG_S
1379 * subdescriptors. The memory update is executed once, even if the packet
1380 * is replicated due to NIX_TX_ACTION_S[OP] = NIX_TX_ACTIONOP_E::MCAST.
1381 * Performance is best if a memory decrement by one is used rather than
1382 * any other memory set/increment/decrement. (Less internal bus bandwidth
1383 * is used with memory decrements by one.) When NIX_SEND_EXT_S[LSO] is
1384 * set in the descriptor, NIX executes the memory update only while
1385 * processing the last LSO segment, after processing prior segments.
1386 */
1387union nix_send_mem_s {
1388 u64 u[2];
1389 struct nix_send_mem_s_s {
1390 u64 offset : 16;
1391 u64 reserved_16_52 : 37;
1392 u64 wmem : 1;
1393 u64 dsz : 2;
1394 u64 alg : 4;
1395 u64 subdc : 4;
1396 u64 addr : 64;
1397 } s;
1398 /* struct nix_send_mem_s_s cn; */
1399};
1400
1401/**
1402 * Structure nix_send_sg_s
1403 *
1404 * NIX Send Scatter/Gather Subdescriptor Structure The send
1405 * scatter/gather subdescriptor requests one to three segments of packet
1406 * data bytes to be transmitted. There may be multiple NIX_SEND_SG_Ss in
1407 * each NIX send descriptor. NIX_SEND_SG_S is immediately followed by
1408 * one NIX_IOVA_S word when [SEGS] = 1, three NIX_IOVA_S words when
1409 * [SEGS] \>= 2. Each NIX_IOVA_S word specifies the LF IOVA of first
1410 * packet data byte in the corresponding segment; first NIX_IOVA_S word
1411 * for segment 1, second word for segment 2, third word for segment 3.
1412 * Note the third word is present when [SEGS] \>= 2 but only valid when
1413 * [SEGS] = 3. If the sum of all prior NIX_SEND_SG_S[SEG*_SIZE]s and
1414 * NIX_SEND_IMM_S[SIZE]s meets or exceeds NIX_SEND_HDR_S[TOTAL], this
1415 * subdescriptor will not contribute any packet data but may free buffers
1416 * to NPA (see [I1]).
1417 */
1418union nix_send_sg_s {
1419 u64 u;
1420 struct nix_send_sg_s_s {
1421 u64 seg1_size : 16;
1422 u64 seg2_size : 16;
1423 u64 seg3_size : 16;
1424 u64 segs : 2;
1425 u64 reserved_50_54 : 5;
1426 u64 i1 : 1;
1427 u64 i2 : 1;
1428 u64 i3 : 1;
1429 u64 ld_type : 2;
1430 u64 subdc : 4;
1431 } s;
1432 /* struct nix_send_sg_s_s cn; */
1433};
1434
1435/**
1436 * Structure nix_send_work_s
1437 *
1438 * NIX Send Work Subdescriptor Structure This subdescriptor adds work to
1439 * the SSO. At most one NIX_SEND_WORK_S subdescriptor can exist in the
1440 * NIX send descriptor. If a NIX_SEND_WORK_S exists in the descriptor, it
1441 * must be the last subdescriptor. NIX will not initiate the work add for
1442 * this subdescriptor until after (1) it has completed all LLC/DRAM
1443 * fetches that service all prior NIX_SEND_SG_S subdescriptors, (2) it
1444 * has fetched all subdescriptors in the descriptor, and (3) all
1445 * NIX_SEND_MEM_S[WMEM]=1 LLC/DRAM updates have completed. Provided the
1446 * path of descriptors from the SQ through NIX to an output FIFO is
1447 * unmodified between the descriptors (as should normally be the case,
1448 * but it is possible for software to change the path), NIX also (1) will
1449 * submit the SSO add works from all descriptors in the SQ in order, and
1450 * (2) will not submit an SSO work add until after all prior descriptors
1451 * in the SQ have completed their NIX_SEND_SG_S processing, and (3) will
1452 * not submit an SSO work add until after it has fetched all
1453 * subdescriptors from prior descriptors in the SQ. When
1454 * NIX_SEND_EXT_S[LSO] is set in the descriptor, NIX executes the
1455 * NIX_SEND_WORK_S work add only while processing the last LSO segment,
1456 * after processing prior segments. Hardware ignores NIX_SEND_WORK_S
1457 * when NIX_SQ_CTX_S[SSO_ENA] is clear.
1458 */
1459union nix_send_work_s {
1460 u64 u[2];
1461 struct nix_send_work_s_s {
1462 u64 tag : 32;
1463 u64 tt : 2;
1464 u64 grp : 10;
1465 u64 reserved_44_59 : 16;
1466 u64 subdc : 4;
1467 u64 addr : 64;
1468 } s;
1469 /* struct nix_send_work_s_s cn; */
1470};
1471
1472/**
1473 * Structure nix_sq_ctx_hw_s
1474 *
1475 * NIX SQ Context Hardware Structure This structure contains context
1476 * state maintained by hardware for each SQ in NDC/LLC/DRAM. Software
1477 * uses the equivalent NIX_SQ_CTX_S structure format to read and write an
1478 * SQ context with the NIX admin queue. Always stored in byte invariant
1479 * little-endian format (LE8).
1480 */
1481union nix_sq_ctx_hw_s {
1482 u64 u[16];
1483 struct nix_sq_ctx_hw_s_s {
1484 u64 ena : 1;
1485 u64 substream : 20;
1486 u64 max_sqe_size : 2;
1487 u64 sqe_way_mask : 16;
1488 u64 sqb_aura : 20;
1489 u64 gbl_rsvd1 : 5;
1490 u64 cq_id : 20;
1491 u64 cq_ena : 1;
1492 u64 qint_idx : 6;
1493 u64 gbl_rsvd2 : 1;
1494 u64 sq_int : 8;
1495 u64 sq_int_ena : 8;
1496 u64 xoff : 1;
1497 u64 sqe_stype : 2;
1498 u64 gbl_rsvd : 17;
1499 u64 head_sqb : 64;
1500 u64 head_offset : 6;
1501 u64 sqb_dequeue_count : 16;
1502 u64 default_chan : 12;
1503 u64 sdp_mcast : 1;
1504 u64 sso_ena : 1;
1505 u64 dse_rsvd1 : 28;
1506 u64 sqb_enqueue_count : 16;
1507 u64 tail_offset : 6;
1508 u64 lmt_dis : 1;
1509 u64 smq_rr_quantum : 24;
1510 u64 dnq_rsvd1 : 17;
1511 u64 tail_sqb : 64;
1512 u64 next_sqb : 64;
1513 u64 mnq_dis : 1;
1514 u64 smq : 9;
1515 u64 smq_pend : 1;
1516 u64 smq_next_sq : 20;
1517 u64 smq_next_sq_vld : 1;
1518 u64 scm1_rsvd2 : 32;
1519 u64 smenq_sqb : 64;
1520 u64 smenq_offset : 6;
1521 u64 cq_limit : 8;
1522 u64 smq_rr_count : 25;
1523 u64 scm_lso_rem : 18;
1524 u64 scm_dq_rsvd0 : 7;
1525 u64 smq_lso_segnum : 8;
1526 u64 vfi_lso_total : 18;
1527 u64 vfi_lso_sizem1 : 3;
1528 u64 vfi_lso_sb : 8;
1529 u64 vfi_lso_mps : 14;
1530 u64 vfi_lso_vlan0_ins_ena : 1;
1531 u64 vfi_lso_vlan1_ins_ena : 1;
1532 u64 vfi_lso_vld : 1;
1533 u64 smenq_next_sqb_vld : 1;
1534 u64 scm_dq_rsvd1 : 9;
1535 u64 smenq_next_sqb : 64;
1536 u64 seb_rsvd1 : 64;
1537 u64 drop_pkts : 48;
1538 u64 drop_octs_lsw : 16;
1539 u64 drop_octs_msw : 32;
1540 u64 pkts_lsw : 32;
1541 u64 pkts_msw : 16;
1542 u64 octs : 48;
1543 } s;
1544 /* struct nix_sq_ctx_hw_s_s cn; */
1545};
1546
1547/**
1548 * Structure nix_sq_ctx_s
1549 *
1550 * NIX Send Queue Context Structure This structure specifies the format
1551 * used by software with the NIX admin queue to read and write a send
1552 * queue's NIX_SQ_CTX_HW_S structure maintained by hardware in
1553 * NDC/LLC/DRAM. The SQ statistics ([OCTS], [PKTS], [DROP_OCTS],
1554 * [DROP_PKTS]) do not account for packet replication due to
1555 * NIX_TX_ACTION_S[OP] = NIX_TX_ACTIONOP_E::MCAST.
1556 */
1557union nix_sq_ctx_s {
1558 u64 u[16];
1559 struct nix_sq_ctx_s_s {
1560 u64 ena : 1;
1561 u64 qint_idx : 6;
1562 u64 substream : 20;
1563 u64 sdp_mcast : 1;
1564 u64 cq : 20;
1565 u64 sqe_way_mask : 16;
1566 u64 smq : 9;
1567 u64 cq_ena : 1;
1568 u64 xoff : 1;
1569 u64 sso_ena : 1;
1570 u64 smq_rr_quantum : 24;
1571 u64 default_chan : 12;
1572 u64 sqb_count : 16;
1573 u64 smq_rr_count : 25;
1574 u64 sqb_aura : 20;
1575 u64 sq_int : 8;
1576 u64 sq_int_ena : 8;
1577 u64 sqe_stype : 2;
1578 u64 reserved_191 : 1;
1579 u64 max_sqe_size : 2;
1580 u64 cq_limit : 8;
1581 u64 lmt_dis : 1;
1582 u64 mnq_dis : 1;
1583 u64 smq_next_sq : 20;
1584 u64 smq_lso_segnum : 8;
1585 u64 tail_offset : 6;
1586 u64 smenq_offset : 6;
1587 u64 head_offset : 6;
1588 u64 smenq_next_sqb_vld : 1;
1589 u64 smq_pend : 1;
1590 u64 smq_next_sq_vld : 1;
1591 u64 reserved_253_255 : 3;
1592 u64 next_sqb : 64;
1593 u64 tail_sqb : 64;
1594 u64 smenq_sqb : 64;
1595 u64 smenq_next_sqb : 64;
1596 u64 head_sqb : 64;
1597 u64 reserved_576_583 : 8;
1598 u64 vfi_lso_total : 18;
1599 u64 vfi_lso_sizem1 : 3;
1600 u64 vfi_lso_sb : 8;
1601 u64 vfi_lso_mps : 14;
1602 u64 vfi_lso_vlan0_ins_ena : 1;
1603 u64 vfi_lso_vlan1_ins_ena : 1;
1604 u64 vfi_lso_vld : 1;
1605 u64 reserved_630_639 : 10;
1606 u64 scm_lso_rem : 18;
1607 u64 reserved_658_703 : 46;
1608 u64 octs : 48;
1609 u64 reserved_752_767 : 16;
1610 u64 pkts : 48;
1611 u64 reserved_816_831 : 16;
1612 u64 reserved_832_895 : 64;
1613 u64 drop_octs : 48;
1614 u64 reserved_944_959 : 16;
1615 u64 drop_pkts : 48;
1616 u64 reserved_1008_1023 : 16;
1617 } s;
1618 /* struct nix_sq_ctx_s_s cn; */
1619};
1620
1621/**
1622 * Structure nix_tx_action_s
1623 *
1624 * NIX Transmit Action Structure This structure defines the format of
1625 * NPC_RESULT_S[ACTION] for a transmit packet.
1626 */
1627union nix_tx_action_s {
1628 u64 u;
1629 struct nix_tx_action_s_s {
1630 u64 op : 4;
1631 u64 reserved_4_11 : 8;
1632 u64 index : 20;
1633 u64 match_id : 16;
1634 u64 reserved_48_63 : 16;
1635 } s;
1636 /* struct nix_tx_action_s_s cn; */
1637};
1638
1639/**
1640 * Structure nix_tx_vtag_action_s
1641 *
1642 * NIX Transmit Vtag Action Structure This structure defines the format
1643 * of NPC_RESULT_S[VTAG_ACTION] for a transmit packet. It specifies the
1644 * optional insertion or replacement of up to two Vtags (e.g.
1645 * C-VLAN/S-VLAN tags, 802.1BR E-TAG). If two Vtags are specified: * The
1646 * Vtag 0 byte offset from packet start (see [VTAG0_RELPTR]) must be less
1647 * than or equal to the Vtag 1 byte offset. * Hardware executes the Vtag
1648 * 0 action first, Vtag 1 action second. * If Vtag 0 is inserted,
1649 * hardware adjusts the Vtag 1 byte offset accordingly. Thus, if the two
1650 * offsets are equal in the structure, hardware inserts Vtag 1
1651 * immediately after Vtag 0 in the packet. A Vtag must not be inserted
1652 * or replaced within an outer or inner L3/L4 header, but may be inserted
1653 * or replaced within an outer L4 payload.
1654 */
1655union nix_tx_vtag_action_s {
1656 u64 u;
1657 struct nix_tx_vtag_action_s_s {
1658 u64 vtag0_relptr : 8;
1659 u64 vtag0_lid : 3;
1660 u64 reserved_11 : 1;
1661 u64 vtag0_op : 2;
1662 u64 reserved_14_15 : 2;
1663 u64 vtag0_def : 10;
1664 u64 reserved_26_31 : 6;
1665 u64 vtag1_relptr : 8;
1666 u64 vtag1_lid : 3;
1667 u64 reserved_43 : 1;
1668 u64 vtag1_op : 2;
1669 u64 reserved_46_47 : 2;
1670 u64 vtag1_def : 10;
1671 u64 reserved_58_63 : 6;
1672 } s;
1673 /* struct nix_tx_vtag_action_s_s cn; */
1674};
1675
1676/**
1677 * Structure nix_wqe_hdr_s
1678 *
1679 * NIX Work Queue Entry Header Structure This 64-bit structure defines
1680 * the first word of every receive WQE generated by NIX. It is
1681 * immediately followed by NIX_RX_PARSE_S. Stored in memory as little-
1682 * endian unless NIX_AF_LF()_CFG[BE] is set.
1683 */
1684union nix_wqe_hdr_s {
1685 u64 u;
1686 struct nix_wqe_hdr_s_s {
1687 u64 tag : 32;
1688 u64 tt : 2;
1689 u64 grp : 10;
1690 u64 node : 2;
1691 u64 q : 14;
1692 u64 wqe_type : 4;
1693 } s;
1694 /* struct nix_wqe_hdr_s_s cn; */
1695};
1696
1697/**
1698 * Register (RVU_PF_BAR0) nix#_af_aq_base
1699 *
1700 * NIX AF Admin Queue Base Address Register
1701 */
1702union nixx_af_aq_base {
1703 u64 u;
1704 struct nixx_af_aq_base_s {
1705 u64 reserved_0_6 : 7;
1706 u64 base_addr : 46;
1707 u64 reserved_53_63 : 11;
1708 } s;
1709 /* struct nixx_af_aq_base_s cn; */
1710};
1711
1712static inline u64 NIXX_AF_AQ_BASE(void)
1713 __attribute__ ((pure, always_inline));
1714static inline u64 NIXX_AF_AQ_BASE(void)
1715{
1716 return 0x410;
1717}
1718
1719/**
1720 * Register (RVU_PF_BAR0) nix#_af_aq_cfg
1721 *
1722 * NIX AF Admin Queue Configuration Register
1723 */
1724union nixx_af_aq_cfg {
1725 u64 u;
1726 struct nixx_af_aq_cfg_s {
1727 u64 qsize : 4;
1728 u64 reserved_4_63 : 60;
1729 } s;
1730 /* struct nixx_af_aq_cfg_s cn; */
1731};
1732
1733static inline u64 NIXX_AF_AQ_CFG(void)
1734 __attribute__ ((pure, always_inline));
1735static inline u64 NIXX_AF_AQ_CFG(void)
1736{
1737 return 0x400;
1738}
1739
1740/**
1741 * Register (RVU_PF_BAR0) nix#_af_aq_done
1742 *
1743 * NIX AF Admin Queue Done Count Register
1744 */
1745union nixx_af_aq_done {
1746 u64 u;
1747 struct nixx_af_aq_done_s {
1748 u64 done : 20;
1749 u64 reserved_20_63 : 44;
1750 } s;
1751 /* struct nixx_af_aq_done_s cn; */
1752};
1753
1754static inline u64 NIXX_AF_AQ_DONE(void)
1755 __attribute__ ((pure, always_inline));
1756static inline u64 NIXX_AF_AQ_DONE(void)
1757{
1758 return 0x450;
1759}
1760
1761/**
1762 * Register (RVU_PF_BAR0) nix#_af_aq_done_ack
1763 *
1764 * NIX AF Admin Queue Done Count Ack Register This register is written by
1765 * software to acknowledge interrupts.
1766 */
1767union nixx_af_aq_done_ack {
1768 u64 u;
1769 struct nixx_af_aq_done_ack_s {
1770 u64 done_ack : 20;
1771 u64 reserved_20_63 : 44;
1772 } s;
1773 /* struct nixx_af_aq_done_ack_s cn; */
1774};
1775
1776static inline u64 NIXX_AF_AQ_DONE_ACK(void)
1777 __attribute__ ((pure, always_inline));
1778static inline u64 NIXX_AF_AQ_DONE_ACK(void)
1779{
1780 return 0x460;
1781}
1782
1783/**
1784 * Register (RVU_PF_BAR0) nix#_af_aq_done_ena_w1c
1785 *
1786 * NIX AF Admin Queue Done Interrupt Enable Clear Register
1787 */
1788union nixx_af_aq_done_ena_w1c {
1789 u64 u;
1790 struct nixx_af_aq_done_ena_w1c_s {
1791 u64 done : 1;
1792 u64 reserved_1_63 : 63;
1793 } s;
1794 /* struct nixx_af_aq_done_ena_w1c_s cn; */
1795};
1796
1797static inline u64 NIXX_AF_AQ_DONE_ENA_W1C(void)
1798 __attribute__ ((pure, always_inline));
1799static inline u64 NIXX_AF_AQ_DONE_ENA_W1C(void)
1800{
1801 return 0x498;
1802}
1803
1804/**
1805 * Register (RVU_PF_BAR0) nix#_af_aq_done_ena_w1s
1806 *
1807 * NIX AF Admin Queue Done Interrupt Enable Set Register
1808 */
1809union nixx_af_aq_done_ena_w1s {
1810 u64 u;
1811 struct nixx_af_aq_done_ena_w1s_s {
1812 u64 done : 1;
1813 u64 reserved_1_63 : 63;
1814 } s;
1815 /* struct nixx_af_aq_done_ena_w1s_s cn; */
1816};
1817
1818static inline u64 NIXX_AF_AQ_DONE_ENA_W1S(void)
1819 __attribute__ ((pure, always_inline));
1820static inline u64 NIXX_AF_AQ_DONE_ENA_W1S(void)
1821{
1822 return 0x490;
1823}
1824
1825/**
1826 * Register (RVU_PF_BAR0) nix#_af_aq_done_int
1827 *
1828 * INTERNAL: NIX AF Admin Queue Done Interrupt Register
1829 */
1830union nixx_af_aq_done_int {
1831 u64 u;
1832 struct nixx_af_aq_done_int_s {
1833 u64 done : 1;
1834 u64 reserved_1_63 : 63;
1835 } s;
1836 /* struct nixx_af_aq_done_int_s cn; */
1837};
1838
1839static inline u64 NIXX_AF_AQ_DONE_INT(void)
1840 __attribute__ ((pure, always_inline));
1841static inline u64 NIXX_AF_AQ_DONE_INT(void)
1842{
1843 return 0x480;
1844}
1845
1846/**
1847 * Register (RVU_PF_BAR0) nix#_af_aq_done_int_w1s
1848 *
1849 * INTERNAL: NIX AF Admin Queue Done Interrupt Set Register
1850 */
1851union nixx_af_aq_done_int_w1s {
1852 u64 u;
1853 struct nixx_af_aq_done_int_w1s_s {
1854 u64 done : 1;
1855 u64 reserved_1_63 : 63;
1856 } s;
1857 /* struct nixx_af_aq_done_int_w1s_s cn; */
1858};
1859
1860static inline u64 NIXX_AF_AQ_DONE_INT_W1S(void)
1861 __attribute__ ((pure, always_inline));
1862static inline u64 NIXX_AF_AQ_DONE_INT_W1S(void)
1863{
1864 return 0x488;
1865}
1866
1867/**
1868 * Register (RVU_PF_BAR0) nix#_af_aq_done_timer
1869 *
1870 * NIX AF Admin Queue Done Interrupt Timer Register
1871 */
1872union nixx_af_aq_done_timer {
1873 u64 u;
1874 struct nixx_af_aq_done_timer_s {
1875 u64 count : 16;
1876 u64 reserved_16_63 : 48;
1877 } s;
1878 /* struct nixx_af_aq_done_timer_s cn; */
1879};
1880
1881static inline u64 NIXX_AF_AQ_DONE_TIMER(void)
1882 __attribute__ ((pure, always_inline));
1883static inline u64 NIXX_AF_AQ_DONE_TIMER(void)
1884{
1885 return 0x470;
1886}
1887
1888/**
1889 * Register (RVU_PF_BAR0) nix#_af_aq_done_wait
1890 *
1891 * NIX AF Admin Queue Done Interrupt Coalescing Wait Register Specifies
1892 * the queue interrupt coalescing settings.
1893 */
1894union nixx_af_aq_done_wait {
1895 u64 u;
1896 struct nixx_af_aq_done_wait_s {
1897 u64 num_wait : 20;
1898 u64 reserved_20_31 : 12;
1899 u64 time_wait : 16;
1900 u64 reserved_48_63 : 16;
1901 } s;
1902 /* struct nixx_af_aq_done_wait_s cn; */
1903};
1904
1905static inline u64 NIXX_AF_AQ_DONE_WAIT(void)
1906 __attribute__ ((pure, always_inline));
1907static inline u64 NIXX_AF_AQ_DONE_WAIT(void)
1908{
1909 return 0x440;
1910}
1911
1912/**
1913 * Register (RVU_PF_BAR0) nix#_af_aq_door
1914 *
1915 * NIX AF Admin Queue Doorbell Register Software writes to this register
1916 * to enqueue entries to AQ.
1917 */
1918union nixx_af_aq_door {
1919 u64 u;
1920 struct nixx_af_aq_door_s {
1921 u64 count : 16;
1922 u64 reserved_16_63 : 48;
1923 } s;
1924 /* struct nixx_af_aq_door_s cn; */
1925};
1926
1927static inline u64 NIXX_AF_AQ_DOOR(void)
1928 __attribute__ ((pure, always_inline));
1929static inline u64 NIXX_AF_AQ_DOOR(void)
1930{
1931 return 0x430;
1932}
1933
1934/**
1935 * Register (RVU_PF_BAR0) nix#_af_aq_status
1936 *
1937 * NIX AF Admin Queue Status Register
1938 */
1939union nixx_af_aq_status {
1940 u64 u;
1941 struct nixx_af_aq_status_s {
1942 u64 reserved_0_3 : 4;
1943 u64 head_ptr : 20;
1944 u64 reserved_24_35 : 12;
1945 u64 tail_ptr : 20;
1946 u64 reserved_56_61 : 6;
1947 u64 aq_busy : 1;
1948 u64 aq_err : 1;
1949 } s;
1950 struct nixx_af_aq_status_cn {
1951 u64 reserved_0_3 : 4;
1952 u64 head_ptr : 20;
1953 u64 reserved_24_31 : 8;
1954 u64 reserved_32_35 : 4;
1955 u64 tail_ptr : 20;
1956 u64 reserved_56_61 : 6;
1957 u64 aq_busy : 1;
1958 u64 aq_err : 1;
1959 } cn;
1960};
1961
1962static inline u64 NIXX_AF_AQ_STATUS(void)
1963 __attribute__ ((pure, always_inline));
1964static inline u64 NIXX_AF_AQ_STATUS(void)
1965{
1966 return 0x420;
1967}
1968
1969/**
1970 * Register (RVU_PF_BAR0) nix#_af_avg_delay
1971 *
1972 * NIX AF Queue Average Delay Register
1973 */
1974union nixx_af_avg_delay {
1975 u64 u;
1976 struct nixx_af_avg_delay_s {
1977 u64 avg_dly : 19;
1978 u64 reserved_19_23 : 5;
1979 u64 avg_timer : 16;
1980 u64 reserved_40_63 : 24;
1981 } s;
1982 /* struct nixx_af_avg_delay_s cn; */
1983};
1984
1985static inline u64 NIXX_AF_AVG_DELAY(void)
1986 __attribute__ ((pure, always_inline));
1987static inline u64 NIXX_AF_AVG_DELAY(void)
1988{
1989 return 0xe0;
1990}
1991
1992/**
1993 * Register (RVU_PF_BAR0) nix#_af_bar2_alias#
1994 *
1995 * NIX Admin Function BAR2 Alias Registers These registers alias to the
1996 * NIX BAR2 registers for the PF and function selected by
1997 * NIX_AF_BAR2_SEL[PF_FUNC]. Internal: Not implemented. Placeholder for
1998 * bug33464.
1999 */
2000union nixx_af_bar2_aliasx {
2001 u64 u;
2002 struct nixx_af_bar2_aliasx_s {
2003 u64 data : 64;
2004 } s;
2005 /* struct nixx_af_bar2_aliasx_s cn; */
2006};
2007
2008static inline u64 NIXX_AF_BAR2_ALIASX(u64 a)
2009 __attribute__ ((pure, always_inline));
2010static inline u64 NIXX_AF_BAR2_ALIASX(u64 a)
2011{
2012 return 0x9100000 + 8 * a;
2013}
2014
2015/**
2016 * Register (RVU_PF_BAR0) nix#_af_bar2_sel
2017 *
2018 * NIX Admin Function BAR2 Select Register This register configures BAR2
2019 * accesses from the NIX_AF_BAR2_ALIAS() registers in BAR0. Internal: Not
2020 * implemented. Placeholder for bug33464.
2021 */
2022union nixx_af_bar2_sel {
2023 u64 u;
2024 struct nixx_af_bar2_sel_s {
2025 u64 alias_pf_func : 16;
2026 u64 alias_ena : 1;
2027 u64 reserved_17_63 : 47;
2028 } s;
2029 /* struct nixx_af_bar2_sel_s cn; */
2030};
2031
2032static inline u64 NIXX_AF_BAR2_SEL(void)
2033 __attribute__ ((pure, always_inline));
2034static inline u64 NIXX_AF_BAR2_SEL(void)
2035{
2036 return 0x9000000;
2037}
2038
2039/**
2040 * Register (RVU_PF_BAR0) nix#_af_blk_rst
2041 *
2042 * NIX AF Block Reset Register
2043 */
2044union nixx_af_blk_rst {
2045 u64 u;
2046 struct nixx_af_blk_rst_s {
2047 u64 rst : 1;
2048 u64 reserved_1_62 : 62;
2049 u64 busy : 1;
2050 } s;
2051 /* struct nixx_af_blk_rst_s cn; */
2052};
2053
2054static inline u64 NIXX_AF_BLK_RST(void)
2055 __attribute__ ((pure, always_inline));
2056static inline u64 NIXX_AF_BLK_RST(void)
2057{
2058 return 0xb0;
2059}
2060
2061/**
2062 * Register (RVU_PF_BAR0) nix#_af_cfg
2063 *
2064 * NIX AF General Configuration Register
2065 */
2066union nixx_af_cfg {
2067 u64 u;
2068 struct nixx_af_cfg_s {
2069 u64 force_cond_clk_en : 1;
2070 u64 force_rx_gbl_clk_en : 1;
2071 u64 force_rx_strm_clk_en : 1;
2072 u64 force_cqm_clk_en : 1;
2073 u64 force_seb_clk_en : 1;
2074 u64 force_sqm_clk_en : 1;
2075 u64 force_pse_clk_en : 1;
2076 u64 reserved_7 : 1;
2077 u64 af_be : 1;
2078 u64 calibrate_x2p : 1;
2079 u64 force_intf_clk_en : 1;
2080 u64 reserved_11_63 : 53;
2081 } s;
2082 /* struct nixx_af_cfg_s cn; */
2083};
2084
2085static inline u64 NIXX_AF_CFG(void)
2086 __attribute__ ((pure, always_inline));
2087static inline u64 NIXX_AF_CFG(void)
2088{
2089 return 0;
2090}
2091
2092/**
2093 * Register (RVU_PF_BAR0) nix#_af_cint_delay
2094 *
2095 * NIX AF Completion Interrupt Delay Register
2096 */
2097union nixx_af_cint_delay {
2098 u64 u;
2099 struct nixx_af_cint_delay_s {
2100 u64 cint_dly : 10;
2101 u64 reserved_10_15 : 6;
2102 u64 cint_timer : 16;
2103 u64 reserved_32_63 : 32;
2104 } s;
2105 /* struct nixx_af_cint_delay_s cn; */
2106};
2107
2108static inline u64 NIXX_AF_CINT_DELAY(void)
2109 __attribute__ ((pure, always_inline));
2110static inline u64 NIXX_AF_CINT_DELAY(void)
2111{
2112 return 0xf0;
2113}
2114
2115/**
2116 * Register (RVU_PF_BAR0) nix#_af_cint_timer#
2117 *
2118 * NIX AF Completion Interrupt Timer Registers
2119 */
2120union nixx_af_cint_timerx {
2121 u64 u;
2122 struct nixx_af_cint_timerx_s {
2123 u64 expir_time : 16;
2124 u64 cint : 7;
2125 u64 reserved_23 : 1;
2126 u64 lf : 8;
2127 u64 active : 1;
2128 u64 reserved_33_63 : 31;
2129 } s;
2130 /* struct nixx_af_cint_timerx_s cn; */
2131};
2132
2133static inline u64 NIXX_AF_CINT_TIMERX(u64 a)
2134 __attribute__ ((pure, always_inline));
2135static inline u64 NIXX_AF_CINT_TIMERX(u64 a)
2136{
2137 return 0x1a40 + 0x40000 * a;
2138}
2139
2140/**
2141 * Register (RVU_PF_BAR0) nix#_af_const
2142 *
2143 * NIX AF Constants Register This register contains constants for
2144 * software discovery.
2145 */
2146union nixx_af_const {
2147 u64 u;
2148 struct nixx_af_const_s {
2149 u64 cgx_lmac_channels : 8;
2150 u64 cgx_lmacs : 4;
2151 u64 num_cgx : 4;
2152 u64 lbk_channels : 8;
2153 u64 num_lbk : 4;
2154 u64 num_sdp : 4;
2155 u64 reserved_32_47 : 16;
2156 u64 links : 8;
2157 u64 intfs : 4;
2158 u64 reserved_60_63 : 4;
2159 } s;
2160 /* struct nixx_af_const_s cn; */
2161};
2162
2163static inline u64 NIXX_AF_CONST(void)
2164 __attribute__ ((pure, always_inline));
2165static inline u64 NIXX_AF_CONST(void)
2166{
2167 return 0x20;
2168}
2169
2170/**
2171 * Register (RVU_PF_BAR0) nix#_af_const1
2172 *
2173 * NIX AF Constants 1 Register This register contains constants for
2174 * software discovery.
2175 */
2176union nixx_af_const1 {
2177 u64 u;
2178 struct nixx_af_const1_s {
2179 u64 sdp_channels : 12;
2180 u64 rx_bpids : 12;
2181 u64 lf_tx_stats : 8;
2182 u64 lf_rx_stats : 8;
2183 u64 lso_format_fields : 8;
2184 u64 lso_formats : 8;
2185 u64 reserved_56_63 : 8;
2186 } s;
2187 /* struct nixx_af_const1_s cn; */
2188};
2189
2190static inline u64 NIXX_AF_CONST1(void)
2191 __attribute__ ((pure, always_inline));
2192static inline u64 NIXX_AF_CONST1(void)
2193{
2194 return 0x28;
2195}
2196
2197/**
2198 * Register (RVU_PF_BAR0) nix#_af_const2
2199 *
2200 * NIX AF Constants 2 Register This register contains constants for
2201 * software discovery.
2202 */
2203union nixx_af_const2 {
2204 u64 u;
2205 struct nixx_af_const2_s {
2206 u64 lfs : 12;
2207 u64 qints : 12;
2208 u64 cints : 12;
2209 u64 reserved_36_63 : 28;
2210 } s;
2211 /* struct nixx_af_const2_s cn; */
2212};
2213
2214static inline u64 NIXX_AF_CONST2(void)
2215 __attribute__ ((pure, always_inline));
2216static inline u64 NIXX_AF_CONST2(void)
2217{
2218 return 0x30;
2219}
2220
2221/**
2222 * Register (RVU_PF_BAR0) nix#_af_const3
2223 *
2224 * NIX AF Constants 2 Register This register contains constants for
2225 * software discovery.
2226 */
2227union nixx_af_const3 {
2228 u64 u;
2229 struct nixx_af_const3_s {
2230 u64 sq_ctx_log2bytes : 4;
2231 u64 rq_ctx_log2bytes : 4;
2232 u64 cq_ctx_log2bytes : 4;
2233 u64 rsse_log2bytes : 4;
2234 u64 mce_log2bytes : 4;
2235 u64 qint_log2bytes : 4;
2236 u64 cint_log2bytes : 4;
2237 u64 dyno_log2bytes : 4;
2238 u64 reserved_32_63 : 32;
2239 } s;
2240 /* struct nixx_af_const3_s cn; */
2241};
2242
2243static inline u64 NIXX_AF_CONST3(void)
2244 __attribute__ ((pure, always_inline));
2245static inline u64 NIXX_AF_CONST3(void)
2246{
2247 return 0x38;
2248}
2249
2250/**
2251 * Register (RVU_PF_BAR0) nix#_af_cq_const
2252 *
2253 * NIX AF CQ Constants Register This register contains constants for
2254 * software discovery.
2255 */
2256union nixx_af_cq_const {
2257 u64 u;
2258 struct nixx_af_cq_const_s {
2259 u64 queues_per_lf : 24;
2260 u64 reserved_24_63 : 40;
2261 } s;
2262 /* struct nixx_af_cq_const_s cn; */
2263};
2264
2265static inline u64 NIXX_AF_CQ_CONST(void)
2266 __attribute__ ((pure, always_inline));
2267static inline u64 NIXX_AF_CQ_CONST(void)
2268{
2269 return 0x48;
2270}
2271
2272/**
2273 * Register (RVU_PF_BAR0) nix#_af_cqm_bp_test
2274 *
2275 * INTERNAL: NIX AF CQM Backpressure Test Registers
2276 */
2277union nixx_af_cqm_bp_test {
2278 u64 u;
2279 struct nixx_af_cqm_bp_test_s {
2280 u64 lfsr_freq : 12;
2281 u64 reserved_12_15 : 4;
2282 u64 bp_cfg : 24;
2283 u64 enable : 12;
2284 u64 reserved_52_63 : 12;
2285 } s;
2286 /* struct nixx_af_cqm_bp_test_s cn; */
2287};
2288
2289static inline u64 NIXX_AF_CQM_BP_TEST(void)
2290 __attribute__ ((pure, always_inline));
2291static inline u64 NIXX_AF_CQM_BP_TEST(void)
2292{
2293 return 0x48c0;
2294}
2295
2296/**
2297 * Register (RVU_PF_BAR0) nix#_af_cqm_eco
2298 *
2299 * INTERNAL: AF CQM ECO Register
2300 */
2301union nixx_af_cqm_eco {
2302 u64 u;
2303 struct nixx_af_cqm_eco_s {
2304 u64 eco_rw : 64;
2305 } s;
2306 /* struct nixx_af_cqm_eco_s cn; */
2307};
2308
2309static inline u64 NIXX_AF_CQM_ECO(void)
2310 __attribute__ ((pure, always_inline));
2311static inline u64 NIXX_AF_CQM_ECO(void)
2312{
2313 return 0x590;
2314}
2315
2316/**
2317 * Register (RVU_PF_BAR0) nix#_af_csi_eco
2318 *
2319 * INTERNAL: AF CSI ECO Register
2320 */
2321union nixx_af_csi_eco {
2322 u64 u;
2323 struct nixx_af_csi_eco_s {
2324 u64 eco_rw : 64;
2325 } s;
2326 /* struct nixx_af_csi_eco_s cn; */
2327};
2328
2329static inline u64 NIXX_AF_CSI_ECO(void)
2330 __attribute__ ((pure, always_inline));
2331static inline u64 NIXX_AF_CSI_ECO(void)
2332{
2333 return 0x580;
2334}
2335
2336/**
2337 * Register (RVU_PF_BAR0) nix#_af_err_int
2338 *
2339 * NIX Admin Function Error Interrupt Register
2340 */
2341union nixx_af_err_int {
2342 u64 u;
2343 struct nixx_af_err_int_s {
2344 u64 rx_mcast_data_fault : 1;
2345 u64 rx_mirror_data_fault : 1;
2346 u64 rx_mcast_wqe_fault : 1;
2347 u64 rx_mirror_wqe_fault : 1;
2348 u64 rx_mce_fault : 1;
2349 u64 rx_mce_list_err : 1;
2350 u64 rx_unmapped_pf_func : 1;
2351 u64 reserved_7_11 : 5;
2352 u64 aq_door_err : 1;
2353 u64 aq_res_fault : 1;
2354 u64 aq_inst_fault : 1;
2355 u64 reserved_15_63 : 49;
2356 } s;
2357 /* struct nixx_af_err_int_s cn; */
2358};
2359
2360static inline u64 NIXX_AF_ERR_INT(void)
2361 __attribute__ ((pure, always_inline));
2362static inline u64 NIXX_AF_ERR_INT(void)
2363{
2364 return 0x180;
2365}
2366
2367/**
2368 * Register (RVU_PF_BAR0) nix#_af_err_int_ena_w1c
2369 *
2370 * NIX Admin Function Error Interrupt Enable Clear Register This register
2371 * clears interrupt enable bits.
2372 */
2373union nixx_af_err_int_ena_w1c {
2374 u64 u;
2375 struct nixx_af_err_int_ena_w1c_s {
2376 u64 rx_mcast_data_fault : 1;
2377 u64 rx_mirror_data_fault : 1;
2378 u64 rx_mcast_wqe_fault : 1;
2379 u64 rx_mirror_wqe_fault : 1;
2380 u64 rx_mce_fault : 1;
2381 u64 rx_mce_list_err : 1;
2382 u64 rx_unmapped_pf_func : 1;
2383 u64 reserved_7_11 : 5;
2384 u64 aq_door_err : 1;
2385 u64 aq_res_fault : 1;
2386 u64 aq_inst_fault : 1;
2387 u64 reserved_15_63 : 49;
2388 } s;
2389 /* struct nixx_af_err_int_ena_w1c_s cn; */
2390};
2391
2392static inline u64 NIXX_AF_ERR_INT_ENA_W1C(void)
2393 __attribute__ ((pure, always_inline));
2394static inline u64 NIXX_AF_ERR_INT_ENA_W1C(void)
2395{
2396 return 0x198;
2397}
2398
2399/**
2400 * Register (RVU_PF_BAR0) nix#_af_err_int_ena_w1s
2401 *
2402 * NIX Admin Function Error Interrupt Enable Set Register This register
2403 * sets interrupt enable bits.
2404 */
2405union nixx_af_err_int_ena_w1s {
2406 u64 u;
2407 struct nixx_af_err_int_ena_w1s_s {
2408 u64 rx_mcast_data_fault : 1;
2409 u64 rx_mirror_data_fault : 1;
2410 u64 rx_mcast_wqe_fault : 1;
2411 u64 rx_mirror_wqe_fault : 1;
2412 u64 rx_mce_fault : 1;
2413 u64 rx_mce_list_err : 1;
2414 u64 rx_unmapped_pf_func : 1;
2415 u64 reserved_7_11 : 5;
2416 u64 aq_door_err : 1;
2417 u64 aq_res_fault : 1;
2418 u64 aq_inst_fault : 1;
2419 u64 reserved_15_63 : 49;
2420 } s;
2421 /* struct nixx_af_err_int_ena_w1s_s cn; */
2422};
2423
2424static inline u64 NIXX_AF_ERR_INT_ENA_W1S(void)
2425 __attribute__ ((pure, always_inline));
2426static inline u64 NIXX_AF_ERR_INT_ENA_W1S(void)
2427{
2428 return 0x190;
2429}
2430
2431/**
2432 * Register (RVU_PF_BAR0) nix#_af_err_int_w1s
2433 *
2434 * NIX Admin Function Error Interrupt Set Register This register sets
2435 * interrupt bits.
2436 */
2437union nixx_af_err_int_w1s {
2438 u64 u;
2439 struct nixx_af_err_int_w1s_s {
2440 u64 rx_mcast_data_fault : 1;
2441 u64 rx_mirror_data_fault : 1;
2442 u64 rx_mcast_wqe_fault : 1;
2443 u64 rx_mirror_wqe_fault : 1;
2444 u64 rx_mce_fault : 1;
2445 u64 rx_mce_list_err : 1;
2446 u64 rx_unmapped_pf_func : 1;
2447 u64 reserved_7_11 : 5;
2448 u64 aq_door_err : 1;
2449 u64 aq_res_fault : 1;
2450 u64 aq_inst_fault : 1;
2451 u64 reserved_15_63 : 49;
2452 } s;
2453 /* struct nixx_af_err_int_w1s_s cn; */
2454};
2455
2456static inline u64 NIXX_AF_ERR_INT_W1S(void)
2457 __attribute__ ((pure, always_inline));
2458static inline u64 NIXX_AF_ERR_INT_W1S(void)
2459{
2460 return 0x188;
2461}
2462
2463/**
2464 * Register (RVU_PF_BAR0) nix#_af_expr_tx_fifo_status
2465 *
2466 * INTERNAL: NIX AF Express Transmit FIFO Status Register Internal:
2467 * 802.3br frame preemption/express path is defeatured. Old definition:
2468 * Status of FIFO which transmits express packets to CGX and LBK.
2469 */
2470union nixx_af_expr_tx_fifo_status {
2471 u64 u;
2472 struct nixx_af_expr_tx_fifo_status_s {
2473 u64 count : 12;
2474 u64 reserved_12_63 : 52;
2475 } s;
2476 /* struct nixx_af_expr_tx_fifo_status_s cn; */
2477};
2478
2479static inline u64 NIXX_AF_EXPR_TX_FIFO_STATUS(void)
2480 __attribute__ ((pure, always_inline));
2481static inline u64 NIXX_AF_EXPR_TX_FIFO_STATUS(void)
2482{
2483 return 0x640;
2484}
2485
2486/**
2487 * Register (RVU_PF_BAR0) nix#_af_gen_int
2488 *
2489 * NIX AF General Interrupt Register
2490 */
2491union nixx_af_gen_int {
2492 u64 u;
2493 struct nixx_af_gen_int_s {
2494 u64 rx_mcast_drop : 1;
2495 u64 rx_mirror_drop : 1;
2496 u64 reserved_2 : 1;
2497 u64 tl1_drain : 1;
2498 u64 smq_flush_done : 1;
2499 u64 reserved_5_63 : 59;
2500 } s;
2501 /* struct nixx_af_gen_int_s cn; */
2502};
2503
2504static inline u64 NIXX_AF_GEN_INT(void)
2505 __attribute__ ((pure, always_inline));
2506static inline u64 NIXX_AF_GEN_INT(void)
2507{
2508 return 0x160;
2509}
2510
2511/**
2512 * Register (RVU_PF_BAR0) nix#_af_gen_int_ena_w1c
2513 *
2514 * NIX AF General Interrupt Enable Clear Register This register clears
2515 * interrupt enable bits.
2516 */
2517union nixx_af_gen_int_ena_w1c {
2518 u64 u;
2519 struct nixx_af_gen_int_ena_w1c_s {
2520 u64 rx_mcast_drop : 1;
2521 u64 rx_mirror_drop : 1;
2522 u64 reserved_2 : 1;
2523 u64 tl1_drain : 1;
2524 u64 smq_flush_done : 1;
2525 u64 reserved_5_63 : 59;
2526 } s;
2527 /* struct nixx_af_gen_int_ena_w1c_s cn; */
2528};
2529
2530static inline u64 NIXX_AF_GEN_INT_ENA_W1C(void)
2531 __attribute__ ((pure, always_inline));
2532static inline u64 NIXX_AF_GEN_INT_ENA_W1C(void)
2533{
2534 return 0x178;
2535}
2536
2537/**
2538 * Register (RVU_PF_BAR0) nix#_af_gen_int_ena_w1s
2539 *
2540 * NIX AF General Interrupt Enable Set Register This register sets
2541 * interrupt enable bits.
2542 */
2543union nixx_af_gen_int_ena_w1s {
2544 u64 u;
2545 struct nixx_af_gen_int_ena_w1s_s {
2546 u64 rx_mcast_drop : 1;
2547 u64 rx_mirror_drop : 1;
2548 u64 reserved_2 : 1;
2549 u64 tl1_drain : 1;
2550 u64 smq_flush_done : 1;
2551 u64 reserved_5_63 : 59;
2552 } s;
2553 /* struct nixx_af_gen_int_ena_w1s_s cn; */
2554};
2555
2556static inline u64 NIXX_AF_GEN_INT_ENA_W1S(void)
2557 __attribute__ ((pure, always_inline));
2558static inline u64 NIXX_AF_GEN_INT_ENA_W1S(void)
2559{
2560 return 0x170;
2561}
2562
2563/**
2564 * Register (RVU_PF_BAR0) nix#_af_gen_int_w1s
2565 *
2566 * NIX AF General Interrupt Set Register This register sets interrupt
2567 * bits.
2568 */
2569union nixx_af_gen_int_w1s {
2570 u64 u;
2571 struct nixx_af_gen_int_w1s_s {
2572 u64 rx_mcast_drop : 1;
2573 u64 rx_mirror_drop : 1;
2574 u64 reserved_2 : 1;
2575 u64 tl1_drain : 1;
2576 u64 smq_flush_done : 1;
2577 u64 reserved_5_63 : 59;
2578 } s;
2579 /* struct nixx_af_gen_int_w1s_s cn; */
2580};
2581
2582static inline u64 NIXX_AF_GEN_INT_W1S(void)
2583 __attribute__ ((pure, always_inline));
2584static inline u64 NIXX_AF_GEN_INT_W1S(void)
2585{
2586 return 0x168;
2587}
2588
2589/**
2590 * Register (RVU_PF_BAR0) nix#_af_lf#_cfg
2591 *
2592 * NIX AF Local Function Configuration Registers
2593 */
2594union nixx_af_lfx_cfg {
2595 u64 u;
2596 struct nixx_af_lfx_cfg_s {
2597 u64 npa_pf_func : 16;
2598 u64 sso_pf_func : 16;
2599 u64 be : 1;
2600 u64 xqe_size : 2;
2601 u64 reserved_35_63 : 29;
2602 } s;
2603 /* struct nixx_af_lfx_cfg_s cn; */
2604};
2605
2606static inline u64 NIXX_AF_LFX_CFG(u64 a)
2607 __attribute__ ((pure, always_inline));
2608static inline u64 NIXX_AF_LFX_CFG(u64 a)
2609{
2610 return 0x4000 + 0x20000 * a;
2611}
2612
2613/**
2614 * Register (RVU_PF_BAR0) nix#_af_lf#_cints_base
2615 *
2616 * NIX AF Local Function Completion Interrupts Base Address Registers
2617 * This register specifies the base AF IOVA of LF's completion interrupt
2618 * context table in NDC/LLC/DRAM. The table consists of
2619 * NIX_AF_CONST2[CINTS] contiguous NIX_CINT_HW_S structures. After
2620 * writing to this register, software should read it back to ensure that
2621 * the write has completed before accessing any NIX_LF_CINT()_*
2622 * registers.
2623 */
2624union nixx_af_lfx_cints_base {
2625 u64 u;
2626 struct nixx_af_lfx_cints_base_s {
2627 u64 reserved_0_6 : 7;
2628 u64 addr : 46;
2629 u64 reserved_53_63 : 11;
2630 } s;
2631 /* struct nixx_af_lfx_cints_base_s cn; */
2632};
2633
2634static inline u64 NIXX_AF_LFX_CINTS_BASE(u64 a)
2635 __attribute__ ((pure, always_inline));
2636static inline u64 NIXX_AF_LFX_CINTS_BASE(u64 a)
2637{
2638 return 0x4130 + 0x20000 * a;
2639}
2640
2641/**
2642 * Register (RVU_PF_BAR0) nix#_af_lf#_cints_cfg
2643 *
2644 * NIX AF Local Function Completion Interrupts Configuration Registers
2645 * This register controls access to the LF's completion interrupt context
2646 * table in NDC/LLC/DRAM. The table consists of NIX_AF_CONST2[CINTS]
2647 * contiguous NIX_CINT_HW_S structures. The size of each structure is 1
2648 * \<\< NIX_AF_CONST3[CINT_LOG2BYTES]. After writing to this register,
2649 * software should read it back to ensure that the write has completed
2650 * before accessing any NIX_LF_CINT()_* registers.
2651 */
2652union nixx_af_lfx_cints_cfg {
2653 u64 u;
2654 struct nixx_af_lfx_cints_cfg_s {
2655 u64 reserved_0_19 : 20;
2656 u64 way_mask : 16;
2657 u64 caching : 1;
2658 u64 reserved_37_63 : 27;
2659 } s;
2660 /* struct nixx_af_lfx_cints_cfg_s cn; */
2661};
2662
2663static inline u64 NIXX_AF_LFX_CINTS_CFG(u64 a)
2664 __attribute__ ((pure, always_inline));
2665static inline u64 NIXX_AF_LFX_CINTS_CFG(u64 a)
2666{
2667 return 0x4120 + 0x20000 * a;
2668}
2669
2670/**
2671 * Register (RVU_PF_BAR0) nix#_af_lf#_cqs_base
2672 *
2673 * NIX AF Local Function Completion Queues Base Address Register This
2674 * register specifies the base AF IOVA of the LF's CQ context table. The
2675 * table consists of NIX_AF_LF()_CQS_CFG[MAX_QUEUESM1]+1 contiguous
2676 * NIX_CQ_CTX_S structures.
2677 */
2678union nixx_af_lfx_cqs_base {
2679 u64 u;
2680 struct nixx_af_lfx_cqs_base_s {
2681 u64 reserved_0_6 : 7;
2682 u64 addr : 46;
2683 u64 reserved_53_63 : 11;
2684 } s;
2685 /* struct nixx_af_lfx_cqs_base_s cn; */
2686};
2687
2688static inline u64 NIXX_AF_LFX_CQS_BASE(u64 a)
2689 __attribute__ ((pure, always_inline));
2690static inline u64 NIXX_AF_LFX_CQS_BASE(u64 a)
2691{
2692 return 0x4070 + 0x20000 * a;
2693}
2694
2695/**
2696 * Register (RVU_PF_BAR0) nix#_af_lf#_cqs_cfg
2697 *
2698 * NIX AF Local Function Completion Queues Configuration Register This
2699 * register configures completion queues in the LF.
2700 */
2701union nixx_af_lfx_cqs_cfg {
2702 u64 u;
2703 struct nixx_af_lfx_cqs_cfg_s {
2704 u64 max_queuesm1 : 20;
2705 u64 way_mask : 16;
2706 u64 caching : 1;
2707 u64 reserved_37_63 : 27;
2708 } s;
2709 /* struct nixx_af_lfx_cqs_cfg_s cn; */
2710};
2711
2712static inline u64 NIXX_AF_LFX_CQS_CFG(u64 a)
2713 __attribute__ ((pure, always_inline));
2714static inline u64 NIXX_AF_LFX_CQS_CFG(u64 a)
2715{
2716 return 0x4060 + 0x20000 * a;
2717}
2718
2719/**
2720 * Register (RVU_PF_BAR0) nix#_af_lf#_lock#
2721 *
2722 * NIX AF Local Function Lockdown Registers Internal: The NIX lockdown
2723 * depth of 32 bytes is shallow compared to 96 bytes for NIC and meant
2724 * for outer MAC and/or VLAN (optionally preceded by a small number of
2725 * skip bytes). NPC's MCAM can be used for deeper protocol-aware
2726 * lockdown.
2727 */
2728union nixx_af_lfx_lockx {
2729 u64 u;
2730 struct nixx_af_lfx_lockx_s {
2731 u64 data : 32;
2732 u64 bit_ena : 32;
2733 } s;
2734 /* struct nixx_af_lfx_lockx_s cn; */
2735};
2736
2737static inline u64 NIXX_AF_LFX_LOCKX(u64 a, u64 b)
2738 __attribute__ ((pure, always_inline));
2739static inline u64 NIXX_AF_LFX_LOCKX(u64 a, u64 b)
2740{
2741 return 0x4300 + 0x20000 * a + 8 * b;
2742}
2743
2744/**
2745 * Register (RVU_PF_BAR0) nix#_af_lf#_qints_base
2746 *
2747 * NIX AF Local Function Queue Interrupts Base Address Registers This
2748 * register specifies the base AF IOVA of LF's queue interrupt context
2749 * table in NDC/LLC/DRAM. The table consists of NIX_AF_CONST2[QINTS]
2750 * contiguous NIX_QINT_HW_S structures. After writing to this register,
2751 * software should read it back to ensure that the write has completed
2752 * before accessing any NIX_LF_QINT()_* registers.
2753 */
2754union nixx_af_lfx_qints_base {
2755 u64 u;
2756 struct nixx_af_lfx_qints_base_s {
2757 u64 reserved_0_6 : 7;
2758 u64 addr : 46;
2759 u64 reserved_53_63 : 11;
2760 } s;
2761 /* struct nixx_af_lfx_qints_base_s cn; */
2762};
2763
2764static inline u64 NIXX_AF_LFX_QINTS_BASE(u64 a)
2765 __attribute__ ((pure, always_inline));
2766static inline u64 NIXX_AF_LFX_QINTS_BASE(u64 a)
2767{
2768 return 0x4110 + 0x20000 * a;
2769}
2770
2771/**
2772 * Register (RVU_PF_BAR0) nix#_af_lf#_qints_cfg
2773 *
2774 * NIX AF Local Function Queue Interrupts Configuration Registers This
2775 * register controls access to the LF's queue interrupt context table in
2776 * NDC/LLC/DRAM. The table consists of NIX_AF_CONST2[QINTS] contiguous
2777 * NIX_QINT_HW_S structures. The size of each structure is 1 \<\<
2778 * NIX_AF_CONST3[QINT_LOG2BYTES]. After writing to this register,
2779 * software should read it back to ensure that the write has completed
2780 * before accessing any NIX_LF_QINT()_* registers.
2781 */
2782union nixx_af_lfx_qints_cfg {
2783 u64 u;
2784 struct nixx_af_lfx_qints_cfg_s {
2785 u64 reserved_0_19 : 20;
2786 u64 way_mask : 16;
2787 u64 caching : 1;
2788 u64 reserved_37_63 : 27;
2789 } s;
2790 /* struct nixx_af_lfx_qints_cfg_s cn; */
2791};
2792
2793static inline u64 NIXX_AF_LFX_QINTS_CFG(u64 a)
2794 __attribute__ ((pure, always_inline));
2795static inline u64 NIXX_AF_LFX_QINTS_CFG(u64 a)
2796{
2797 return 0x4100 + 0x20000 * a;
2798}
2799
2800/**
2801 * Register (RVU_PF_BAR0) nix#_af_lf#_rqs_base
2802 *
2803 * NIX AF Local Function Receive Queues Base Address Register This
2804 * register specifies the base AF IOVA of the LF's RQ context table. The
2805 * table consists of NIX_AF_LF()_RQS_CFG[MAX_QUEUESM1]+1 contiguous
2806 * NIX_RQ_CTX_S structures.
2807 */
2808union nixx_af_lfx_rqs_base {
2809 u64 u;
2810 struct nixx_af_lfx_rqs_base_s {
2811 u64 reserved_0_6 : 7;
2812 u64 addr : 46;
2813 u64 reserved_53_63 : 11;
2814 } s;
2815 /* struct nixx_af_lfx_rqs_base_s cn; */
2816};
2817
2818static inline u64 NIXX_AF_LFX_RQS_BASE(u64 a)
2819 __attribute__ ((pure, always_inline));
2820static inline u64 NIXX_AF_LFX_RQS_BASE(u64 a)
2821{
2822 return 0x4050 + 0x20000 * a;
2823}
2824
2825/**
2826 * Register (RVU_PF_BAR0) nix#_af_lf#_rqs_cfg
2827 *
2828 * NIX AF Local Function Receive Queues Configuration Register This
2829 * register configures receive queues in the LF.
2830 */
2831union nixx_af_lfx_rqs_cfg {
2832 u64 u;
2833 struct nixx_af_lfx_rqs_cfg_s {
2834 u64 max_queuesm1 : 20;
2835 u64 way_mask : 16;
2836 u64 caching : 1;
2837 u64 reserved_37_63 : 27;
2838 } s;
2839 /* struct nixx_af_lfx_rqs_cfg_s cn; */
2840};
2841
2842static inline u64 NIXX_AF_LFX_RQS_CFG(u64 a)
2843 __attribute__ ((pure, always_inline));
2844static inline u64 NIXX_AF_LFX_RQS_CFG(u64 a)
2845{
2846 return 0x4040 + 0x20000 * a;
2847}
2848
2849/**
2850 * Register (RVU_PF_BAR0) nix#_af_lf#_rss_base
2851 *
2852 * NIX AF Local Function Receive Size Scaling Table Base Address Register
2853 * This register specifies the base AF IOVA of the RSS table per LF. The
2854 * table is present when NIX_AF_LF()_RSS_CFG[ENA] is set and consists of
2855 * 1 \<\< (NIX_AF_LF()_RSS_CFG[SIZE] + 8) contiguous NIX_RSSE_S
2856 * structures, where the size of each structure is 1 \<\<
2857 * NIX_AF_CONST3[RSSE_LOG2BYTES]. See NIX_AF_LF()_RSS_GRP().
2858 */
2859union nixx_af_lfx_rss_base {
2860 u64 u;
2861 struct nixx_af_lfx_rss_base_s {
2862 u64 reserved_0_6 : 7;
2863 u64 addr : 46;
2864 u64 reserved_53_63 : 11;
2865 } s;
2866 /* struct nixx_af_lfx_rss_base_s cn; */
2867};
2868
2869static inline u64 NIXX_AF_LFX_RSS_BASE(u64 a)
2870 __attribute__ ((pure, always_inline));
2871static inline u64 NIXX_AF_LFX_RSS_BASE(u64 a)
2872{
2873 return 0x40d0 + 0x20000 * a;
2874}
2875
2876/**
2877 * Register (RVU_PF_BAR0) nix#_af_lf#_rss_cfg
2878 *
2879 * NIX AF Local Function Receive Size Scaling Table Configuration
2880 * Register See NIX_AF_LF()_RSS_BASE and NIX_AF_LF()_RSS_GRP().
2881 */
2882union nixx_af_lfx_rss_cfg {
2883 u64 u;
2884 struct nixx_af_lfx_rss_cfg_s {
2885 u64 size : 4;
2886 u64 ena : 1;
2887 u64 adder_is_tag_lsb : 1;
2888 u64 reserved_6_19 : 14;
2889 u64 way_mask : 16;
2890 u64 caching : 1;
2891 u64 reserved_37_63 : 27;
2892 } s;
2893 struct nixx_af_lfx_rss_cfg_cn96xxp1 {
2894 u64 size : 4;
2895 u64 ena : 1;
2896 u64 reserved_5_19 : 15;
2897 u64 way_mask : 16;
2898 u64 caching : 1;
2899 u64 reserved_37_63 : 27;
2900 } cn96xxp1;
2901 /* struct nixx_af_lfx_rss_cfg_s cn96xxp3; */
2902 /* struct nixx_af_lfx_rss_cfg_cn96xxp1 cnf95xx; */
2903};
2904
2905static inline u64 NIXX_AF_LFX_RSS_CFG(u64 a)
2906 __attribute__ ((pure, always_inline));
2907static inline u64 NIXX_AF_LFX_RSS_CFG(u64 a)
2908{
2909 return 0x40c0 + 0x20000 * a;
2910}
2911
2912/**
2913 * Register (RVU_PF_BAR0) nix#_af_lf#_rss_grp#
2914 *
2915 * NIX AF Local Function Receive Side Scaling Group Registers A receive
2916 * packet targets a LF's RSS group when its NIX_RX_ACTION_S[OP] =
2917 * NIX_RX_ACTIONOP_E::RSS, or its target multicast list has an entry with
2918 * NIX_RX_MCE_S[OP] = NIX_RX_MCOP_E::RSS. The RSS group index (this
2919 * register's last index) is NIX_RX_ACTION_S[INDEX] or
2920 * NIX_RX_MCE_S[INDEX]. The RSS computation is as follows: * The
2921 * packet's flow_tag (see NIX_LF_RX_SECRET()) and RSS group are used to
2922 * select a NIX_RSSE_S entry in the LF's RSS table (see [SIZEM1]). *
2923 * NIX_RSSE_S selects the packet's destination RQ.
2924 */
2925union nixx_af_lfx_rss_grpx {
2926 u64 u;
2927 struct nixx_af_lfx_rss_grpx_s {
2928 u64 offset : 11;
2929 u64 reserved_11_15 : 5;
2930 u64 sizem1 : 3;
2931 u64 reserved_19_63 : 45;
2932 } s;
2933 /* struct nixx_af_lfx_rss_grpx_s cn; */
2934};
2935
2936static inline u64 NIXX_AF_LFX_RSS_GRPX(u64 a, u64 b)
2937 __attribute__ ((pure, always_inline));
2938static inline u64 NIXX_AF_LFX_RSS_GRPX(u64 a, u64 b)
2939{
2940 return 0x4600 + 0x20000 * a + 8 * b;
2941}
2942
2943/**
2944 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_cfg
2945 *
2946 * NIX AF Local Function Receive Configuration Register
2947 */
2948union nixx_af_lfx_rx_cfg {
2949 u64 u;
2950 struct nixx_af_lfx_rx_cfg_s {
2951 u64 reserved_0_31 : 32;
2952 u64 drop_re : 1;
2953 u64 lenerr_en : 1;
2954 u64 ip6_udp_opt : 1;
2955 u64 dis_apad : 1;
2956 u64 csum_il4 : 1;
2957 u64 csum_ol4 : 1;
2958 u64 len_il4 : 1;
2959 u64 len_il3 : 1;
2960 u64 len_ol4 : 1;
2961 u64 len_ol3 : 1;
2962 u64 reserved_42_63 : 22;
2963 } s;
2964 struct nixx_af_lfx_rx_cfg_cn96xxp1 {
2965 u64 reserved_0_31 : 32;
2966 u64 reserved_32 : 1;
2967 u64 lenerr_en : 1;
2968 u64 ip6_udp_opt : 1;
2969 u64 dis_apad : 1;
2970 u64 csum_il4 : 1;
2971 u64 csum_ol4 : 1;
2972 u64 len_il4 : 1;
2973 u64 len_il3 : 1;
2974 u64 len_ol4 : 1;
2975 u64 len_ol3 : 1;
2976 u64 reserved_42_63 : 22;
2977 } cn96xxp1;
2978 /* struct nixx_af_lfx_rx_cfg_s cn96xxp3; */
2979 /* struct nixx_af_lfx_rx_cfg_s cnf95xx; */
2980};
2981
2982static inline u64 NIXX_AF_LFX_RX_CFG(u64 a)
2983 __attribute__ ((pure, always_inline));
2984static inline u64 NIXX_AF_LFX_RX_CFG(u64 a)
2985{
2986 return 0x40a0 + 0x20000 * a;
2987}
2988
2989/**
2990 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_ipsec_cfg0
2991 *
2992 * INTERNAL: NIX AF LF Receive IPSEC Configuration Registers Internal:
2993 * Not used; no IPSEC fast-path.
2994 */
2995union nixx_af_lfx_rx_ipsec_cfg0 {
2996 u64 u;
2997 struct nixx_af_lfx_rx_ipsec_cfg0_s {
2998 u64 lenm1_max : 14;
2999 u64 reserved_14_15 : 2;
3000 u64 sa_pow2_size : 4;
3001 u64 tag_const : 24;
3002 u64 tt : 2;
3003 u64 defcpt : 1;
3004 u64 hshcpt : 1;
3005 u64 reserved_48_63 : 16;
3006 } s;
3007 /* struct nixx_af_lfx_rx_ipsec_cfg0_s cn; */
3008};
3009
3010static inline u64 NIXX_AF_LFX_RX_IPSEC_CFG0(u64 a)
3011 __attribute__ ((pure, always_inline));
3012static inline u64 NIXX_AF_LFX_RX_IPSEC_CFG0(u64 a)
3013{
3014 return 0x4140 + 0x20000 * a;
3015}
3016
3017/**
3018 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_ipsec_cfg1
3019 *
3020 * INTERNAL: NIX AF LF Receive IPSEC Security Association Configuration
3021 * Register Internal: Not used; no IPSEC fast-path.
3022 */
3023union nixx_af_lfx_rx_ipsec_cfg1 {
3024 u64 u;
3025 struct nixx_af_lfx_rx_ipsec_cfg1_s {
3026 u64 sa_idx_max : 32;
3027 u64 sa_idx_w : 5;
3028 u64 reserved_37_63 : 27;
3029 } s;
3030 /* struct nixx_af_lfx_rx_ipsec_cfg1_s cn; */
3031};
3032
3033static inline u64 NIXX_AF_LFX_RX_IPSEC_CFG1(u64 a)
3034 __attribute__ ((pure, always_inline));
3035static inline u64 NIXX_AF_LFX_RX_IPSEC_CFG1(u64 a)
3036{
3037 return 0x4148 + 0x20000 * a;
3038}
3039
3040/**
3041 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_ipsec_dyno_base
3042 *
3043 * INTERNAL: NIX AF LF Receive IPSEC Dynamic Ordering Base Address
3044 * Registers Internal: Not used; no IPSEC fast-path.
3045 */
3046union nixx_af_lfx_rx_ipsec_dyno_base {
3047 u64 u;
3048 struct nixx_af_lfx_rx_ipsec_dyno_base_s {
3049 u64 reserved_0_6 : 7;
3050 u64 addr : 46;
3051 u64 reserved_53_63 : 11;
3052 } s;
3053 /* struct nixx_af_lfx_rx_ipsec_dyno_base_s cn; */
3054};
3055
3056static inline u64 NIXX_AF_LFX_RX_IPSEC_DYNO_BASE(u64 a)
3057 __attribute__ ((pure, always_inline));
3058static inline u64 NIXX_AF_LFX_RX_IPSEC_DYNO_BASE(u64 a)
3059{
3060 return 0x4158 + 0x20000 * a;
3061}
3062
3063/**
3064 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_ipsec_dyno_cfg
3065 *
3066 * INTERNAL: NIX AF LF Receive IPSEC Dynamic Ordering Base Address
3067 * Registers Internal: Not used; no IPSEC fast-path.
3068 */
3069union nixx_af_lfx_rx_ipsec_dyno_cfg {
3070 u64 u;
3071 struct nixx_af_lfx_rx_ipsec_dyno_cfg_s {
3072 u64 dyno_idx_w : 4;
3073 u64 dyno_ena : 1;
3074 u64 reserved_5_19 : 15;
3075 u64 way_mask : 16;
3076 u64 caching : 1;
3077 u64 reserved_37_63 : 27;
3078 } s;
3079 /* struct nixx_af_lfx_rx_ipsec_dyno_cfg_s cn; */
3080};
3081
3082static inline u64 NIXX_AF_LFX_RX_IPSEC_DYNO_CFG(u64 a)
3083 __attribute__ ((pure, always_inline));
3084static inline u64 NIXX_AF_LFX_RX_IPSEC_DYNO_CFG(u64 a)
3085{
3086 return 0x4150 + 0x20000 * a;
3087}
3088
3089/**
3090 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_ipsec_sa_base
3091 *
3092 * INTERNAL: NIX AF LF Receive IPSEC Security Association Base Address
3093 * Register Internal: Not used; no IPSEC fast-path.
3094 */
3095union nixx_af_lfx_rx_ipsec_sa_base {
3096 u64 u;
3097 struct nixx_af_lfx_rx_ipsec_sa_base_s {
3098 u64 reserved_0_6 : 7;
3099 u64 addr : 46;
3100 u64 reserved_53_63 : 11;
3101 } s;
3102 /* struct nixx_af_lfx_rx_ipsec_sa_base_s cn; */
3103};
3104
3105static inline u64 NIXX_AF_LFX_RX_IPSEC_SA_BASE(u64 a)
3106 __attribute__ ((pure, always_inline));
3107static inline u64 NIXX_AF_LFX_RX_IPSEC_SA_BASE(u64 a)
3108{
3109 return 0x4170 + 0x20000 * a;
3110}
3111
3112/**
3113 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_stat#
3114 *
3115 * NIX AF Local Function Receive Statistics Registers The last dimension
3116 * indicates which statistic, and is enumerated by NIX_STAT_LF_RX_E.
3117 */
3118union nixx_af_lfx_rx_statx {
3119 u64 u;
3120 struct nixx_af_lfx_rx_statx_s {
3121 u64 stat : 48;
3122 u64 reserved_48_63 : 16;
3123 } s;
3124 /* struct nixx_af_lfx_rx_statx_s cn; */
3125};
3126
3127static inline u64 NIXX_AF_LFX_RX_STATX(u64 a, u64 b)
3128 __attribute__ ((pure, always_inline));
3129static inline u64 NIXX_AF_LFX_RX_STATX(u64 a, u64 b)
3130{
3131 return 0x4500 + 0x20000 * a + 8 * b;
3132}
3133
3134/**
3135 * Register (RVU_PF_BAR0) nix#_af_lf#_rx_vtag_type#
3136 *
3137 * NIX AF Local Function Receive Vtag Type Registers These registers
3138 * specify optional Vtag (e.g. VLAN, E-TAG) actions for received packets.
3139 * Indexed by NIX_RX_VTAG_ACTION_S[VTAG*_TYPE].
3140 */
3141union nixx_af_lfx_rx_vtag_typex {
3142 u64 u;
3143 struct nixx_af_lfx_rx_vtag_typex_s {
3144 u64 size : 1;
3145 u64 reserved_1_3 : 3;
3146 u64 strip : 1;
3147 u64 capture : 1;
3148 u64 reserved_6_63 : 58;
3149 } s;
3150 /* struct nixx_af_lfx_rx_vtag_typex_s cn; */
3151};
3152
3153static inline u64 NIXX_AF_LFX_RX_VTAG_TYPEX(u64 a, u64 b)
3154 __attribute__ ((pure, always_inline));
3155static inline u64 NIXX_AF_LFX_RX_VTAG_TYPEX(u64 a, u64 b)
3156{
3157 return 0x4200 + 0x20000 * a + 8 * b;
3158}
3159
3160/**
3161 * Register (RVU_PF_BAR0) nix#_af_lf#_sqs_base
3162 *
3163 * NIX AF Local Function Send Queues Base Address Register This register
3164 * specifies the base AF IOVA of the LF's SQ context table. The table
3165 * consists of NIX_AF_LF()_SQS_CFG[MAX_QUEUESM1]+1 contiguous
3166 * NIX_SQ_CTX_HW_S structures.
3167 */
3168union nixx_af_lfx_sqs_base {
3169 u64 u;
3170 struct nixx_af_lfx_sqs_base_s {
3171 u64 reserved_0_6 : 7;
3172 u64 addr : 46;
3173 u64 reserved_53_63 : 11;
3174 } s;
3175 /* struct nixx_af_lfx_sqs_base_s cn; */
3176};
3177
3178static inline u64 NIXX_AF_LFX_SQS_BASE(u64 a)
3179 __attribute__ ((pure, always_inline));
3180static inline u64 NIXX_AF_LFX_SQS_BASE(u64 a)
3181{
3182 return 0x4030 + 0x20000 * a;
3183}
3184
3185/**
3186 * Register (RVU_PF_BAR0) nix#_af_lf#_sqs_cfg
3187 *
3188 * NIX AF Local Function Send Queues Configuration Register This register
3189 * configures send queues in the LF.
3190 */
3191union nixx_af_lfx_sqs_cfg {
3192 u64 u;
3193 struct nixx_af_lfx_sqs_cfg_s {
3194 u64 max_queuesm1 : 20;
3195 u64 way_mask : 16;
3196 u64 caching : 1;
3197 u64 reserved_37_63 : 27;
3198 } s;
3199 /* struct nixx_af_lfx_sqs_cfg_s cn; */
3200};
3201
3202static inline u64 NIXX_AF_LFX_SQS_CFG(u64 a)
3203 __attribute__ ((pure, always_inline));
3204static inline u64 NIXX_AF_LFX_SQS_CFG(u64 a)
3205{
3206 return 0x4020 + 0x20000 * a;
3207}
3208
3209/**
3210 * Register (RVU_PF_BAR0) nix#_af_lf#_tx_cfg
3211 *
3212 * NIX AF Local Function Transmit Configuration Register
3213 */
3214union nixx_af_lfx_tx_cfg {
3215 u64 u;
3216 struct nixx_af_lfx_tx_cfg_s {
3217 u64 vlan0_ins_etype : 16;
3218 u64 vlan1_ins_etype : 16;
3219 u64 send_tstmp_ena : 1;
3220 u64 lock_viol_cqe_ena : 1;
3221 u64 lock_ena : 1;
3222 u64 reserved_35_63 : 29;
3223 } s;
3224 /* struct nixx_af_lfx_tx_cfg_s cn; */
3225};
3226
3227static inline u64 NIXX_AF_LFX_TX_CFG(u64 a)
3228 __attribute__ ((pure, always_inline));
3229static inline u64 NIXX_AF_LFX_TX_CFG(u64 a)
3230{
3231 return 0x4080 + 0x20000 * a;
3232}
3233
3234/**
3235 * Register (RVU_PF_BAR0) nix#_af_lf#_tx_cfg2
3236 *
3237 * NIX AF Local Function Transmit Configuration Register
3238 */
3239union nixx_af_lfx_tx_cfg2 {
3240 u64 u;
3241 struct nixx_af_lfx_tx_cfg2_s {
3242 u64 lmt_ena : 1;
3243 u64 reserved_1_63 : 63;
3244 } s;
3245 /* struct nixx_af_lfx_tx_cfg2_s cn; */
3246};
3247
3248static inline u64 NIXX_AF_LFX_TX_CFG2(u64 a)
3249 __attribute__ ((pure, always_inline));
3250static inline u64 NIXX_AF_LFX_TX_CFG2(u64 a)
3251{
3252 return 0x4028 + 0x20000 * a;
3253}
3254
3255/**
3256 * Register (RVU_PF_BAR0) nix#_af_lf#_tx_parse_cfg
3257 *
3258 * NIX AF Local Function Transmit Parse Configuration Register
3259 */
3260union nixx_af_lfx_tx_parse_cfg {
3261 u64 u;
3262 struct nixx_af_lfx_tx_parse_cfg_s {
3263 u64 pkind : 6;
3264 u64 reserved_6_63 : 58;
3265 } s;
3266 /* struct nixx_af_lfx_tx_parse_cfg_s cn; */
3267};
3268
3269static inline u64 NIXX_AF_LFX_TX_PARSE_CFG(u64 a)
3270 __attribute__ ((pure, always_inline));
3271static inline u64 NIXX_AF_LFX_TX_PARSE_CFG(u64 a)
3272{
3273 return 0x4090 + 0x20000 * a;
3274}
3275
3276/**
3277 * Register (RVU_PF_BAR0) nix#_af_lf#_tx_stat#
3278 *
3279 * NIX AF Local Function Transmit Statistics Registers The last dimension
3280 * indicates which statistic, and is enumerated by NIX_STAT_LF_TX_E.
3281 */
3282union nixx_af_lfx_tx_statx {
3283 u64 u;
3284 struct nixx_af_lfx_tx_statx_s {
3285 u64 stat : 48;
3286 u64 reserved_48_63 : 16;
3287 } s;
3288 /* struct nixx_af_lfx_tx_statx_s cn; */
3289};
3290
3291static inline u64 NIXX_AF_LFX_TX_STATX(u64 a, u64 b)
3292 __attribute__ ((pure, always_inline));
3293static inline u64 NIXX_AF_LFX_TX_STATX(u64 a, u64 b)
3294{
3295 return 0x4400 + 0x20000 * a + 8 * b;
3296}
3297
3298/**
3299 * Register (RVU_PF_BAR0) nix#_af_lf#_tx_status
3300 *
3301 * NIX AF LF Transmit Status Register
3302 */
3303union nixx_af_lfx_tx_status {
3304 u64 u;
3305 struct nixx_af_lfx_tx_status_s {
3306 u64 sq_ctx_err : 1;
3307 u64 reserved_1_63 : 63;
3308 } s;
3309 /* struct nixx_af_lfx_tx_status_s cn; */
3310};
3311
3312static inline u64 NIXX_AF_LFX_TX_STATUS(u64 a)
3313 __attribute__ ((pure, always_inline));
3314static inline u64 NIXX_AF_LFX_TX_STATUS(u64 a)
3315{
3316 return 0x4180 + 0x20000 * a;
3317}
3318
3319/**
3320 * Register (RVU_PF_BAR0) nix#_af_lf_rst
3321 *
3322 * NIX Admin Function LF Reset Register
3323 */
3324union nixx_af_lf_rst {
3325 u64 u;
3326 struct nixx_af_lf_rst_s {
3327 u64 lf : 8;
3328 u64 reserved_8_11 : 4;
3329 u64 exec : 1;
3330 u64 reserved_13_63 : 51;
3331 } s;
3332 /* struct nixx_af_lf_rst_s cn; */
3333};
3334
3335static inline u64 NIXX_AF_LF_RST(void)
3336 __attribute__ ((pure, always_inline));
3337static inline u64 NIXX_AF_LF_RST(void)
3338{
3339 return 0x150;
3340}
3341
3342/**
3343 * Register (RVU_PF_BAR0) nix#_af_lso_cfg
3344 *
3345 * NIX AF Large Send Offload Configuration Register
3346 */
3347union nixx_af_lso_cfg {
3348 u64 u;
3349 struct nixx_af_lso_cfg_s {
3350 u64 tcp_lsf : 16;
3351 u64 tcp_msf : 16;
3352 u64 tcp_fsf : 16;
3353 u64 reserved_48_62 : 15;
3354 u64 enable : 1;
3355 } s;
3356 /* struct nixx_af_lso_cfg_s cn; */
3357};
3358
3359static inline u64 NIXX_AF_LSO_CFG(void)
3360 __attribute__ ((pure, always_inline));
3361static inline u64 NIXX_AF_LSO_CFG(void)
3362{
3363 return 0xa8;
3364}
3365
3366/**
3367 * Register (RVU_PF_BAR0) nix#_af_lso_format#_field#
3368 *
3369 * NIX AF Large Send Offload Format Field Registers These registers
3370 * specify LSO packet modification formats. Each format may modify up to
3371 * eight packet fields with the following constraints: * If fewer than
3372 * eight fields are modified, [ALG] must be NIX_LSOALG_E::NOP in the
3373 * unused field registers. * Modified fields must be specified in
3374 * contiguous field registers starting with NIX_AF_LSO_FORMAT()_FIELD(0).
3375 * * Modified fields cannot overlap. * Multiple fields with the same
3376 * [LAYER] value must be specified in ascending [OFFSET] order. * Fields
3377 * in different layers must be specified in ascending [LAYER] order.
3378 */
3379union nixx_af_lso_formatx_fieldx {
3380 u64 u;
3381 struct nixx_af_lso_formatx_fieldx_s {
3382 u64 offset : 8;
3383 u64 layer : 2;
3384 u64 reserved_10_11 : 2;
3385 u64 sizem1 : 2;
3386 u64 reserved_14_15 : 2;
3387 u64 alg : 3;
3388 u64 reserved_19_63 : 45;
3389 } s;
3390 /* struct nixx_af_lso_formatx_fieldx_s cn; */
3391};
3392
3393static inline u64 NIXX_AF_LSO_FORMATX_FIELDX(u64 a, u64 b)
3394 __attribute__ ((pure, always_inline));
3395static inline u64 NIXX_AF_LSO_FORMATX_FIELDX(u64 a, u64 b)
3396{
3397 return 0x1b00 + 0x10000 * a + 8 * b;
3398}
3399
3400/**
3401 * Register (RVU_PF_BAR0) nix#_af_mark_format#_ctl
3402 *
3403 * NIX AF Packet Marking Format Registers Describes packet marking
3404 * calculations for YELLOW and for NIX_COLORRESULT_E::RED_SEND packets.
3405 * NIX_SEND_EXT_S[MARKFORM] selects the CSR used for the packet
3406 * descriptor. All the packet marking offset calculations assume big-
3407 * endian bits within a byte. For example, if NIX_SEND_EXT_S[MARKPTR] is
3408 * 3 and [OFFSET] is 5 and the packet is YELLOW, the NIX marking hardware
3409 * would do this: _ byte[3]\<2:0\> |= [Y_VAL]\<3:1\> _
3410 * byte[3]\<2:0\> &= ~[Y_MASK]\<3:1\> _ byte[4]\<7\> |= [Y_VAL]\<0\>
3411 * _ byte[4]\<7\> &= ~[Y_MASK]\<0\> where byte[3] is the third byte
3412 * in the packet, and byte[4] the fourth. For another example, if
3413 * NIX_SEND_EXT_S[MARKPTR] is 3 and [OFFSET] is 0 and the packet is
3414 * NIX_COLORRESULT_E::RED_SEND, _ byte[3]\<7:4\> |= [R_VAL]\<3:0\> _
3415 * byte[3]\<7:4\> &= ~[R_MASK]\<3:0\>
3416 */
3417union nixx_af_mark_formatx_ctl {
3418 u64 u;
3419 struct nixx_af_mark_formatx_ctl_s {
3420 u64 r_val : 4;
3421 u64 r_mask : 4;
3422 u64 y_val : 4;
3423 u64 y_mask : 4;
3424 u64 offset : 3;
3425 u64 reserved_19_63 : 45;
3426 } s;
3427 /* struct nixx_af_mark_formatx_ctl_s cn; */
3428};
3429
3430static inline u64 NIXX_AF_MARK_FORMATX_CTL(u64 a)
3431 __attribute__ ((pure, always_inline));
3432static inline u64 NIXX_AF_MARK_FORMATX_CTL(u64 a)
3433{
3434 return 0x900 + 0x40000 * a;
3435}
3436
3437/**
3438 * Register (RVU_PF_BAR0) nix#_af_mc_mirror_const
3439 *
3440 * NIX AF Multicast/Mirror Constants Register This register contains
3441 * constants for software discovery.
3442 */
3443union nixx_af_mc_mirror_const {
3444 u64 u;
3445 struct nixx_af_mc_mirror_const_s {
3446 u64 buf_size : 16;
3447 u64 reserved_16_63 : 48;
3448 } s;
3449 /* struct nixx_af_mc_mirror_const_s cn; */
3450};
3451
3452static inline u64 NIXX_AF_MC_MIRROR_CONST(void)
3453 __attribute__ ((pure, always_inline));
3454static inline u64 NIXX_AF_MC_MIRROR_CONST(void)
3455{
3456 return 0x98;
3457}
3458
3459/**
3460 * Register (RVU_PF_BAR0) nix#_af_mdq#_cir
3461 *
3462 * NIX AF Meta Descriptor Queue Committed Information Rate Registers This
3463 * register has the same bit fields as NIX_AF_TL1()_CIR.
3464 */
3465union nixx_af_mdqx_cir {
3466 u64 u;
3467 struct nixx_af_mdqx_cir_s {
3468 u64 enable : 1;
3469 u64 rate_mantissa : 8;
3470 u64 rate_exponent : 4;
3471 u64 rate_divider_exponent : 4;
3472 u64 reserved_17_28 : 12;
3473 u64 burst_mantissa : 8;
3474 u64 burst_exponent : 4;
3475 u64 reserved_41_63 : 23;
3476 } s;
3477 /* struct nixx_af_mdqx_cir_s cn; */
3478};
3479
3480static inline u64 NIXX_AF_MDQX_CIR(u64 a)
3481 __attribute__ ((pure, always_inline));
3482static inline u64 NIXX_AF_MDQX_CIR(u64 a)
3483{
3484 return 0x1420 + 0x10000 * a;
3485}
3486
3487/**
3488 * Register (RVU_PF_BAR0) nix#_af_mdq#_md_debug
3489 *
3490 * NIX AF Meta Descriptor Queue Meta Descriptor State Debug Registers
3491 * This register provides access to the meta descriptor at the front of
3492 * the MDQ. An MDQ can hold up to 8 packet meta descriptors (PMD) and one
3493 * flush meta descriptor (FMD).
3494 */
3495union nixx_af_mdqx_md_debug {
3496 u64 u;
3497 struct nixx_af_mdqx_md_debug_s {
3498 u64 pkt_len : 16;
3499 u64 red_algo_override : 2;
3500 u64 shp_dis : 1;
3501 u64 reserved_19 : 1;
3502 u64 shp_chg : 9;
3503 u64 reserved_29_31 : 3;
3504 u64 sqm_pkt_id : 13;
3505 u64 reserved_45_60 : 16;
3506 u64 md_type : 2;
3507 u64 reserved_63 : 1;
3508 } s;
3509 /* struct nixx_af_mdqx_md_debug_s cn; */
3510};
3511
3512static inline u64 NIXX_AF_MDQX_MD_DEBUG(u64 a)
3513 __attribute__ ((pure, always_inline));
3514static inline u64 NIXX_AF_MDQX_MD_DEBUG(u64 a)
3515{
3516 return 0x14c0 + 0x10000 * a;
3517}
3518
3519/**
3520 * Register (RVU_PF_BAR0) nix#_af_mdq#_parent
3521 *
3522 * NIX AF Meta Descriptor Queue Topology Registers
3523 */
3524union nixx_af_mdqx_parent {
3525 u64 u;
3526 struct nixx_af_mdqx_parent_s {
3527 u64 reserved_0_15 : 16;
3528 u64 parent : 9;
3529 u64 reserved_25_63 : 39;
3530 } s;
3531 /* struct nixx_af_mdqx_parent_s cn; */
3532};
3533
3534static inline u64 NIXX_AF_MDQX_PARENT(u64 a)
3535 __attribute__ ((pure, always_inline));
3536static inline u64 NIXX_AF_MDQX_PARENT(u64 a)
3537{
3538 return 0x1480 + 0x10000 * a;
3539}
3540
3541/**
3542 * Register (RVU_PF_BAR0) nix#_af_mdq#_pir
3543 *
3544 * NIX AF Meta Descriptor Queue Peak Information Rate Registers This
3545 * register has the same bit fields as NIX_AF_TL1()_CIR.
3546 */
3547union nixx_af_mdqx_pir {
3548 u64 u;
3549 struct nixx_af_mdqx_pir_s {
3550 u64 enable : 1;
3551 u64 rate_mantissa : 8;
3552 u64 rate_exponent : 4;
3553 u64 rate_divider_exponent : 4;
3554 u64 reserved_17_28 : 12;
3555 u64 burst_mantissa : 8;
3556 u64 burst_exponent : 4;
3557 u64 reserved_41_63 : 23;
3558 } s;
3559 /* struct nixx_af_mdqx_pir_s cn; */
3560};
3561
3562static inline u64 NIXX_AF_MDQX_PIR(u64 a)
3563 __attribute__ ((pure, always_inline));
3564static inline u64 NIXX_AF_MDQX_PIR(u64 a)
3565{
3566 return 0x1430 + 0x10000 * a;
3567}
3568
3569/**
3570 * Register (RVU_PF_BAR0) nix#_af_mdq#_pointers
3571 *
3572 * INTERNAL: NIX AF Meta Descriptor 4 Linked List Pointers Debug Register
3573 * This register has the same bit fields as NIX_AF_TL4()_POINTERS.
3574 */
3575union nixx_af_mdqx_pointers {
3576 u64 u;
3577 struct nixx_af_mdqx_pointers_s {
3578 u64 next : 9;
3579 u64 reserved_9_15 : 7;
3580 u64 prev : 9;
3581 u64 reserved_25_63 : 39;
3582 } s;
3583 /* struct nixx_af_mdqx_pointers_s cn; */
3584};
3585
3586static inline u64 NIXX_AF_MDQX_POINTERS(u64 a)
3587 __attribute__ ((pure, always_inline));
3588static inline u64 NIXX_AF_MDQX_POINTERS(u64 a)
3589{
3590 return 0x1460 + 0x10000 * a;
3591}
3592
3593/**
3594 * Register (RVU_PF_BAR0) nix#_af_mdq#_ptr_fifo
3595 *
3596 * INTERNAL: NIX Meta Descriptor Queue Pointer FIFO State Debug Registers
3597 */
3598union nixx_af_mdqx_ptr_fifo {
3599 u64 u;
3600 struct nixx_af_mdqx_ptr_fifo_s {
3601 u64 tail : 4;
3602 u64 head : 4;
3603 u64 p_con : 1;
3604 u64 reserved_9_63 : 55;
3605 } s;
3606 /* struct nixx_af_mdqx_ptr_fifo_s cn; */
3607};
3608
3609static inline u64 NIXX_AF_MDQX_PTR_FIFO(u64 a)
3610 __attribute__ ((pure, always_inline));
3611static inline u64 NIXX_AF_MDQX_PTR_FIFO(u64 a)
3612{
3613 return 0x14d0 + 0x10000 * a;
3614}
3615
3616/**
3617 * Register (RVU_PF_BAR0) nix#_af_mdq#_sched_state
3618 *
3619 * NIX AF Meta Descriptor Queue Scheduling Control State Registers This
3620 * register has the same bit fields as NIX_AF_TL2()_SCHED_STATE.
3621 */
3622union nixx_af_mdqx_sched_state {
3623 u64 u;
3624 struct nixx_af_mdqx_sched_state_s {
3625 u64 rr_count : 25;
3626 u64 reserved_25_63 : 39;
3627 } s;
3628 /* struct nixx_af_mdqx_sched_state_s cn; */
3629};
3630
3631static inline u64 NIXX_AF_MDQX_SCHED_STATE(u64 a)
3632 __attribute__ ((pure, always_inline));
3633static inline u64 NIXX_AF_MDQX_SCHED_STATE(u64 a)
3634{
3635 return 0x1440 + 0x10000 * a;
3636}
3637
3638/**
3639 * Register (RVU_PF_BAR0) nix#_af_mdq#_schedule
3640 *
3641 * NIX AF Meta Descriptor Queue Scheduling Control Registers This
3642 * register has the same bit fields as NIX_AF_TL2()_SCHEDULE.
3643 */
3644union nixx_af_mdqx_schedule {
3645 u64 u;
3646 struct nixx_af_mdqx_schedule_s {
3647 u64 rr_quantum : 24;
3648 u64 prio : 4;
3649 u64 reserved_28_63 : 36;
3650 } s;
3651 /* struct nixx_af_mdqx_schedule_s cn; */
3652};
3653
3654static inline u64 NIXX_AF_MDQX_SCHEDULE(u64 a)
3655 __attribute__ ((pure, always_inline));
3656static inline u64 NIXX_AF_MDQX_SCHEDULE(u64 a)
3657{
3658 return 0x1400 + 0x10000 * a;
3659}
3660
3661/**
3662 * Register (RVU_PF_BAR0) nix#_af_mdq#_shape
3663 *
3664 * NIX AF Meta Descriptor Queue Shaping Control Registers This register
3665 * has the same bit fields as NIX_AF_TL3()_SHAPE.
3666 */
3667union nixx_af_mdqx_shape {
3668 u64 u;
3669 struct nixx_af_mdqx_shape_s {
3670 u64 adjust : 9;
3671 u64 red_algo : 2;
3672 u64 red_disable : 1;
3673 u64 yellow_disable : 1;
3674 u64 reserved_13_23 : 11;
3675 u64 length_disable : 1;
3676 u64 schedule_list : 2;
3677 u64 reserved_27_63 : 37;
3678 } s;
3679 /* struct nixx_af_mdqx_shape_s cn; */
3680};
3681
3682static inline u64 NIXX_AF_MDQX_SHAPE(u64 a)
3683 __attribute__ ((pure, always_inline));
3684static inline u64 NIXX_AF_MDQX_SHAPE(u64 a)
3685{
3686 return 0x1410 + 0x10000 * a;
3687}
3688
3689/**
3690 * Register (RVU_PF_BAR0) nix#_af_mdq#_shape_state
3691 *
3692 * NIX AF Meta Descriptor Queue Shaping State Registers This register has
3693 * the same bit fields as NIX_AF_TL2()_SHAPE_STATE. This register must
3694 * not be written during normal operation.
3695 */
3696union nixx_af_mdqx_shape_state {
3697 u64 u;
3698 struct nixx_af_mdqx_shape_state_s {
3699 u64 cir_accum : 26;
3700 u64 pir_accum : 26;
3701 u64 color : 2;
3702 u64 reserved_54_63 : 10;
3703 } s;
3704 /* struct nixx_af_mdqx_shape_state_s cn; */
3705};
3706
3707static inline u64 NIXX_AF_MDQX_SHAPE_STATE(u64 a)
3708 __attribute__ ((pure, always_inline));
3709static inline u64 NIXX_AF_MDQX_SHAPE_STATE(u64 a)
3710{
3711 return 0x1450 + 0x10000 * a;
3712}
3713
3714/**
3715 * Register (RVU_PF_BAR0) nix#_af_mdq#_sw_xoff
3716 *
3717 * NIX AF Meta Descriptor Controlled XOFF Registers This register has the
3718 * same bit fields as NIX_AF_TL1()_SW_XOFF
3719 */
3720union nixx_af_mdqx_sw_xoff {
3721 u64 u;
3722 struct nixx_af_mdqx_sw_xoff_s {
3723 u64 xoff : 1;
3724 u64 drain : 1;
3725 u64 reserved_2 : 1;
3726 u64 drain_irq : 1;
3727 u64 reserved_4_63 : 60;
3728 } s;
3729 /* struct nixx_af_mdqx_sw_xoff_s cn; */
3730};
3731
3732static inline u64 NIXX_AF_MDQX_SW_XOFF(u64 a)
3733 __attribute__ ((pure, always_inline));
3734static inline u64 NIXX_AF_MDQX_SW_XOFF(u64 a)
3735{
3736 return 0x1470 + 0x10000 * a;
3737}
3738
3739/**
3740 * Register (RVU_PF_BAR0) nix#_af_mdq_const
3741 *
3742 * NIX AF Meta Descriptor Queue Constants Register This register contains
3743 * constants for software discovery.
3744 */
3745union nixx_af_mdq_const {
3746 u64 u;
3747 struct nixx_af_mdq_const_s {
3748 u64 count : 16;
3749 u64 reserved_16_63 : 48;
3750 } s;
3751 /* struct nixx_af_mdq_const_s cn; */
3752};
3753
3754static inline u64 NIXX_AF_MDQ_CONST(void)
3755 __attribute__ ((pure, always_inline));
3756static inline u64 NIXX_AF_MDQ_CONST(void)
3757{
3758 return 0x90;
3759}
3760
3761/**
3762 * Register (RVU_PF_BAR0) nix#_af_ndc_cfg
3763 *
3764 * NIX AF General Configuration Register
3765 */
3766union nixx_af_ndc_cfg {
3767 u64 u;
3768 struct nixx_af_ndc_cfg_s {
3769 u64 ndc_ign_pois : 1;
3770 u64 byp_sq : 1;
3771 u64 byp_sqb : 1;
3772 u64 byp_cqs : 1;
3773 u64 byp_cints : 1;
3774 u64 byp_dyno : 1;
3775 u64 byp_mce : 1;
3776 u64 byp_rqc : 1;
3777 u64 byp_rsse : 1;
3778 u64 byp_mc_data : 1;
3779 u64 byp_mc_wqe : 1;
3780 u64 byp_mr_data : 1;
3781 u64 byp_mr_wqe : 1;
3782 u64 byp_qints : 1;
3783 u64 reserved_14_63 : 50;
3784 } s;
3785 /* struct nixx_af_ndc_cfg_s cn; */
3786};
3787
3788static inline u64 NIXX_AF_NDC_CFG(void)
3789 __attribute__ ((pure, always_inline));
3790static inline u64 NIXX_AF_NDC_CFG(void)
3791{
3792 return 0x18;
3793}
3794
3795/**
3796 * Register (RVU_PF_BAR0) nix#_af_ndc_rx_sync
3797 *
3798 * NIX AF Receive NDC Sync Register Used to synchronize the NIX receive
3799 * NDC (NDC_IDX_E::NIX()_RX).
3800 */
3801union nixx_af_ndc_rx_sync {
3802 u64 u;
3803 struct nixx_af_ndc_rx_sync_s {
3804 u64 lf : 8;
3805 u64 reserved_8_11 : 4;
3806 u64 exec : 1;
3807 u64 reserved_13_63 : 51;
3808 } s;
3809 /* struct nixx_af_ndc_rx_sync_s cn; */
3810};
3811
3812static inline u64 NIXX_AF_NDC_RX_SYNC(void)
3813 __attribute__ ((pure, always_inline));
3814static inline u64 NIXX_AF_NDC_RX_SYNC(void)
3815{
3816 return 0x3e0;
3817}
3818
3819/**
3820 * Register (RVU_PF_BAR0) nix#_af_ndc_tx_sync
3821 *
3822 * NIX AF NDC_TX Sync Register Used to synchronize the NIX transmit NDC
3823 * (NDC_IDX_E::NIX()_TX).
3824 */
3825union nixx_af_ndc_tx_sync {
3826 u64 u;
3827 struct nixx_af_ndc_tx_sync_s {
3828 u64 lf : 8;
3829 u64 reserved_8_11 : 4;
3830 u64 exec : 1;
3831 u64 reserved_13_63 : 51;
3832 } s;
3833 /* struct nixx_af_ndc_tx_sync_s cn; */
3834};
3835
3836static inline u64 NIXX_AF_NDC_TX_SYNC(void)
3837 __attribute__ ((pure, always_inline));
3838static inline u64 NIXX_AF_NDC_TX_SYNC(void)
3839{
3840 return 0x3f0;
3841}
3842
3843/**
3844 * Register (RVU_PF_BAR0) nix#_af_norm_tx_fifo_status
3845 *
3846 * NIX AF Normal Transmit FIFO Status Register Status of FIFO which
3847 * transmits normal packets to CGX and LBK.
3848 */
3849union nixx_af_norm_tx_fifo_status {
3850 u64 u;
3851 struct nixx_af_norm_tx_fifo_status_s {
3852 u64 count : 12;
3853 u64 reserved_12_63 : 52;
3854 } s;
3855 /* struct nixx_af_norm_tx_fifo_status_s cn; */
3856};
3857
3858static inline u64 NIXX_AF_NORM_TX_FIFO_STATUS(void)
3859 __attribute__ ((pure, always_inline));
3860static inline u64 NIXX_AF_NORM_TX_FIFO_STATUS(void)
3861{
3862 return 0x648;
3863}
3864
3865/**
3866 * Register (RVU_PF_BAR0) nix#_af_pq#_dbg_arb_link_exp
3867 *
3868 * INTERNAL: NIX AF PQ Arb Link EXPRESS Debug Register
3869 */
3870union nixx_af_pqx_dbg_arb_link_exp {
3871 u64 u;
3872 struct nixx_af_pqx_dbg_arb_link_exp_s {
3873 u64 req : 1;
3874 u64 act_c_con : 1;
3875 u64 cnt : 2;
3876 u64 reserved_4_5 : 2;
3877 u64 rr_mask : 1;
3878 u64 reserved_7_63 : 57;
3879 } s;
3880 /* struct nixx_af_pqx_dbg_arb_link_exp_s cn; */
3881};
3882
3883static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_EXP(u64 a)
3884 __attribute__ ((pure, always_inline));
3885static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_EXP(u64 a)
3886{
3887 return 0xce8 + 0x10000 * a;
3888}
3889
3890/**
3891 * Register (RVU_PF_BAR0) nix#_af_pq#_dbg_arb_link_nrm
3892 *
3893 * INTERNAL: NIX AF PQ Arb Link NORMAL Debug Register
3894 */
3895union nixx_af_pqx_dbg_arb_link_nrm {
3896 u64 u;
3897 struct nixx_af_pqx_dbg_arb_link_nrm_s {
3898 u64 req : 1;
3899 u64 act_c_con : 1;
3900 u64 cnt : 2;
3901 u64 reserved_4_5 : 2;
3902 u64 rr_mask : 1;
3903 u64 reserved_7_63 : 57;
3904 } s;
3905 /* struct nixx_af_pqx_dbg_arb_link_nrm_s cn; */
3906};
3907
3908static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_NRM(u64 a)
3909 __attribute__ ((pure, always_inline));
3910static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_NRM(u64 a)
3911{
3912 return 0xce0 + 0x10000 * a;
3913}
3914
3915/**
3916 * Register (RVU_PF_BAR0) nix#_af_pq#_dbg_arb_link_sdp
3917 *
3918 * INTERNAL: NIX AF PQ Arb Link SDP Debug Register
3919 */
3920union nixx_af_pqx_dbg_arb_link_sdp {
3921 u64 u;
3922 struct nixx_af_pqx_dbg_arb_link_sdp_s {
3923 u64 req : 1;
3924 u64 act_c_con : 1;
3925 u64 cnt : 2;
3926 u64 reserved_4_5 : 2;
3927 u64 rr_mask : 1;
3928 u64 reserved_7_63 : 57;
3929 } s;
3930 /* struct nixx_af_pqx_dbg_arb_link_sdp_s cn; */
3931};
3932
3933static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_SDP(u64 a)
3934 __attribute__ ((pure, always_inline));
3935static inline u64 NIXX_AF_PQX_DBG_ARB_LINK_SDP(u64 a)
3936{
3937 return 0xcf0 + 0x10000 * a;
3938}
3939
3940/**
3941 * Register (RVU_PF_BAR0) nix#_af_pq_arb_crd_rdy_debug
3942 *
3943 * INTERNAL: NIX AF PQ_ARB Node Credit Ready Registers NIX AF PQ ARB
3944 * Credit ready register
3945 */
3946union nixx_af_pq_arb_crd_rdy_debug {
3947 u64 u;
3948 struct nixx_af_pq_arb_crd_rdy_debug_s {
3949 u64 node_crd_rdy : 28;
3950 u64 reserved_28_63 : 36;
3951 } s;
3952 /* struct nixx_af_pq_arb_crd_rdy_debug_s cn; */
3953};
3954
3955static inline u64 NIXX_AF_PQ_ARB_CRD_RDY_DEBUG(void)
3956 __attribute__ ((pure, always_inline));
3957static inline u64 NIXX_AF_PQ_ARB_CRD_RDY_DEBUG(void)
3958{
3959 return 0xf10;
3960}
3961
3962/**
3963 * Register (RVU_PF_BAR0) nix#_af_pq_arb_dwrr_msk_debug
3964 *
3965 * INTERNAL: NIX AF PQ_ARB DWRR mask set read only debug Registers
3966 */
3967union nixx_af_pq_arb_dwrr_msk_debug {
3968 u64 u;
3969 struct nixx_af_pq_arb_dwrr_msk_debug_s {
3970 u64 node_dwrr_mask_set : 28;
3971 u64 reserved_28_63 : 36;
3972 } s;
3973 /* struct nixx_af_pq_arb_dwrr_msk_debug_s cn; */
3974};
3975
3976static inline u64 NIXX_AF_PQ_ARB_DWRR_MSK_DEBUG(void)
3977 __attribute__ ((pure, always_inline));
3978static inline u64 NIXX_AF_PQ_ARB_DWRR_MSK_DEBUG(void)
3979{
3980 return 0xf30;
3981}
3982
3983/**
3984 * Register (RVU_PF_BAR0) nix#_af_pq_arb_node_gnt_debug
3985 *
3986 * INTERNAL: NIX AF PQ_ARB Node Grant vector Registers
3987 */
3988union nixx_af_pq_arb_node_gnt_debug {
3989 u64 u;
3990 struct nixx_af_pq_arb_node_gnt_debug_s {
3991 u64 node_grant_vec : 28;
3992 u64 reserved_28_63 : 36;
3993 } s;
3994 /* struct nixx_af_pq_arb_node_gnt_debug_s cn; */
3995};
3996
3997static inline u64 NIXX_AF_PQ_ARB_NODE_GNT_DEBUG(void)
3998 __attribute__ ((pure, always_inline));
3999static inline u64 NIXX_AF_PQ_ARB_NODE_GNT_DEBUG(void)
4000{
4001 return 0xf20;
4002}
4003
4004/**
4005 * Register (RVU_PF_BAR0) nix#_af_pq_arb_node_req_debug
4006 *
4007 * INTERNAL: NIX AF PQ_ARB Node Request Debug Registers NIX AF PQ ARB
4008 * Node Request Debug register
4009 */
4010union nixx_af_pq_arb_node_req_debug {
4011 u64 u;
4012 struct nixx_af_pq_arb_node_req_debug_s {
4013 u64 node_req : 28;
4014 u64 reserved_28_63 : 36;
4015 } s;
4016 /* struct nixx_af_pq_arb_node_req_debug_s cn; */
4017};
4018
4019static inline u64 NIXX_AF_PQ_ARB_NODE_REQ_DEBUG(void)
4020 __attribute__ ((pure, always_inline));
4021static inline u64 NIXX_AF_PQ_ARB_NODE_REQ_DEBUG(void)
4022{
4023 return 0xf00;
4024}
4025
4026/**
4027 * Register (RVU_PF_BAR0) nix#_af_pq_arb_shape_vld_dbg
4028 *
4029 * INTERNAL: NIX AF PQ_ARB shape valid set Register
4030 */
4031union nixx_af_pq_arb_shape_vld_dbg {
4032 u64 u;
4033 struct nixx_af_pq_arb_shape_vld_dbg_s {
4034 u64 node_shape_vld_set : 28;
4035 u64 reserved_28_63 : 36;
4036 } s;
4037 /* struct nixx_af_pq_arb_shape_vld_dbg_s cn; */
4038};
4039
4040static inline u64 NIXX_AF_PQ_ARB_SHAPE_VLD_DBG(void)
4041 __attribute__ ((pure, always_inline));
4042static inline u64 NIXX_AF_PQ_ARB_SHAPE_VLD_DBG(void)
4043{
4044 return 0xf40;
4045}
4046
4047/**
4048 * Register (RVU_PF_BAR0) nix#_af_pq_dbg_arb_0
4049 *
4050 * INTERNAL: NIX AF PQ Arb Debug 0 Register
4051 */
4052union nixx_af_pq_dbg_arb_0 {
4053 u64 u;
4054 struct nixx_af_pq_dbg_arb_0_s {
4055 u64 rr_mask_clr : 1;
4056 u64 reserved_1_63 : 63;
4057 } s;
4058 /* struct nixx_af_pq_dbg_arb_0_s cn; */
4059};
4060
4061static inline u64 NIXX_AF_PQ_DBG_ARB_0(void)
4062 __attribute__ ((pure, always_inline));
4063static inline u64 NIXX_AF_PQ_DBG_ARB_0(void)
4064{
4065 return 0xcf8;
4066}
4067
4068/**
4069 * Register (RVU_PF_BAR0) nix#_af_pq_lnk_#_dwrr_msk_dbg
4070 *
4071 * INTERNAL: NIX AF PQ_ARB Physical Link DWRR MASK Registers
4072 */
4073union nixx_af_pq_lnk_x_dwrr_msk_dbg {
4074 u64 u;
4075 struct nixx_af_pq_lnk_x_dwrr_msk_dbg_s {
4076 u64 link_dwrr_mask_set : 28;
4077 u64 reserved_28_63 : 36;
4078 } s;
4079 /* struct nixx_af_pq_lnk_x_dwrr_msk_dbg_s cn; */
4080};
4081
4082static inline u64 NIXX_AF_PQ_LNK_X_DWRR_MSK_DBG(u64 a)
4083 __attribute__ ((pure, always_inline));
4084static inline u64 NIXX_AF_PQ_LNK_X_DWRR_MSK_DBG(u64 a)
4085{
4086 return 0x1100 + 0x10000 * a;
4087}
4088
4089/**
4090 * Register (RVU_PF_BAR0) nix#_af_pse_400_rate_divider
4091 *
4092 * INTERNAL: NIX AF PSE 400 Rate Divider Register
4093 */
4094union nixx_af_pse_400_rate_divider {
4095 u64 u;
4096 struct nixx_af_pse_400_rate_divider_s {
4097 u64 rate_div_cfg : 9;
4098 u64 reserved_9_63 : 55;
4099 } s;
4100 /* struct nixx_af_pse_400_rate_divider_s cn; */
4101};
4102
4103static inline u64 NIXX_AF_PSE_400_RATE_DIVIDER(void)
4104 __attribute__ ((pure, always_inline));
4105static inline u64 NIXX_AF_PSE_400_RATE_DIVIDER(void)
4106{
4107 return 0x830;
4108}
4109
4110/**
4111 * Register (RVU_PF_BAR0) nix#_af_pse_active_cycles_pc
4112 *
4113 * NIX AF Active Cycles Register These registers are indexed by the
4114 * conditional clock domain number.
4115 */
4116union nixx_af_pse_active_cycles_pc {
4117 u64 u;
4118 struct nixx_af_pse_active_cycles_pc_s {
4119 u64 act_cyc : 64;
4120 } s;
4121 /* struct nixx_af_pse_active_cycles_pc_s cn; */
4122};
4123
4124static inline u64 NIXX_AF_PSE_ACTIVE_CYCLES_PC(void)
4125 __attribute__ ((pure, always_inline));
4126static inline u64 NIXX_AF_PSE_ACTIVE_CYCLES_PC(void)
4127{
4128 return 0x8c0;
4129}
4130
4131/**
4132 * Register (RVU_PF_BAR0) nix#_af_pse_bp_test0
4133 *
4134 * INTERNAL: NIX AF PSE Backpressure Test 0 Register
4135 */
4136union nixx_af_pse_bp_test0 {
4137 u64 u;
4138 struct nixx_af_pse_bp_test0_s {
4139 u64 lfsr_freq : 12;
4140 u64 reserved_12_63 : 52;
4141 } s;
4142 struct nixx_af_pse_bp_test0_cn96xxp1 {
4143 u64 lfsr_freq : 12;
4144 u64 reserved_12_15 : 4;
4145 u64 bp_cfg : 8;
4146 u64 reserved_24_59 : 36;
4147 u64 enable : 4;
4148 } cn96xxp1;
4149 struct nixx_af_pse_bp_test0_cn96xxp3 {
4150 u64 lfsr_freq : 12;
4151 u64 reserved_12_15 : 4;
4152 u64 reserved_16_19 : 4;
4153 u64 bp_cfg : 12;
4154 u64 reserved_32_55 : 24;
4155 u64 reserved_56_57 : 2;
4156 u64 enable : 6;
4157 } cn96xxp3;
4158 /* struct nixx_af_pse_bp_test0_cn96xxp1 cnf95xxp1; */
4159 struct nixx_af_pse_bp_test0_cnf95xxp2 {
4160 u64 lfsr_freq : 12;
4161 u64 reserved_12_15 : 4;
4162 u64 bp_cfg : 8;
4163 u64 reserved_24_31 : 8;
4164 u64 reserved_32_55 : 24;
4165 u64 reserved_56_59 : 4;
4166 u64 enable : 4;
4167 } cnf95xxp2;
4168};
4169
4170static inline u64 NIXX_AF_PSE_BP_TEST0(void)
4171 __attribute__ ((pure, always_inline));
4172static inline u64 NIXX_AF_PSE_BP_TEST0(void)
4173{
4174 return 0x840;
4175}
4176
4177/**
4178 * Register (RVU_PF_BAR0) nix#_af_pse_bp_test1
4179 *
4180 * INTERNAL: NIX AF PSE Backpressure Test 1 Register
4181 */
4182union nixx_af_pse_bp_test1 {
4183 u64 u;
4184 struct nixx_af_pse_bp_test1_s {
4185 u64 lfsr_freq : 12;
4186 u64 reserved_12_15 : 4;
4187 u64 bp_cfg : 10;
4188 u64 reserved_26_63 : 38;
4189 } s;
4190 struct nixx_af_pse_bp_test1_cn96xxp1 {
4191 u64 lfsr_freq : 12;
4192 u64 reserved_12_15 : 4;
4193 u64 bp_cfg : 8;
4194 u64 reserved_24_59 : 36;
4195 u64 enable : 4;
4196 } cn96xxp1;
4197 struct nixx_af_pse_bp_test1_cn96xxp3 {
4198 u64 lfsr_freq : 12;
4199 u64 reserved_12_15 : 4;
4200 u64 bp_cfg : 10;
4201 u64 reserved_26_31 : 6;
4202 u64 reserved_32_55 : 24;
4203 u64 reserved_56_58 : 3;
4204 u64 enable : 5;
4205 } cn96xxp3;
4206 /* struct nixx_af_pse_bp_test1_cn96xxp1 cnf95xxp1; */
4207 struct nixx_af_pse_bp_test1_cnf95xxp2 {
4208 u64 lfsr_freq : 12;
4209 u64 reserved_12_15 : 4;
4210 u64 bp_cfg : 8;
4211 u64 reserved_24_31 : 8;
4212 u64 reserved_32_55 : 24;
4213 u64 reserved_56_59 : 4;
4214 u64 enable : 4;
4215 } cnf95xxp2;
4216};
4217
4218static inline u64 NIXX_AF_PSE_BP_TEST1(void)
4219 __attribute__ ((pure, always_inline));
4220static inline u64 NIXX_AF_PSE_BP_TEST1(void)
4221{
4222 return 0x850;
4223}
4224
4225/**
4226 * Register (RVU_PF_BAR0) nix#_af_pse_bp_test2
4227 *
4228 * INTERNAL: NIX AF PSE Backpressure Test 2 Register
4229 */
4230union nixx_af_pse_bp_test2 {
4231 u64 u;
4232 struct nixx_af_pse_bp_test2_s {
4233 u64 lfsr_freq : 12;
4234 u64 reserved_12_15 : 4;
4235 u64 bp_cfg : 10;
4236 u64 reserved_26_63 : 38;
4237 } s;
4238 struct nixx_af_pse_bp_test2_cn96xxp1 {
4239 u64 lfsr_freq : 12;
4240 u64 reserved_12_15 : 4;
4241 u64 bp_cfg : 8;
4242 u64 reserved_24_59 : 36;
4243 u64 enable : 4;
4244 } cn96xxp1;
4245 struct nixx_af_pse_bp_test2_cn96xxp3 {
4246 u64 lfsr_freq : 12;
4247 u64 reserved_12_15 : 4;
4248 u64 bp_cfg : 10;
4249 u64 reserved_26_31 : 6;
4250 u64 reserved_32_55 : 24;
4251 u64 reserved_56_58 : 3;
4252 u64 enable : 5;
4253 } cn96xxp3;
4254 /* struct nixx_af_pse_bp_test2_cn96xxp1 cnf95xxp1; */
4255 struct nixx_af_pse_bp_test2_cnf95xxp2 {
4256 u64 lfsr_freq : 12;
4257 u64 reserved_12_15 : 4;
4258 u64 bp_cfg : 8;
4259 u64 reserved_24_31 : 8;
4260 u64 reserved_32_55 : 24;
4261 u64 reserved_56_59 : 4;
4262 u64 enable : 4;
4263 } cnf95xxp2;
4264};
4265
4266static inline u64 NIXX_AF_PSE_BP_TEST2(void)
4267 __attribute__ ((pure, always_inline));
4268static inline u64 NIXX_AF_PSE_BP_TEST2(void)
4269{
4270 return 0x860;
4271}
4272
4273/**
4274 * Register (RVU_PF_BAR0) nix#_af_pse_bp_test3
4275 *
4276 * INTERNAL: NIX AF PSE Backpressure Test 3 Register
4277 */
4278union nixx_af_pse_bp_test3 {
4279 u64 u;
4280 struct nixx_af_pse_bp_test3_s {
4281 u64 lfsr_freq : 12;
4282 u64 reserved_12_15 : 4;
4283 u64 bp_cfg : 10;
4284 u64 reserved_26_63 : 38;
4285 } s;
4286 struct nixx_af_pse_bp_test3_cn96xxp1 {
4287 u64 lfsr_freq : 12;
4288 u64 reserved_12_15 : 4;
4289 u64 bp_cfg : 8;
4290 u64 reserved_24_59 : 36;
4291 u64 enable : 4;
4292 } cn96xxp1;
4293 struct nixx_af_pse_bp_test3_cn96xxp3 {
4294 u64 lfsr_freq : 12;
4295 u64 reserved_12_15 : 4;
4296 u64 bp_cfg : 10;
4297 u64 reserved_26_31 : 6;
4298 u64 reserved_32_55 : 24;
4299 u64 reserved_56_58 : 3;
4300 u64 enable : 5;
4301 } cn96xxp3;
4302 /* struct nixx_af_pse_bp_test3_cn96xxp1 cnf95xxp1; */
4303 struct nixx_af_pse_bp_test3_cnf95xxp2 {
4304 u64 lfsr_freq : 12;
4305 u64 reserved_12_15 : 4;
4306 u64 bp_cfg : 8;
4307 u64 reserved_24_31 : 8;
4308 u64 reserved_32_55 : 24;
4309 u64 reserved_56_59 : 4;
4310 u64 enable : 4;
4311 } cnf95xxp2;
4312};
4313
4314static inline u64 NIXX_AF_PSE_BP_TEST3(void)
4315 __attribute__ ((pure, always_inline));
4316static inline u64 NIXX_AF_PSE_BP_TEST3(void)
4317{
4318 return 0x870;
4319}
4320
4321/**
4322 * Register (RVU_PF_BAR0) nix#_af_pse_channel_level
4323 *
4324 * NIX AF PSE Channel Level Register
4325 */
4326union nixx_af_pse_channel_level {
4327 u64 u;
4328 struct nixx_af_pse_channel_level_s {
4329 u64 bp_level : 1;
4330 u64 reserved_1_63 : 63;
4331 } s;
4332 /* struct nixx_af_pse_channel_level_s cn; */
4333};
4334
4335static inline u64 NIXX_AF_PSE_CHANNEL_LEVEL(void)
4336 __attribute__ ((pure, always_inline));
4337static inline u64 NIXX_AF_PSE_CHANNEL_LEVEL(void)
4338{
4339 return 0x800;
4340}
4341
4342/**
4343 * Register (RVU_PF_BAR0) nix#_af_pse_const
4344 *
4345 * NIX AF PSE Constants Register This register contains constants for
4346 * software discovery.
4347 */
4348union nixx_af_pse_const {
4349 u64 u;
4350 struct nixx_af_pse_const_s {
4351 u64 levels : 4;
4352 u64 reserved_4_7 : 4;
4353 u64 mark_formats : 8;
4354 u64 reserved_16_63 : 48;
4355 } s;
4356 /* struct nixx_af_pse_const_s cn; */
4357};
4358
4359static inline u64 NIXX_AF_PSE_CONST(void)
4360 __attribute__ ((pure, always_inline));
4361static inline u64 NIXX_AF_PSE_CONST(void)
4362{
4363 return 0x60;
4364}
4365
4366/**
4367 * Register (RVU_PF_BAR0) nix#_af_pse_eco
4368 *
4369 * INTERNAL: AF PSE ECO Register
4370 */
4371union nixx_af_pse_eco {
4372 u64 u;
4373 struct nixx_af_pse_eco_s {
4374 u64 eco_rw : 64;
4375 } s;
4376 /* struct nixx_af_pse_eco_s cn; */
4377};
4378
4379static inline u64 NIXX_AF_PSE_ECO(void)
4380 __attribute__ ((pure, always_inline));
4381static inline u64 NIXX_AF_PSE_ECO(void)
4382{
4383 return 0x5d0;
4384}
4385
4386/**
4387 * Register (RVU_PF_BAR0) nix#_af_pse_expr_bp_test
4388 *
4389 * INTERNAL: NIX AF PSE Express Backpressure Test Register Internal:
4390 * 802.3br frame preemption/express path is defeatured.
4391 */
4392union nixx_af_pse_expr_bp_test {
4393 u64 u;
4394 struct nixx_af_pse_expr_bp_test_s {
4395 u64 lfsr_freq : 12;
4396 u64 reserved_12_15 : 4;
4397 u64 bp_cfg : 32;
4398 u64 enable : 16;
4399 } s;
4400 /* struct nixx_af_pse_expr_bp_test_s cn; */
4401};
4402
4403static inline u64 NIXX_AF_PSE_EXPR_BP_TEST(void)
4404 __attribute__ ((pure, always_inline));
4405static inline u64 NIXX_AF_PSE_EXPR_BP_TEST(void)
4406{
4407 return 0x890;
4408}
4409
4410/**
4411 * Register (RVU_PF_BAR0) nix#_af_pse_norm_bp_test
4412 *
4413 * INTERNAL: NIX AF PSE Normal Backpressure Test Register
4414 */
4415union nixx_af_pse_norm_bp_test {
4416 u64 u;
4417 struct nixx_af_pse_norm_bp_test_s {
4418 u64 lfsr_freq : 12;
4419 u64 reserved_12_15 : 4;
4420 u64 bp_cfg : 32;
4421 u64 reserved_48_63 : 16;
4422 } s;
4423 struct nixx_af_pse_norm_bp_test_cn96xxp1 {
4424 u64 lfsr_freq : 12;
4425 u64 reserved_12_15 : 4;
4426 u64 bp_cfg : 32;
4427 u64 enable : 16;
4428 } cn96xxp1;
4429 struct nixx_af_pse_norm_bp_test_cn96xxp3 {
4430 u64 lfsr_freq : 12;
4431 u64 reserved_12_15 : 4;
4432 u64 bp_cfg : 12;
4433 u64 reserved_28_57 : 30;
4434 u64 enable : 6;
4435 } cn96xxp3;
4436 /* struct nixx_af_pse_norm_bp_test_cn96xxp1 cnf95xx; */
4437};
4438
4439static inline u64 NIXX_AF_PSE_NORM_BP_TEST(void)
4440 __attribute__ ((pure, always_inline));
4441static inline u64 NIXX_AF_PSE_NORM_BP_TEST(void)
4442{
4443 return 0x880;
4444}
4445
4446/**
4447 * Register (RVU_PF_BAR0) nix#_af_pse_shaper_cfg
4448 *
4449 * NIX AF PSE Shaper Configuration Register
4450 */
4451union nixx_af_pse_shaper_cfg {
4452 u64 u;
4453 struct nixx_af_pse_shaper_cfg_s {
4454 u64 red_send_as_yellow : 1;
4455 u64 color_aware : 1;
4456 u64 reserved_2_63 : 62;
4457 } s;
4458 /* struct nixx_af_pse_shaper_cfg_s cn; */
4459};
4460
4461static inline u64 NIXX_AF_PSE_SHAPER_CFG(void)
4462 __attribute__ ((pure, always_inline));
4463static inline u64 NIXX_AF_PSE_SHAPER_CFG(void)
4464{
4465 return 0x810;
4466}
4467
4468/**
4469 * Register (RVU_PF_BAR0) nix#_af_ras
4470 *
4471 * NIX AF RAS Interrupt Register This register is intended for delivery
4472 * of RAS events to the SCP, so should be ignored by OS drivers.
4473 */
4474union nixx_af_ras {
4475 u64 u;
4476 struct nixx_af_ras_s {
4477 u64 rx_mce_poison : 1;
4478 u64 rx_mcast_wqe_poison : 1;
4479 u64 rx_mirror_wqe_poison : 1;
4480 u64 rx_mcast_data_poison : 1;
4481 u64 rx_mirror_data_poison : 1;
4482 u64 reserved_5_31 : 27;
4483 u64 aq_ctx_poison : 1;
4484 u64 aq_res_poison : 1;
4485 u64 aq_inst_poison : 1;
4486 u64 reserved_35_63 : 29;
4487 } s;
4488 /* struct nixx_af_ras_s cn; */
4489};
4490
4491static inline u64 NIXX_AF_RAS(void)
4492 __attribute__ ((pure, always_inline));
4493static inline u64 NIXX_AF_RAS(void)
4494{
4495 return 0x1a0;
4496}
4497
4498/**
4499 * Register (RVU_PF_BAR0) nix#_af_ras_ena_w1c
4500 *
4501 * NIX AF RAS Interrupt Enable Clear Register This register clears
4502 * interrupt enable bits.
4503 */
4504union nixx_af_ras_ena_w1c {
4505 u64 u;
4506 struct nixx_af_ras_ena_w1c_s {
4507 u64 rx_mce_poison : 1;
4508 u64 rx_mcast_wqe_poison : 1;
4509 u64 rx_mirror_wqe_poison : 1;
4510 u64 rx_mcast_data_poison : 1;
4511 u64 rx_mirror_data_poison : 1;
4512 u64 reserved_5_31 : 27;
4513 u64 aq_ctx_poison : 1;
4514 u64 aq_res_poison : 1;
4515 u64 aq_inst_poison : 1;
4516 u64 reserved_35_63 : 29;
4517 } s;
4518 /* struct nixx_af_ras_ena_w1c_s cn; */
4519};
4520
4521static inline u64 NIXX_AF_RAS_ENA_W1C(void)
4522 __attribute__ ((pure, always_inline));
4523static inline u64 NIXX_AF_RAS_ENA_W1C(void)
4524{
4525 return 0x1b8;
4526}
4527
4528/**
4529 * Register (RVU_PF_BAR0) nix#_af_ras_ena_w1s
4530 *
4531 * NIX AF RAS Interrupt Enable Set Register This register sets interrupt
4532 * enable bits.
4533 */
4534union nixx_af_ras_ena_w1s {
4535 u64 u;
4536 struct nixx_af_ras_ena_w1s_s {
4537 u64 rx_mce_poison : 1;
4538 u64 rx_mcast_wqe_poison : 1;
4539 u64 rx_mirror_wqe_poison : 1;
4540 u64 rx_mcast_data_poison : 1;
4541 u64 rx_mirror_data_poison : 1;
4542 u64 reserved_5_31 : 27;
4543 u64 aq_ctx_poison : 1;
4544 u64 aq_res_poison : 1;
4545 u64 aq_inst_poison : 1;
4546 u64 reserved_35_63 : 29;
4547 } s;
4548 /* struct nixx_af_ras_ena_w1s_s cn; */
4549};
4550
4551static inline u64 NIXX_AF_RAS_ENA_W1S(void)
4552 __attribute__ ((pure, always_inline));
4553static inline u64 NIXX_AF_RAS_ENA_W1S(void)
4554{
4555 return 0x1b0;
4556}
4557
4558/**
4559 * Register (RVU_PF_BAR0) nix#_af_ras_w1s
4560 *
4561 * NIX AF RAS Interrupt Set Register This register sets interrupt bits.
4562 */
4563union nixx_af_ras_w1s {
4564 u64 u;
4565 struct nixx_af_ras_w1s_s {
4566 u64 rx_mce_poison : 1;
4567 u64 rx_mcast_wqe_poison : 1;
4568 u64 rx_mirror_wqe_poison : 1;
4569 u64 rx_mcast_data_poison : 1;
4570 u64 rx_mirror_data_poison : 1;
4571 u64 reserved_5_31 : 27;
4572 u64 aq_ctx_poison : 1;
4573 u64 aq_res_poison : 1;
4574 u64 aq_inst_poison : 1;
4575 u64 reserved_35_63 : 29;
4576 } s;
4577 /* struct nixx_af_ras_w1s_s cn; */
4578};
4579
4580static inline u64 NIXX_AF_RAS_W1S(void)
4581 __attribute__ ((pure, always_inline));
4582static inline u64 NIXX_AF_RAS_W1S(void)
4583{
4584 return 0x1a8;
4585}
4586
4587/**
4588 * Register (RVU_PF_BAR0) nix#_af_reb_bp_test#
4589 *
4590 * INTERNAL: NIX AF REB Backpressure Test Registers
4591 */
4592union nixx_af_reb_bp_testx {
4593 u64 u;
4594 struct nixx_af_reb_bp_testx_s {
4595 u64 lfsr_freq : 12;
4596 u64 reserved_12_15 : 4;
4597 u64 bp_cfg : 8;
4598 u64 reserved_24_47 : 24;
4599 u64 enable : 4;
4600 u64 reserved_52_63 : 12;
4601 } s;
4602 /* struct nixx_af_reb_bp_testx_s cn; */
4603};
4604
4605static inline u64 NIXX_AF_REB_BP_TESTX(u64 a)
4606 __attribute__ ((pure, always_inline));
4607static inline u64 NIXX_AF_REB_BP_TESTX(u64 a)
4608{
4609 return 0x4840 + 0x10000 * a;
4610}
4611
4612/**
4613 * Register (RVU_PF_BAR0) nix#_af_rq_const
4614 *
4615 * NIX AF RQ Constants Register This register contains constants for
4616 * software discovery.
4617 */
4618union nixx_af_rq_const {
4619 u64 u;
4620 struct nixx_af_rq_const_s {
4621 u64 queues_per_lf : 24;
4622 u64 reserved_24_63 : 40;
4623 } s;
4624 /* struct nixx_af_rq_const_s cn; */
4625};
4626
4627static inline u64 NIXX_AF_RQ_CONST(void)
4628 __attribute__ ((pure, always_inline));
4629static inline u64 NIXX_AF_RQ_CONST(void)
4630{
4631 return 0x50;
4632}
4633
4634/**
4635 * Register (RVU_PF_BAR0) nix#_af_rqm_bp_test
4636 *
4637 * INTERNAL: NIX AF REB Backpressure Test Registers
4638 */
4639union nixx_af_rqm_bp_test {
4640 u64 u;
4641 struct nixx_af_rqm_bp_test_s {
4642 u64 lfsr_freq : 12;
4643 u64 reserved_12_15 : 4;
4644 u64 bp_cfg : 16;
4645 u64 reserved_32_47 : 16;
4646 u64 enable : 8;
4647 u64 reserved_56_63 : 8;
4648 } s;
4649 /* struct nixx_af_rqm_bp_test_s cn; */
4650};
4651
4652static inline u64 NIXX_AF_RQM_BP_TEST(void)
4653 __attribute__ ((pure, always_inline));
4654static inline u64 NIXX_AF_RQM_BP_TEST(void)
4655{
4656 return 0x4880;
4657}
4658
4659/**
4660 * Register (RVU_PF_BAR0) nix#_af_rqm_eco
4661 *
4662 * INTERNAL: AF RQM ECO Register
4663 */
4664union nixx_af_rqm_eco {
4665 u64 u;
4666 struct nixx_af_rqm_eco_s {
4667 u64 eco_rw : 64;
4668 } s;
4669 /* struct nixx_af_rqm_eco_s cn; */
4670};
4671
4672static inline u64 NIXX_AF_RQM_ECO(void)
4673 __attribute__ ((pure, always_inline));
4674static inline u64 NIXX_AF_RQM_ECO(void)
4675{
4676 return 0x5a0;
4677}
4678
4679/**
4680 * Register (RVU_PF_BAR0) nix#_af_rvu_int
4681 *
4682 * NIX AF RVU Interrupt Register This register contains RVU error
4683 * interrupt summary bits.
4684 */
4685union nixx_af_rvu_int {
4686 u64 u;
4687 struct nixx_af_rvu_int_s {
4688 u64 unmapped_slot : 1;
4689 u64 reserved_1_63 : 63;
4690 } s;
4691 /* struct nixx_af_rvu_int_s cn; */
4692};
4693
4694static inline u64 NIXX_AF_RVU_INT(void)
4695 __attribute__ ((pure, always_inline));
4696static inline u64 NIXX_AF_RVU_INT(void)
4697{
4698 return 0x1c0;
4699}
4700
4701/**
4702 * Register (RVU_PF_BAR0) nix#_af_rvu_int_ena_w1c
4703 *
4704 * NIX AF RVU Interrupt Enable Clear Register This register clears
4705 * interrupt enable bits.
4706 */
4707union nixx_af_rvu_int_ena_w1c {
4708 u64 u;
4709 struct nixx_af_rvu_int_ena_w1c_s {
4710 u64 unmapped_slot : 1;
4711 u64 reserved_1_63 : 63;
4712 } s;
4713 /* struct nixx_af_rvu_int_ena_w1c_s cn; */
4714};
4715
4716static inline u64 NIXX_AF_RVU_INT_ENA_W1C(void)
4717 __attribute__ ((pure, always_inline));
4718static inline u64 NIXX_AF_RVU_INT_ENA_W1C(void)
4719{
4720 return 0x1d8;
4721}
4722
4723/**
4724 * Register (RVU_PF_BAR0) nix#_af_rvu_int_ena_w1s
4725 *
4726 * NIX AF RVU Interrupt Enable Set Register This register sets interrupt
4727 * enable bits.
4728 */
4729union nixx_af_rvu_int_ena_w1s {
4730 u64 u;
4731 struct nixx_af_rvu_int_ena_w1s_s {
4732 u64 unmapped_slot : 1;
4733 u64 reserved_1_63 : 63;
4734 } s;
4735 /* struct nixx_af_rvu_int_ena_w1s_s cn; */
4736};
4737
4738static inline u64 NIXX_AF_RVU_INT_ENA_W1S(void)
4739 __attribute__ ((pure, always_inline));
4740static inline u64 NIXX_AF_RVU_INT_ENA_W1S(void)
4741{
4742 return 0x1d0;
4743}
4744
4745/**
4746 * Register (RVU_PF_BAR0) nix#_af_rvu_int_w1s
4747 *
4748 * NIX AF RVU Interrupt Set Register This register sets interrupt bits.
4749 */
4750union nixx_af_rvu_int_w1s {
4751 u64 u;
4752 struct nixx_af_rvu_int_w1s_s {
4753 u64 unmapped_slot : 1;
4754 u64 reserved_1_63 : 63;
4755 } s;
4756 /* struct nixx_af_rvu_int_w1s_s cn; */
4757};
4758
4759static inline u64 NIXX_AF_RVU_INT_W1S(void)
4760 __attribute__ ((pure, always_inline));
4761static inline u64 NIXX_AF_RVU_INT_W1S(void)
4762{
4763 return 0x1c8;
4764}
4765
4766/**
4767 * Register (RVU_PF_BAR0) nix#_af_rvu_lf_cfg_debug
4768 *
4769 * NIX Privileged LF Configuration Debug Register This debug register
4770 * allows software to lookup the reverse mapping from VF/PF slot to LF.
4771 * The forward mapping is programmed with NIX_PRIV_LF()_CFG.
4772 */
4773union nixx_af_rvu_lf_cfg_debug {
4774 u64 u;
4775 struct nixx_af_rvu_lf_cfg_debug_s {
4776 u64 lf : 12;
4777 u64 lf_valid : 1;
4778 u64 exec : 1;
4779 u64 reserved_14_15 : 2;
4780 u64 slot : 8;
4781 u64 pf_func : 16;
4782 u64 reserved_40_63 : 24;
4783 } s;
4784 /* struct nixx_af_rvu_lf_cfg_debug_s cn; */
4785};
4786
4787static inline u64 NIXX_AF_RVU_LF_CFG_DEBUG(void)
4788 __attribute__ ((pure, always_inline));
4789static inline u64 NIXX_AF_RVU_LF_CFG_DEBUG(void)
4790{
4791 return 0x8000030;
4792}
4793
4794/**
4795 * Register (RVU_PF_BAR0) nix#_af_rx_active_cycles_pc#
4796 *
4797 * NIX AF Active Cycles Register These registers are indexed by the
4798 * conditional clock domain number.
4799 */
4800union nixx_af_rx_active_cycles_pcx {
4801 u64 u;
4802 struct nixx_af_rx_active_cycles_pcx_s {
4803 u64 act_cyc : 64;
4804 } s;
4805 /* struct nixx_af_rx_active_cycles_pcx_s cn; */
4806};
4807
4808static inline u64 NIXX_AF_RX_ACTIVE_CYCLES_PCX(u64 a)
4809 __attribute__ ((pure, always_inline));
4810static inline u64 NIXX_AF_RX_ACTIVE_CYCLES_PCX(u64 a)
4811{
4812 return 0x4800 + 0x10000 * a;
4813}
4814
4815/**
4816 * Register (RVU_PF_BAR0) nix#_af_rx_bpid#_status
4817 *
4818 * NIX AF Receive Backpressure ID Status Registers
4819 */
4820union nixx_af_rx_bpidx_status {
4821 u64 u;
4822 struct nixx_af_rx_bpidx_status_s {
4823 u64 aura_cnt : 32;
4824 u64 cq_cnt : 32;
4825 } s;
4826 /* struct nixx_af_rx_bpidx_status_s cn; */
4827};
4828
4829static inline u64 NIXX_AF_RX_BPIDX_STATUS(u64 a)
4830 __attribute__ ((pure, always_inline));
4831static inline u64 NIXX_AF_RX_BPIDX_STATUS(u64 a)
4832{
4833 return 0x1a20 + 0x20000 * a;
4834}
4835
4836/**
4837 * Register (RVU_PF_BAR0) nix#_af_rx_cfg
4838 *
4839 * NIX AF Receive Configuration Register
4840 */
4841union nixx_af_rx_cfg {
4842 u64 u;
4843 struct nixx_af_rx_cfg_s {
4844 u64 cbp_ena : 1;
4845 u64 reserved_1_63 : 63;
4846 } s;
4847 /* struct nixx_af_rx_cfg_s cn; */
4848};
4849
4850static inline u64 NIXX_AF_RX_CFG(void)
4851 __attribute__ ((pure, always_inline));
4852static inline u64 NIXX_AF_RX_CFG(void)
4853{
4854 return 0xd0;
4855}
4856
4857/**
4858 * Register (RVU_PF_BAR0) nix#_af_rx_chan#_cfg
4859 *
4860 * NIX AF Receive Channel Configuration Registers
4861 */
4862union nixx_af_rx_chanx_cfg {
4863 u64 u;
4864 struct nixx_af_rx_chanx_cfg_s {
4865 u64 bpid : 9;
4866 u64 reserved_9_15 : 7;
4867 u64 bp_ena : 1;
4868 u64 sw_xoff : 1;
4869 u64 imp : 1;
4870 u64 reserved_19_63 : 45;
4871 } s;
4872 /* struct nixx_af_rx_chanx_cfg_s cn; */
4873};
4874
4875static inline u64 NIXX_AF_RX_CHANX_CFG(u64 a)
4876 __attribute__ ((pure, always_inline));
4877static inline u64 NIXX_AF_RX_CHANX_CFG(u64 a)
4878{
4879 return 0x1a30 + 0x8000 * a;
4880}
4881
4882/**
4883 * Register (RVU_PF_BAR0) nix#_af_rx_cpt#_credit
4884 *
4885 * INTERNAL: NIX AF Receive CPT Credit Register Internal: Not used; no
4886 * IPSEC fast-path.
4887 */
4888union nixx_af_rx_cptx_credit {
4889 u64 u;
4890 struct nixx_af_rx_cptx_credit_s {
4891 u64 inst_cred_cnt : 22;
4892 u64 reserved_22_63 : 42;
4893 } s;
4894 /* struct nixx_af_rx_cptx_credit_s cn; */
4895};
4896
4897static inline u64 NIXX_AF_RX_CPTX_CREDIT(u64 a)
4898 __attribute__ ((pure, always_inline));
4899static inline u64 NIXX_AF_RX_CPTX_CREDIT(u64 a)
4900{
4901 return 0x360 + 8 * a;
4902}
4903
4904/**
4905 * Register (RVU_PF_BAR0) nix#_af_rx_cpt#_inst_qsel
4906 *
4907 * INTERNAL: NIX AF Receive CPT Instruction Queue Select Register
4908 * Internal: Not used; no IPSEC fast-path.
4909 */
4910union nixx_af_rx_cptx_inst_qsel {
4911 u64 u;
4912 struct nixx_af_rx_cptx_inst_qsel_s {
4913 u64 slot : 8;
4914 u64 pf_func : 16;
4915 u64 reserved_24_63 : 40;
4916 } s;
4917 /* struct nixx_af_rx_cptx_inst_qsel_s cn; */
4918};
4919
4920static inline u64 NIXX_AF_RX_CPTX_INST_QSEL(u64 a)
4921 __attribute__ ((pure, always_inline));
4922static inline u64 NIXX_AF_RX_CPTX_INST_QSEL(u64 a)
4923{
4924 return 0x320 + 8 * a;
4925}
4926
4927/**
4928 * Register (RVU_PF_BAR0) nix#_af_rx_def_iip4
4929 *
4930 * NIX AF Receive Inner IPv4 Header Definition Register Defines layer
4931 * information in NPC_RESULT_S to identify an inner IPv4 header.
4932 * Typically the same as NPC_AF_PCK_DEF_IIP4.
4933 */
4934union nixx_af_rx_def_iip4 {
4935 u64 u;
4936 struct nixx_af_rx_def_iip4_s {
4937 u64 ltype_mask : 4;
4938 u64 ltype_match : 4;
4939 u64 lid : 3;
4940 u64 reserved_11_63 : 53;
4941 } s;
4942 /* struct nixx_af_rx_def_iip4_s cn; */
4943};
4944
4945static inline u64 NIXX_AF_RX_DEF_IIP4(void)
4946 __attribute__ ((pure, always_inline));
4947static inline u64 NIXX_AF_RX_DEF_IIP4(void)
4948{
4949 return 0x220;
4950}
4951
4952/**
4953 * Register (RVU_PF_BAR0) nix#_af_rx_def_iip6
4954 *
4955 * NIX AF Receive Inner IPv6 Header Definition Register Defines layer
4956 * information in NPC_RESULT_S to identify an inner IPv6 header.
4957 */
4958union nixx_af_rx_def_iip6 {
4959 u64 u;
4960 struct nixx_af_rx_def_iip6_s {
4961 u64 ltype_mask : 4;
4962 u64 ltype_match : 4;
4963 u64 lid : 3;
4964 u64 reserved_11_63 : 53;
4965 } s;
4966 /* struct nixx_af_rx_def_iip6_s cn; */
4967};
4968
4969static inline u64 NIXX_AF_RX_DEF_IIP6(void)
4970 __attribute__ ((pure, always_inline));
4971static inline u64 NIXX_AF_RX_DEF_IIP6(void)
4972{
4973 return 0x240;
4974}
4975
4976/**
4977 * Register (RVU_PF_BAR0) nix#_af_rx_def_ipsec#
4978 *
4979 * INTERNAL: NIX AF Receive IPSEC Header Definition Registers Internal:
4980 * Not used; no IPSEC fast-path.
4981 */
4982union nixx_af_rx_def_ipsecx {
4983 u64 u;
4984 struct nixx_af_rx_def_ipsecx_s {
4985 u64 ltype_mask : 4;
4986 u64 ltype_match : 4;
4987 u64 lid : 3;
4988 u64 reserved_11 : 1;
4989 u64 spi_offset : 4;
4990 u64 spi_nz : 1;
4991 u64 reserved_17_63 : 47;
4992 } s;
4993 /* struct nixx_af_rx_def_ipsecx_s cn; */
4994};
4995
4996static inline u64 NIXX_AF_RX_DEF_IPSECX(u64 a)
4997 __attribute__ ((pure, always_inline));
4998static inline u64 NIXX_AF_RX_DEF_IPSECX(u64 a)
4999{
5000 return 0x2b0 + 8 * a;
5001}
5002
5003/**
5004 * Register (RVU_PF_BAR0) nix#_af_rx_def_isctp
5005 *
5006 * NIX AF Receive Inner SCTP Header Definition Register Defines layer
5007 * information in NPC_RESULT_S to identify an inner SCTP header.
5008 */
5009union nixx_af_rx_def_isctp {
5010 u64 u;
5011 struct nixx_af_rx_def_isctp_s {
5012 u64 ltype_mask : 4;
5013 u64 ltype_match : 4;
5014 u64 lid : 3;
5015 u64 reserved_11_63 : 53;
5016 } s;
5017 /* struct nixx_af_rx_def_isctp_s cn; */
5018};
5019
5020static inline u64 NIXX_AF_RX_DEF_ISCTP(void)
5021 __attribute__ ((pure, always_inline));
5022static inline u64 NIXX_AF_RX_DEF_ISCTP(void)
5023{
5024 return 0x2a0;
5025}
5026
5027/**
5028 * Register (RVU_PF_BAR0) nix#_af_rx_def_itcp
5029 *
5030 * NIX AF Receive Inner TCP Header Definition Register Defines layer
5031 * information in NPC_RESULT_S to identify an inner TCP header.
5032 */
5033union nixx_af_rx_def_itcp {
5034 u64 u;
5035 struct nixx_af_rx_def_itcp_s {
5036 u64 ltype_mask : 4;
5037 u64 ltype_match : 4;
5038 u64 lid : 3;
5039 u64 reserved_11_63 : 53;
5040 } s;
5041 /* struct nixx_af_rx_def_itcp_s cn; */
5042};
5043
5044static inline u64 NIXX_AF_RX_DEF_ITCP(void)
5045 __attribute__ ((pure, always_inline));
5046static inline u64 NIXX_AF_RX_DEF_ITCP(void)
5047{
5048 return 0x260;
5049}
5050
5051/**
5052 * Register (RVU_PF_BAR0) nix#_af_rx_def_iudp
5053 *
5054 * NIX AF Receive Inner UDP Header Definition Register Defines layer
5055 * information in NPC_RESULT_S to identify an inner UDP header.
5056 */
5057union nixx_af_rx_def_iudp {
5058 u64 u;
5059 struct nixx_af_rx_def_iudp_s {
5060 u64 ltype_mask : 4;
5061 u64 ltype_match : 4;
5062 u64 lid : 3;
5063 u64 reserved_11_63 : 53;
5064 } s;
5065 /* struct nixx_af_rx_def_iudp_s cn; */
5066};
5067
5068static inline u64 NIXX_AF_RX_DEF_IUDP(void)
5069 __attribute__ ((pure, always_inline));
5070static inline u64 NIXX_AF_RX_DEF_IUDP(void)
5071{
5072 return 0x280;
5073}
5074
5075/**
5076 * Register (RVU_PF_BAR0) nix#_af_rx_def_oip4
5077 *
5078 * NIX AF Receive Outer IPv4 Header Definition Register Defines layer
5079 * information in NPC_RESULT_S to identify an outer IPv4 L3 header.
5080 * Typically the same as NPC_AF_PCK_DEF_OIP4.
5081 */
5082union nixx_af_rx_def_oip4 {
5083 u64 u;
5084 struct nixx_af_rx_def_oip4_s {
5085 u64 ltype_mask : 4;
5086 u64 ltype_match : 4;
5087 u64 lid : 3;
5088 u64 reserved_11_63 : 53;
5089 } s;
5090 /* struct nixx_af_rx_def_oip4_s cn; */
5091};
5092
5093static inline u64 NIXX_AF_RX_DEF_OIP4(void)
5094 __attribute__ ((pure, always_inline));
5095static inline u64 NIXX_AF_RX_DEF_OIP4(void)
5096{
5097 return 0x210;
5098}
5099
5100/**
5101 * Register (RVU_PF_BAR0) nix#_af_rx_def_oip6
5102 *
5103 * NIX AF Receive Outer IPv6 Header Definition Register Defines layer
5104 * information in NPC_RESULT_S to identify an outer IPv6 header.
5105 * Typically the same as NPC_AF_PCK_DEF_OIP6.
5106 */
5107union nixx_af_rx_def_oip6 {
5108 u64 u;
5109 struct nixx_af_rx_def_oip6_s {
5110 u64 ltype_mask : 4;
5111 u64 ltype_match : 4;
5112 u64 lid : 3;
5113 u64 reserved_11_63 : 53;
5114 } s;
5115 /* struct nixx_af_rx_def_oip6_s cn; */
5116};
5117
5118static inline u64 NIXX_AF_RX_DEF_OIP6(void)
5119 __attribute__ ((pure, always_inline));
5120static inline u64 NIXX_AF_RX_DEF_OIP6(void)
5121{
5122 return 0x230;
5123}
5124
5125/**
5126 * Register (RVU_PF_BAR0) nix#_af_rx_def_ol2
5127 *
5128 * NIX AF Receive Outer L2 Header Definition Register Defines layer
5129 * information in NPC_RESULT_S to identify an outer L2/Ethernet header.
5130 * Typically the same as NPC_AF_PCK_DEF_OL2.
5131 */
5132union nixx_af_rx_def_ol2 {
5133 u64 u;
5134 struct nixx_af_rx_def_ol2_s {
5135 u64 ltype_mask : 4;
5136 u64 ltype_match : 4;
5137 u64 lid : 3;
5138 u64 reserved_11_63 : 53;
5139 } s;
5140 /* struct nixx_af_rx_def_ol2_s cn; */
5141};
5142
5143static inline u64 NIXX_AF_RX_DEF_OL2(void)
5144 __attribute__ ((pure, always_inline));
5145static inline u64 NIXX_AF_RX_DEF_OL2(void)
5146{
5147 return 0x200;
5148}
5149
5150/**
5151 * Register (RVU_PF_BAR0) nix#_af_rx_def_osctp
5152 *
5153 * NIX AF Receive Outer SCTP Header Definition Register Defines layer
5154 * information in NPC_RESULT_S to identify an outer SCTP header.
5155 */
5156union nixx_af_rx_def_osctp {
5157 u64 u;
5158 struct nixx_af_rx_def_osctp_s {
5159 u64 ltype_mask : 4;
5160 u64 ltype_match : 4;
5161 u64 lid : 3;
5162 u64 reserved_11_63 : 53;
5163 } s;
5164 /* struct nixx_af_rx_def_osctp_s cn; */
5165};
5166
5167static inline u64 NIXX_AF_RX_DEF_OSCTP(void)
5168 __attribute__ ((pure, always_inline));
5169static inline u64 NIXX_AF_RX_DEF_OSCTP(void)
5170{
5171 return 0x290;
5172}
5173
5174/**
5175 * Register (RVU_PF_BAR0) nix#_af_rx_def_otcp
5176 *
5177 * NIX AF Receive Outer TCP Header Definition Register Defines layer
5178 * information in NPC_RESULT_S to identify an outer TCP header.
5179 */
5180union nixx_af_rx_def_otcp {
5181 u64 u;
5182 struct nixx_af_rx_def_otcp_s {
5183 u64 ltype_mask : 4;
5184 u64 ltype_match : 4;
5185 u64 lid : 3;
5186 u64 reserved_11_63 : 53;
5187 } s;
5188 /* struct nixx_af_rx_def_otcp_s cn; */
5189};
5190
5191static inline u64 NIXX_AF_RX_DEF_OTCP(void)
5192 __attribute__ ((pure, always_inline));
5193static inline u64 NIXX_AF_RX_DEF_OTCP(void)
5194{
5195 return 0x250;
5196}
5197
5198/**
5199 * Register (RVU_PF_BAR0) nix#_af_rx_def_oudp
5200 *
5201 * NIX AF Receive Outer UDP Header Definition Register Defines layer
5202 * information in NPC_RESULT_S to identify an outer UDP header.
5203 */
5204union nixx_af_rx_def_oudp {
5205 u64 u;
5206 struct nixx_af_rx_def_oudp_s {
5207 u64 ltype_mask : 4;
5208 u64 ltype_match : 4;
5209 u64 lid : 3;
5210 u64 reserved_11_63 : 53;
5211 } s;
5212 /* struct nixx_af_rx_def_oudp_s cn; */
5213};
5214
5215static inline u64 NIXX_AF_RX_DEF_OUDP(void)
5216 __attribute__ ((pure, always_inline));
5217static inline u64 NIXX_AF_RX_DEF_OUDP(void)
5218{
5219 return 0x270;
5220}
5221
5222/**
5223 * Register (RVU_PF_BAR0) nix#_af_rx_flow_key_alg#_field#
5224 *
5225 * NIX AF Receive Flow Key Algorithm Field Registers A flow key algorithm
5226 * defines how the 40-byte FLOW_KEY is formed from the received packet
5227 * header. FLOW_KEY is formed using up to five header fields (this
5228 * register's last index) with up to 16 bytes per field. Header fields
5229 * must not overlap in FLOW_KEY. The algorithm (index {a} (ALG) of these
5230 * registers) is selected by NIX_RX_ACTION_S[FLOW_KEY_ALG] from the
5231 * packet's NPC_RESULT_S[ACTION]. Internal: 40-byte FLOW_KEY is wide
5232 * enough to support an IPv6 5-tuple that includes a VXLAN/GENEVE/NVGRE
5233 * tunnel ID, e.g: _ Source IP: 16B. _ Dest IP: 16B. _ Source port: 2B. _
5234 * Dest port: 2B. _ Tunnel VNI/VSI: 3B. _ Total: 39B.
5235 */
5236union nixx_af_rx_flow_key_algx_fieldx {
5237 u64 u;
5238 struct nixx_af_rx_flow_key_algx_fieldx_s {
5239 u64 key_offset : 6;
5240 u64 ln_mask : 1;
5241 u64 fn_mask : 1;
5242 u64 hdr_offset : 8;
5243 u64 bytesm1 : 5;
5244 u64 lid : 3;
5245 u64 reserved_24 : 1;
5246 u64 ena : 1;
5247 u64 sel_chan : 1;
5248 u64 ltype_mask : 4;
5249 u64 ltype_match : 4;
5250 u64 reserved_35_63 : 29;
5251 } s;
5252 /* struct nixx_af_rx_flow_key_algx_fieldx_s cn; */
5253};
5254
5255static inline u64 NIXX_AF_RX_FLOW_KEY_ALGX_FIELDX(u64 a, u64 b)
5256 __attribute__ ((pure, always_inline));
5257static inline u64 NIXX_AF_RX_FLOW_KEY_ALGX_FIELDX(u64 a, u64 b)
5258{
5259 return 0x1800 + 0x40000 * a + 8 * b;
5260}
5261
5262/**
5263 * Register (RVU_PF_BAR0) nix#_af_rx_ipsec_gen_cfg
5264 *
5265 * INTERNAL: NIX AF Receive IPSEC General Configuration Register
5266 * Internal: Not used; no IPSEC fast-path.
5267 */
5268union nixx_af_rx_ipsec_gen_cfg {
5269 u64 u;
5270 struct nixx_af_rx_ipsec_gen_cfg_s {
5271 u64 param2 : 16;
5272 u64 param1 : 16;
5273 u64 opcode : 16;
5274 u64 egrp : 3;
5275 u64 reserved_51_63 : 13;
5276 } s;
5277 /* struct nixx_af_rx_ipsec_gen_cfg_s cn; */
5278};
5279
5280static inline u64 NIXX_AF_RX_IPSEC_GEN_CFG(void)
5281 __attribute__ ((pure, always_inline));
5282static inline u64 NIXX_AF_RX_IPSEC_GEN_CFG(void)
5283{
5284 return 0x300;
5285}
5286
5287/**
5288 * Register (RVU_PF_BAR0) nix#_af_rx_link#_cfg
5289 *
5290 * NIX AF Receive Link Configuration Registers Index enumerated by
5291 * NIX_LINK_E.
5292 */
5293union nixx_af_rx_linkx_cfg {
5294 u64 u;
5295 struct nixx_af_rx_linkx_cfg_s {
5296 u64 minlen : 16;
5297 u64 maxlen : 16;
5298 u64 reserved_32_63 : 32;
5299 } s;
5300 /* struct nixx_af_rx_linkx_cfg_s cn; */
5301};
5302
5303static inline u64 NIXX_AF_RX_LINKX_CFG(u64 a)
5304 __attribute__ ((pure, always_inline));
5305static inline u64 NIXX_AF_RX_LINKX_CFG(u64 a)
5306{
5307 return 0x540 + 0x10000 * a;
5308}
5309
5310/**
5311 * Register (RVU_PF_BAR0) nix#_af_rx_link#_sl#_spkt_cnt
5312 *
5313 * INTERNAL: NIX Receive Software Sync Link Packet Count Registers For
5314 * diagnostic use only for debug of NIX_AF_RX_SW_SYNC[ENA] function. LINK
5315 * index is enumerated by NIX_LINK_E. For the internal multicast/mirror
5316 * link (NIX_LINK_E::MC), SL index is zero for multicast replay, one for
5317 * mirror replay. SL index one is reserved for all other links.
5318 * Internal: 802.3br frame preemption/express path is defeatured. Old
5319 * definition of SL index: SL index is zero for non-express packets, one
5320 * for express packets. For the internal NIX_LINK_E::MC, SL index is zero
5321 * for multicast replay, one for mirror replay.
5322 */
5323union nixx_af_rx_linkx_slx_spkt_cnt {
5324 u64 u;
5325 struct nixx_af_rx_linkx_slx_spkt_cnt_s {
5326 u64 in_cnt : 20;
5327 u64 reserved_20_31 : 12;
5328 u64 out_cnt : 20;
5329 u64 reserved_52_63 : 12;
5330 } s;
5331 /* struct nixx_af_rx_linkx_slx_spkt_cnt_s cn; */
5332};
5333
5334static inline u64 NIXX_AF_RX_LINKX_SLX_SPKT_CNT(u64 a, u64 b)
5335 __attribute__ ((pure, always_inline));
5336static inline u64 NIXX_AF_RX_LINKX_SLX_SPKT_CNT(u64 a, u64 b)
5337{
5338 return 0x500 + 0x10000 * a + 8 * b;
5339}
5340
5341/**
5342 * Register (RVU_PF_BAR0) nix#_af_rx_link#_wrr_cfg
5343 *
5344 * NIX AF Receive Link Weighted Round Robin Configuration Registers Index
5345 * enumerated by NIX_LINK_E.
5346 */
5347union nixx_af_rx_linkx_wrr_cfg {
5348 u64 u;
5349 struct nixx_af_rx_linkx_wrr_cfg_s {
5350 u64 weight : 8;
5351 u64 reserved_8_63 : 56;
5352 } s;
5353 /* struct nixx_af_rx_linkx_wrr_cfg_s cn; */
5354};
5355
5356static inline u64 NIXX_AF_RX_LINKX_WRR_CFG(u64 a)
5357 __attribute__ ((pure, always_inline));
5358static inline u64 NIXX_AF_RX_LINKX_WRR_CFG(u64 a)
5359{
5360 return 0x560 + 0x10000 * a;
5361}
5362
5363/**
5364 * Register (RVU_PF_BAR0) nix#_af_rx_mcast_base
5365 *
5366 * NIX AF Receive Multicast/Mirror Table Base Address Register This
5367 * register specifies the base AF IOVA of the receive multicast/mirror
5368 * table in NDC/LLC/DRAM. The table consists of 1 \<\<
5369 * (NIX_AF_RX_MCAST_CFG[SIZE] + 8) contiguous NIX_RX_MCE_S structures.
5370 * The size of each structure is 1 \<\< NIX_AF_CONST3[MCE_LOG2BYTES].
5371 * The table contains multicast/mirror replication lists. Each list
5372 * consists of linked entries with NIX_RX_MCE_S[EOL] = 1 in the last
5373 * entry. All lists must reside within the table size specified by
5374 * NIX_AF_RX_MCAST_CFG[SIZE]. A mirror replication list will typically
5375 * consist of two entries, but that is not checked or enforced by
5376 * hardware. A receive packet is multicast when the action returned by
5377 * NPC has NIX_RX_ACTION_S[OP] = NIX_RX_ACTIONOP_E::MCAST. A receive
5378 * packet is mirrored when the action returned by NPC has
5379 * NIX_RX_ACTION_S[OP] = NIX_RX_ACTIONOP_E::MIRROR. In both cases,
5380 * NIX_RX_ACTION_S[INDEX] specifies the index of the replication list's
5381 * first NIX_RX_MCE_S in the table, and a linked entry with
5382 * NIX_RX_MCE_S[EOL] = 1 indicates the end of list. If a mirrored flow
5383 * is part of a multicast replication list, software should include the
5384 * two mirror entries in that list. Internal: A multicast list may have
5385 * multiple entries for the same LF (e.g. for future RoCE/IB multicast).
5386 */
5387union nixx_af_rx_mcast_base {
5388 u64 u;
5389 struct nixx_af_rx_mcast_base_s {
5390 u64 reserved_0_6 : 7;
5391 u64 addr : 46;
5392 u64 reserved_53_63 : 11;
5393 } s;
5394 /* struct nixx_af_rx_mcast_base_s cn; */
5395};
5396
5397static inline u64 NIXX_AF_RX_MCAST_BASE(void)
5398 __attribute__ ((pure, always_inline));
5399static inline u64 NIXX_AF_RX_MCAST_BASE(void)
5400{
5401 return 0x100;
5402}
5403
5404/**
5405 * Register (RVU_PF_BAR0) nix#_af_rx_mcast_buf_base
5406 *
5407 * NIX AF Receive Multicast Buffer Base Address Register This register
5408 * specifies the base AF IOVA of the receive multicast buffers in
5409 * NDC/LLC/DRAM. These buffers are used to temporarily store packets
5410 * whose action returned by NPC has NIX_RX_ACTION_S[OP] =
5411 * NIX_RX_ACTIONOP_E::MCAST. The number of buffers is configured by
5412 * NIX_AF_RX_MCAST_BUF_CFG[SIZE]. If the number of free buffers is
5413 * insufficient for a received multicast packet, hardware tail drops the
5414 * packet and sets NIX_AF_GEN_INT[RX_MCAST_DROP]. Hardware prioritizes
5415 * the processing of RX mirror packets over RX multicast packets.
5416 */
5417union nixx_af_rx_mcast_buf_base {
5418 u64 u;
5419 struct nixx_af_rx_mcast_buf_base_s {
5420 u64 reserved_0_6 : 7;
5421 u64 addr : 46;
5422 u64 reserved_53_63 : 11;
5423 } s;
5424 /* struct nixx_af_rx_mcast_buf_base_s cn; */
5425};
5426
5427static inline u64 NIXX_AF_RX_MCAST_BUF_BASE(void)
5428 __attribute__ ((pure, always_inline));
5429static inline u64 NIXX_AF_RX_MCAST_BUF_BASE(void)
5430{
5431 return 0x120;
5432}
5433
5434/**
5435 * Register (RVU_PF_BAR0) nix#_af_rx_mcast_buf_cfg
5436 *
5437 * NIX AF Receive Multicast Buffer Configuration Register See
5438 * NIX_AF_RX_MCAST_BUF_BASE.
5439 */
5440union nixx_af_rx_mcast_buf_cfg {
5441 u64 u;
5442 struct nixx_af_rx_mcast_buf_cfg_s {
5443 u64 size : 4;
5444 u64 way_mask : 16;
5445 u64 caching : 1;
5446 u64 reserved_21_23 : 3;
5447 u64 npc_replay_pkind : 6;
5448 u64 reserved_30_31 : 2;
5449 u64 free_buf_level : 11;
5450 u64 reserved_43_61 : 19;
5451 u64 busy : 1;
5452 u64 ena : 1;
5453 } s;
5454 struct nixx_af_rx_mcast_buf_cfg_cn96xxp1 {
5455 u64 size : 4;
5456 u64 way_mask : 16;
5457 u64 caching : 1;
5458 u64 reserved_21_23 : 3;
5459 u64 npc_replay_pkind : 6;
5460 u64 reserved_30_31 : 2;
5461 u64 free_buf_level : 11;
5462 u64 reserved_43_61 : 19;
5463 u64 reserved_62 : 1;
5464 u64 ena : 1;
5465 } cn96xxp1;
5466 /* struct nixx_af_rx_mcast_buf_cfg_s cn96xxp3; */
5467 struct nixx_af_rx_mcast_buf_cfg_cnf95xxp1 {
5468 u64 size : 4;
5469 u64 way_mask : 16;
5470 u64 caching : 1;
5471 u64 reserved_21_23 : 3;
5472 u64 npc_replay_pkind : 6;
5473 u64 reserved_30_31 : 2;
5474 u64 free_buf_level : 11;
5475 u64 reserved_43_62 : 20;
5476 u64 ena : 1;
5477 } cnf95xxp1;
5478 /* struct nixx_af_rx_mcast_buf_cfg_s cnf95xxp2; */
5479};
5480
5481static inline u64 NIXX_AF_RX_MCAST_BUF_CFG(void)
5482 __attribute__ ((pure, always_inline));
5483static inline u64 NIXX_AF_RX_MCAST_BUF_CFG(void)
5484{
5485 return 0x130;
5486}
5487
5488/**
5489 * Register (RVU_PF_BAR0) nix#_af_rx_mcast_cfg
5490 *
5491 * NIX AF Receive Multicast/Mirror Table Configuration Register See
5492 * NIX_AF_RX_MCAST_BASE.
5493 */
5494union nixx_af_rx_mcast_cfg {
5495 u64 u;
5496 struct nixx_af_rx_mcast_cfg_s {
5497 u64 size : 4;
5498 u64 max_list_lenm1 : 8;
5499 u64 reserved_12_19 : 8;
5500 u64 way_mask : 16;
5501 u64 caching : 1;
5502 u64 reserved_37_63 : 27;
5503 } s;
5504 /* struct nixx_af_rx_mcast_cfg_s cn; */
5505};
5506
5507static inline u64 NIXX_AF_RX_MCAST_CFG(void)
5508 __attribute__ ((pure, always_inline));
5509static inline u64 NIXX_AF_RX_MCAST_CFG(void)
5510{
5511 return 0x110;
5512}
5513
5514/**
5515 * Register (RVU_PF_BAR0) nix#_af_rx_mirror_buf_base
5516 *
5517 * NIX AF Receive Mirror Buffer Base Address Register This register
5518 * specifies the base AF IOVA of the receive mirror buffers in
5519 * NDC/LLC/DRAM. These buffers are used to temporarily store packets
5520 * whose action returned by NPC has NIX_RX_ACTION_S[OP] =
5521 * NIX_RX_ACTIONOP_E::MIRROR. The number of buffers is configured by
5522 * NIX_AF_RX_MIRROR_BUF_CFG[SIZE]. If the number of free buffers is
5523 * insufficient for a received multicast packet, hardware tail drops the
5524 * packet and sets NIX_AF_GEN_INT[RX_MIRROR_DROP]. Hardware prioritizes
5525 * the processing of RX mirror packets over RX multicast packets.
5526 */
5527union nixx_af_rx_mirror_buf_base {
5528 u64 u;
5529 struct nixx_af_rx_mirror_buf_base_s {
5530 u64 reserved_0_6 : 7;
5531 u64 addr : 46;
5532 u64 reserved_53_63 : 11;
5533 } s;
5534 /* struct nixx_af_rx_mirror_buf_base_s cn; */
5535};
5536
5537static inline u64 NIXX_AF_RX_MIRROR_BUF_BASE(void)
5538 __attribute__ ((pure, always_inline));
5539static inline u64 NIXX_AF_RX_MIRROR_BUF_BASE(void)
5540{
5541 return 0x140;
5542}
5543
5544/**
5545 * Register (RVU_PF_BAR0) nix#_af_rx_mirror_buf_cfg
5546 *
5547 * NIX AF Receive Mirror Buffer Configuration Register See
5548 * NIX_AF_RX_MIRROR_BUF_BASE.
5549 */
5550union nixx_af_rx_mirror_buf_cfg {
5551 u64 u;
5552 struct nixx_af_rx_mirror_buf_cfg_s {
5553 u64 size : 4;
5554 u64 way_mask : 16;
5555 u64 caching : 1;
5556 u64 reserved_21_23 : 3;
5557 u64 npc_replay_pkind : 6;
5558 u64 reserved_30_31 : 2;
5559 u64 free_buf_level : 11;
5560 u64 reserved_43_61 : 19;
5561 u64 busy : 1;
5562 u64 ena : 1;
5563 } s;
5564 struct nixx_af_rx_mirror_buf_cfg_cn96xxp1 {
5565 u64 size : 4;
5566 u64 way_mask : 16;
5567 u64 caching : 1;
5568 u64 reserved_21_23 : 3;
5569 u64 npc_replay_pkind : 6;
5570 u64 reserved_30_31 : 2;
5571 u64 free_buf_level : 11;
5572 u64 reserved_43_61 : 19;
5573 u64 reserved_62 : 1;
5574 u64 ena : 1;
5575 } cn96xxp1;
5576 /* struct nixx_af_rx_mirror_buf_cfg_s cn96xxp3; */
5577 struct nixx_af_rx_mirror_buf_cfg_cnf95xxp1 {
5578 u64 size : 4;
5579 u64 way_mask : 16;
5580 u64 caching : 1;
5581 u64 reserved_21_23 : 3;
5582 u64 npc_replay_pkind : 6;
5583 u64 reserved_30_31 : 2;
5584 u64 free_buf_level : 11;
5585 u64 reserved_43_62 : 20;
5586 u64 ena : 1;
5587 } cnf95xxp1;
5588 /* struct nixx_af_rx_mirror_buf_cfg_s cnf95xxp2; */
5589};
5590
5591static inline u64 NIXX_AF_RX_MIRROR_BUF_CFG(void)
5592 __attribute__ ((pure, always_inline));
5593static inline u64 NIXX_AF_RX_MIRROR_BUF_CFG(void)
5594{
5595 return 0x148;
5596}
5597
5598/**
5599 * Register (RVU_PF_BAR0) nix#_af_rx_npc_mc_drop
5600 *
5601 * NIX AF Multicast Drop Statistics Register The counter increments for
5602 * every dropped MC packet marked by the NPC.
5603 */
5604union nixx_af_rx_npc_mc_drop {
5605 u64 u;
5606 struct nixx_af_rx_npc_mc_drop_s {
5607 u64 stat : 48;
5608 u64 reserved_48_63 : 16;
5609 } s;
5610 /* struct nixx_af_rx_npc_mc_drop_s cn; */
5611};
5612
5613static inline u64 NIXX_AF_RX_NPC_MC_DROP(void)
5614 __attribute__ ((pure, always_inline));
5615static inline u64 NIXX_AF_RX_NPC_MC_DROP(void)
5616{
5617 return 0x4710;
5618}
5619
5620/**
5621 * Register (RVU_PF_BAR0) nix#_af_rx_npc_mc_rcv
5622 *
5623 * NIX AF Multicast Receive Statistics Register The counter increments
5624 * for every received MC packet marked by the NPC.
5625 */
5626union nixx_af_rx_npc_mc_rcv {
5627 u64 u;
5628 struct nixx_af_rx_npc_mc_rcv_s {
5629 u64 stat : 48;
5630 u64 reserved_48_63 : 16;
5631 } s;
5632 /* struct nixx_af_rx_npc_mc_rcv_s cn; */
5633};
5634
5635static inline u64 NIXX_AF_RX_NPC_MC_RCV(void)
5636 __attribute__ ((pure, always_inline));
5637static inline u64 NIXX_AF_RX_NPC_MC_RCV(void)
5638{
5639 return 0x4700;
5640}
5641
5642/**
5643 * Register (RVU_PF_BAR0) nix#_af_rx_npc_mirror_drop
5644 *
5645 * NIX AF Mirror Drop Statistics Register The counter increments for
5646 * every dropped MIRROR packet marked by the NPC.
5647 */
5648union nixx_af_rx_npc_mirror_drop {
5649 u64 u;
5650 struct nixx_af_rx_npc_mirror_drop_s {
5651 u64 stat : 48;
5652 u64 reserved_48_63 : 16;
5653 } s;
5654 /* struct nixx_af_rx_npc_mirror_drop_s cn; */
5655};
5656
5657static inline u64 NIXX_AF_RX_NPC_MIRROR_DROP(void)
5658 __attribute__ ((pure, always_inline));
5659static inline u64 NIXX_AF_RX_NPC_MIRROR_DROP(void)
5660{
5661 return 0x4730;
5662}
5663
5664/**
5665 * Register (RVU_PF_BAR0) nix#_af_rx_npc_mirror_rcv
5666 *
5667 * NIX AF Mirror Receive Statistics Register The counter increments for
5668 * every received MIRROR packet marked by the NPC.
5669 */
5670union nixx_af_rx_npc_mirror_rcv {
5671 u64 u;
5672 struct nixx_af_rx_npc_mirror_rcv_s {
5673 u64 stat : 48;
5674 u64 reserved_48_63 : 16;
5675 } s;
5676 /* struct nixx_af_rx_npc_mirror_rcv_s cn; */
5677};
5678
5679static inline u64 NIXX_AF_RX_NPC_MIRROR_RCV(void)
5680 __attribute__ ((pure, always_inline));
5681static inline u64 NIXX_AF_RX_NPC_MIRROR_RCV(void)
5682{
5683 return 0x4720;
5684}
5685
5686/**
5687 * Register (RVU_PF_BAR0) nix#_af_rx_sw_sync
5688 *
5689 * NIX AF Receive Software Sync Register
5690 */
5691union nixx_af_rx_sw_sync {
5692 u64 u;
5693 struct nixx_af_rx_sw_sync_s {
5694 u64 ena : 1;
5695 u64 reserved_1_63 : 63;
5696 } s;
5697 /* struct nixx_af_rx_sw_sync_s cn; */
5698};
5699
5700static inline u64 NIXX_AF_RX_SW_SYNC(void)
5701 __attribute__ ((pure, always_inline));
5702static inline u64 NIXX_AF_RX_SW_SYNC(void)
5703{
5704 return 0x550;
5705}
5706
5707/**
5708 * Register (RVU_PF_BAR0) nix#_af_sdp_hw_xoff#
5709 *
5710 * NIX AF SDP Transmit Link Hardware Controlled XOFF Registers .
5711 */
5712union nixx_af_sdp_hw_xoffx {
5713 u64 u;
5714 struct nixx_af_sdp_hw_xoffx_s {
5715 u64 chan_xoff : 64;
5716 } s;
5717 /* struct nixx_af_sdp_hw_xoffx_s cn; */
5718};
5719
5720static inline u64 NIXX_AF_SDP_HW_XOFFX(u64 a)
5721 __attribute__ ((pure, always_inline));
5722static inline u64 NIXX_AF_SDP_HW_XOFFX(u64 a)
5723{
5724 return 0xac0 + 8 * a;
5725}
5726
5727/**
5728 * Register (RVU_PF_BAR0) nix#_af_sdp_link_credit
5729 *
5730 * NIX AF Transmit Link SDP Credit Register This register tracks SDP link
5731 * credits.
5732 */
5733union nixx_af_sdp_link_credit {
5734 u64 u;
5735 struct nixx_af_sdp_link_credit_s {
5736 u64 reserved_0 : 1;
5737 u64 cc_enable : 1;
5738 u64 cc_packet_cnt : 10;
5739 u64 cc_unit_cnt : 20;
5740 u64 reserved_32_62 : 31;
5741 u64 pse_pkt_id_lmt : 1;
5742 } s;
5743 struct nixx_af_sdp_link_credit_cn96xx {
5744 u64 reserved_0 : 1;
5745 u64 cc_enable : 1;
5746 u64 cc_packet_cnt : 10;
5747 u64 cc_unit_cnt : 20;
5748 u64 reserved_32_62 : 31;
5749 u64 reserved_63 : 1;
5750 } cn96xx;
5751 /* struct nixx_af_sdp_link_credit_s cnf95xx; */
5752};
5753
5754static inline u64 NIXX_AF_SDP_LINK_CREDIT(void)
5755 __attribute__ ((pure, always_inline));
5756static inline u64 NIXX_AF_SDP_LINK_CREDIT(void)
5757{
5758 return 0xa40;
5759}
5760
5761/**
5762 * Register (RVU_PF_BAR0) nix#_af_sdp_sw_xoff#
5763 *
5764 * INTERNAL: NIX AF SDP Transmit Link Software Controlled XOFF Registers
5765 * Internal: Defeatured registers. Software should use
5766 * NIX_AF_TL4()_SW_XOFF registers instead.
5767 */
5768union nixx_af_sdp_sw_xoffx {
5769 u64 u;
5770 struct nixx_af_sdp_sw_xoffx_s {
5771 u64 chan_xoff : 64;
5772 } s;
5773 /* struct nixx_af_sdp_sw_xoffx_s cn; */
5774};
5775
5776static inline u64 NIXX_AF_SDP_SW_XOFFX(u64 a)
5777 __attribute__ ((pure, always_inline));
5778static inline u64 NIXX_AF_SDP_SW_XOFFX(u64 a)
5779{
5780 return 0xa60 + 8 * a;
5781}
5782
5783/**
5784 * Register (RVU_PF_BAR0) nix#_af_sdp_tx_fifo_status
5785 *
5786 * NIX AF SDP Transmit FIFO Status Register Status of FIFO which
5787 * transmits packets to SDP.
5788 */
5789union nixx_af_sdp_tx_fifo_status {
5790 u64 u;
5791 struct nixx_af_sdp_tx_fifo_status_s {
5792 u64 count : 12;
5793 u64 reserved_12_63 : 52;
5794 } s;
5795 /* struct nixx_af_sdp_tx_fifo_status_s cn; */
5796};
5797
5798static inline u64 NIXX_AF_SDP_TX_FIFO_STATUS(void)
5799 __attribute__ ((pure, always_inline));
5800static inline u64 NIXX_AF_SDP_TX_FIFO_STATUS(void)
5801{
5802 return 0x650;
5803}
5804
5805/**
5806 * Register (RVU_PF_BAR0) nix#_af_seb_active_cycles_pc#
5807 *
5808 * NIX AF Active Cycles Register These registers are indexed by the
5809 * conditional clock domain number.
5810 */
5811union nixx_af_seb_active_cycles_pcx {
5812 u64 u;
5813 struct nixx_af_seb_active_cycles_pcx_s {
5814 u64 act_cyc : 64;
5815 } s;
5816 /* struct nixx_af_seb_active_cycles_pcx_s cn; */
5817};
5818
5819static inline u64 NIXX_AF_SEB_ACTIVE_CYCLES_PCX(u64 a)
5820 __attribute__ ((pure, always_inline));
5821static inline u64 NIXX_AF_SEB_ACTIVE_CYCLES_PCX(u64 a)
5822{
5823 return 0x6c0 + 8 * a;
5824}
5825
5826/**
5827 * Register (RVU_PF_BAR0) nix#_af_seb_bp_test
5828 *
5829 * INTERNAL: NIX AF SEB Backpressure Test Register
5830 */
5831union nixx_af_seb_bp_test {
5832 u64 u;
5833 struct nixx_af_seb_bp_test_s {
5834 u64 lfsr_freq : 12;
5835 u64 reserved_12_15 : 4;
5836 u64 bp_cfg : 14;
5837 u64 reserved_30_47 : 18;
5838 u64 enable : 7;
5839 u64 reserved_55_63 : 9;
5840 } s;
5841 /* struct nixx_af_seb_bp_test_s cn; */
5842};
5843
5844static inline u64 NIXX_AF_SEB_BP_TEST(void)
5845 __attribute__ ((pure, always_inline));
5846static inline u64 NIXX_AF_SEB_BP_TEST(void)
5847{
5848 return 0x630;
5849}
5850
5851/**
5852 * Register (RVU_PF_BAR0) nix#_af_seb_cfg
5853 *
5854 * NIX SEB Configuration Register
5855 */
5856union nixx_af_seb_cfg {
5857 u64 u;
5858 struct nixx_af_seb_cfg_s {
5859 u64 sg_ndc_sel : 1;
5860 u64 reserved_1_63 : 63;
5861 } s;
5862 /* struct nixx_af_seb_cfg_s cn; */
5863};
5864
5865static inline u64 NIXX_AF_SEB_CFG(void)
5866 __attribute__ ((pure, always_inline));
5867static inline u64 NIXX_AF_SEB_CFG(void)
5868{
5869 return 0x5f0;
5870}
5871
5872/**
5873 * Register (RVU_PF_BAR0) nix#_af_seb_eco
5874 *
5875 * INTERNAL: AF SEB ECO Register
5876 */
5877union nixx_af_seb_eco {
5878 u64 u;
5879 struct nixx_af_seb_eco_s {
5880 u64 eco_rw : 64;
5881 } s;
5882 /* struct nixx_af_seb_eco_s cn; */
5883};
5884
5885static inline u64 NIXX_AF_SEB_ECO(void)
5886 __attribute__ ((pure, always_inline));
5887static inline u64 NIXX_AF_SEB_ECO(void)
5888{
5889 return 0x5c0;
5890}
5891
5892/**
5893 * Register (RVU_PF_BAR0) nix#_af_seb_pipe_bp_test#
5894 *
5895 * INTERNAL: NIX AF SEB Pipe Backpressure Test Registers
5896 */
5897union nixx_af_seb_pipe_bp_testx {
5898 u64 u;
5899 struct nixx_af_seb_pipe_bp_testx_s {
5900 u64 lfsr_freq : 12;
5901 u64 reserved_12_15 : 4;
5902 u64 bp_cfg : 24;
5903 u64 reserved_40_47 : 8;
5904 u64 enable : 12;
5905 u64 reserved_60_63 : 4;
5906 } s;
5907 /* struct nixx_af_seb_pipe_bp_testx_s cn; */
5908};
5909
5910static inline u64 NIXX_AF_SEB_PIPE_BP_TESTX(u64 a)
5911 __attribute__ ((pure, always_inline));
5912static inline u64 NIXX_AF_SEB_PIPE_BP_TESTX(u64 a)
5913{
5914 return 0x600 + 0x10 * a;
5915}
5916
5917/**
5918 * Register (RVU_PF_BAR0) nix#_af_seb_pipeb_bp_test#
5919 *
5920 * INTERNAL: NIX AF SEB Pipe Backpressure Test Registers
5921 */
5922union nixx_af_seb_pipeb_bp_testx {
5923 u64 u;
5924 struct nixx_af_seb_pipeb_bp_testx_s {
5925 u64 lfsr_freq : 12;
5926 u64 reserved_12_15 : 4;
5927 u64 bp_cfg : 18;
5928 u64 reserved_34_47 : 14;
5929 u64 enable : 9;
5930 u64 reserved_57_63 : 7;
5931 } s;
5932 /* struct nixx_af_seb_pipeb_bp_testx_s cn; */
5933};
5934
5935static inline u64 NIXX_AF_SEB_PIPEB_BP_TESTX(u64 a)
5936 __attribute__ ((pure, always_inline));
5937static inline u64 NIXX_AF_SEB_PIPEB_BP_TESTX(u64 a)
5938{
5939 return 0x608 + 0x10 * a;
5940}
5941
5942/**
5943 * Register (RVU_PF_BAR0) nix#_af_seb_wd_tick_divider
5944 *
5945 * INTERNAL: NIX AF SEB TSTMP Watchdog Tick Divider Register
5946 */
5947union nixx_af_seb_wd_tick_divider {
5948 u64 u;
5949 struct nixx_af_seb_wd_tick_divider_s {
5950 u64 tick_div_cfg : 7;
5951 u64 reserved_7_63 : 57;
5952 } s;
5953 /* struct nixx_af_seb_wd_tick_divider_s cn; */
5954};
5955
5956static inline u64 NIXX_AF_SEB_WD_TICK_DIVIDER(void)
5957 __attribute__ ((pure, always_inline));
5958static inline u64 NIXX_AF_SEB_WD_TICK_DIVIDER(void)
5959{
5960 return 0x6f0;
5961}
5962
5963/**
5964 * Register (RVU_PF_BAR0) nix#_af_smq#_cfg
5965 *
5966 * NIX AF SQM PSE Queue Configuration Registers
5967 */
5968union nixx_af_smqx_cfg {
5969 u64 u;
5970 struct nixx_af_smqx_cfg_s {
5971 u64 minlen : 7;
5972 u64 desc_shp_ctl_dis : 1;
5973 u64 maxlen : 16;
5974 u64 lf : 7;
5975 u64 reserved_31_35 : 5;
5976 u64 max_vtag_ins : 3;
5977 u64 rr_minlen : 9;
5978 u64 express : 1;
5979 u64 flush : 1;
5980 u64 enq_xoff : 1;
5981 u64 pri_thr : 6;
5982 u64 reserved_57_63 : 7;
5983 } s;
5984 /* struct nixx_af_smqx_cfg_s cn; */
5985};
5986
5987static inline u64 NIXX_AF_SMQX_CFG(u64 a)
5988 __attribute__ ((pure, always_inline));
5989static inline u64 NIXX_AF_SMQX_CFG(u64 a)
5990{
5991 return 0x700 + 0x10000 * a;
5992}
5993
5994/**
5995 * Register (RVU_PF_BAR0) nix#_af_smq#_head
5996 *
5997 * NIX AF SQM SMQ Head Register These registers track the head of the SMQ
5998 * linked list.
5999 */
6000union nixx_af_smqx_head {
6001 u64 u;
6002 struct nixx_af_smqx_head_s {
6003 u64 sq_idx : 20;
6004 u64 valid : 1;
6005 u64 reserved_21_63 : 43;
6006 } s;
6007 /* struct nixx_af_smqx_head_s cn; */
6008};
6009
6010static inline u64 NIXX_AF_SMQX_HEAD(u64 a)
6011 __attribute__ ((pure, always_inline));
6012static inline u64 NIXX_AF_SMQX_HEAD(u64 a)
6013{
6014 return 0x710 + 0x10000 * a;
6015}
6016
6017/**
6018 * Register (RVU_PF_BAR0) nix#_af_smq#_nxt_head
6019 *
6020 * NIX AF SQM SMQ Next Head Register These registers track the next head
6021 * of the SMQ linked list.
6022 */
6023union nixx_af_smqx_nxt_head {
6024 u64 u;
6025 struct nixx_af_smqx_nxt_head_s {
6026 u64 sq_idx : 20;
6027 u64 valid : 1;
6028 u64 reserved_21_63 : 43;
6029 } s;
6030 /* struct nixx_af_smqx_nxt_head_s cn; */
6031};
6032
6033static inline u64 NIXX_AF_SMQX_NXT_HEAD(u64 a)
6034 __attribute__ ((pure, always_inline));
6035static inline u64 NIXX_AF_SMQX_NXT_HEAD(u64 a)
6036{
6037 return 0x740 + 0x10000 * a;
6038}
6039
6040/**
6041 * Register (RVU_PF_BAR0) nix#_af_smq#_status
6042 *
6043 * NIX AF SQM SMQ Status Register These registers track the status of the
6044 * SMQ FIFO.
6045 */
6046union nixx_af_smqx_status {
6047 u64 u;
6048 struct nixx_af_smqx_status_s {
6049 u64 level : 7;
6050 u64 reserved_7_63 : 57;
6051 } s;
6052 /* struct nixx_af_smqx_status_s cn; */
6053};
6054
6055static inline u64 NIXX_AF_SMQX_STATUS(u64 a)
6056 __attribute__ ((pure, always_inline));
6057static inline u64 NIXX_AF_SMQX_STATUS(u64 a)
6058{
6059 return 0x730 + 0x10000 * a;
6060}
6061
6062/**
6063 * Register (RVU_PF_BAR0) nix#_af_smq#_tail
6064 *
6065 * NIX AF SQM SMQ Head Register These registers track the tail of SMQ
6066 * linked list.
6067 */
6068union nixx_af_smqx_tail {
6069 u64 u;
6070 struct nixx_af_smqx_tail_s {
6071 u64 sq_idx : 20;
6072 u64 valid : 1;
6073 u64 reserved_21_63 : 43;
6074 } s;
6075 /* struct nixx_af_smqx_tail_s cn; */
6076};
6077
6078static inline u64 NIXX_AF_SMQX_TAIL(u64 a)
6079 __attribute__ ((pure, always_inline));
6080static inline u64 NIXX_AF_SMQX_TAIL(u64 a)
6081{
6082 return 0x720 + 0x10000 * a;
6083}
6084
6085/**
6086 * Register (RVU_PF_BAR0) nix#_af_sq_const
6087 *
6088 * NIX AF SQ Constants Register This register contains constants for
6089 * software discovery.
6090 */
6091union nixx_af_sq_const {
6092 u64 u;
6093 struct nixx_af_sq_const_s {
6094 u64 queues_per_lf : 24;
6095 u64 smq_depth : 10;
6096 u64 sqb_size : 16;
6097 u64 reserved_50_63 : 14;
6098 } s;
6099 /* struct nixx_af_sq_const_s cn; */
6100};
6101
6102static inline u64 NIXX_AF_SQ_CONST(void)
6103 __attribute__ ((pure, always_inline));
6104static inline u64 NIXX_AF_SQ_CONST(void)
6105{
6106 return 0x40;
6107}
6108
6109/**
6110 * Register (RVU_PF_BAR0) nix#_af_sqm_active_cycles_pc
6111 *
6112 * NIX AF SQM Active Cycles Register These registers are indexed by the
6113 * conditional clock domain number.
6114 */
6115union nixx_af_sqm_active_cycles_pc {
6116 u64 u;
6117 struct nixx_af_sqm_active_cycles_pc_s {
6118 u64 act_cyc : 64;
6119 } s;
6120 /* struct nixx_af_sqm_active_cycles_pc_s cn; */
6121};
6122
6123static inline u64 NIXX_AF_SQM_ACTIVE_CYCLES_PC(void)
6124 __attribute__ ((pure, always_inline));
6125static inline u64 NIXX_AF_SQM_ACTIVE_CYCLES_PC(void)
6126{
6127 return 0x770;
6128}
6129
6130/**
6131 * Register (RVU_PF_BAR0) nix#_af_sqm_bp_test#
6132 *
6133 * INTERNAL: NIX AF SQM Backpressure Test Register
6134 */
6135union nixx_af_sqm_bp_testx {
6136 u64 u;
6137 struct nixx_af_sqm_bp_testx_s {
6138 u64 lfsr_freq : 12;
6139 u64 reserved_12_15 : 4;
6140 u64 bp_cfg : 8;
6141 u64 reserved_24_59 : 36;
6142 u64 enable : 4;
6143 } s;
6144 /* struct nixx_af_sqm_bp_testx_s cn; */
6145};
6146
6147static inline u64 NIXX_AF_SQM_BP_TESTX(u64 a)
6148 __attribute__ ((pure, always_inline));
6149static inline u64 NIXX_AF_SQM_BP_TESTX(u64 a)
6150{
6151 return 0x760 + 0x10000 * a;
6152}
6153
6154/**
6155 * Register (RVU_PF_BAR0) nix#_af_sqm_dbg_ctl_status
6156 *
6157 * NIX AF SQM Debug Register This register is for SQM diagnostic use
6158 * only.
6159 */
6160union nixx_af_sqm_dbg_ctl_status {
6161 u64 u;
6162 struct nixx_af_sqm_dbg_ctl_status_s {
6163 u64 tm1 : 8;
6164 u64 tm2 : 1;
6165 u64 tm3 : 4;
6166 u64 tm4 : 1;
6167 u64 tm5 : 1;
6168 u64 tm6 : 1;
6169 u64 tm7 : 4;
6170 u64 tm8 : 1;
6171 u64 tm9 : 1;
6172 u64 tm10 : 1;
6173 u64 tm11 : 1;
6174 u64 tm12 : 1;
6175 u64 tm13 : 1;
6176 u64 reserved_26_63 : 38;
6177 } s;
6178 struct nixx_af_sqm_dbg_ctl_status_cn96xxp1 {
6179 u64 tm1 : 8;
6180 u64 tm2 : 1;
6181 u64 tm3 : 4;
6182 u64 tm4 : 1;
6183 u64 tm5 : 1;
6184 u64 tm6 : 1;
6185 u64 tm7 : 4;
6186 u64 tm8 : 1;
6187 u64 tm9 : 1;
6188 u64 reserved_22_63 : 42;
6189 } cn96xxp1;
6190 /* struct nixx_af_sqm_dbg_ctl_status_s cn96xxp3; */
6191 /* struct nixx_af_sqm_dbg_ctl_status_cn96xxp1 cnf95xxp1; */
6192 struct nixx_af_sqm_dbg_ctl_status_cnf95xxp2 {
6193 u64 tm1 : 8;
6194 u64 tm2 : 1;
6195 u64 tm3 : 4;
6196 u64 tm4 : 1;
6197 u64 tm5 : 1;
6198 u64 tm6 : 1;
6199 u64 tm7 : 4;
6200 u64 tm8 : 1;
6201 u64 tm9 : 1;
6202 u64 reserved_22 : 1;
6203 u64 reserved_23 : 1;
6204 u64 reserved_24 : 1;
6205 u64 reserved_25 : 1;
6206 u64 reserved_26_63 : 38;
6207 } cnf95xxp2;
6208};
6209
6210static inline u64 NIXX_AF_SQM_DBG_CTL_STATUS(void)
6211 __attribute__ ((pure, always_inline));
6212static inline u64 NIXX_AF_SQM_DBG_CTL_STATUS(void)
6213{
6214 return 0x750;
6215}
6216
6217/**
6218 * Register (RVU_PF_BAR0) nix#_af_sqm_eco
6219 *
6220 * INTERNAL: AF SQM ECO Register
6221 */
6222union nixx_af_sqm_eco {
6223 u64 u;
6224 struct nixx_af_sqm_eco_s {
6225 u64 eco_rw : 64;
6226 } s;
6227 /* struct nixx_af_sqm_eco_s cn; */
6228};
6229
6230static inline u64 NIXX_AF_SQM_ECO(void)
6231 __attribute__ ((pure, always_inline));
6232static inline u64 NIXX_AF_SQM_ECO(void)
6233{
6234 return 0x5b0;
6235}
6236
6237/**
6238 * Register (RVU_PF_BAR0) nix#_af_status
6239 *
6240 * NIX AF General Status Register
6241 */
6242union nixx_af_status {
6243 u64 u;
6244 struct nixx_af_status_s {
6245 u64 blk_busy : 10;
6246 u64 calibrate_done : 1;
6247 u64 reserved_11_15 : 5;
6248 u64 calibrate_status : 15;
6249 u64 reserved_31_63 : 33;
6250 } s;
6251 /* struct nixx_af_status_s cn; */
6252};
6253
6254static inline u64 NIXX_AF_STATUS(void)
6255 __attribute__ ((pure, always_inline));
6256static inline u64 NIXX_AF_STATUS(void)
6257{
6258 return 0x10;
6259}
6260
6261/**
6262 * Register (RVU_PF_BAR0) nix#_af_tcp_timer
6263 *
6264 * NIX TCP Timer Register
6265 */
6266union nixx_af_tcp_timer {
6267 u64 u;
6268 struct nixx_af_tcp_timer_s {
6269 u64 dur_counter : 16;
6270 u64 lf_counter : 8;
6271 u64 reserved_24_31 : 8;
6272 u64 duration : 16;
6273 u64 reserved_48_62 : 15;
6274 u64 ena : 1;
6275 } s;
6276 /* struct nixx_af_tcp_timer_s cn; */
6277};
6278
6279static inline u64 NIXX_AF_TCP_TIMER(void)
6280 __attribute__ ((pure, always_inline));
6281static inline u64 NIXX_AF_TCP_TIMER(void)
6282{
6283 return 0x1e0;
6284}
6285
6286/**
6287 * Register (RVU_PF_BAR0) nix#_af_tl1#_cir
6288 *
6289 * NIX AF Transmit Level 1 Committed Information Rate Register
6290 */
6291union nixx_af_tl1x_cir {
6292 u64 u;
6293 struct nixx_af_tl1x_cir_s {
6294 u64 enable : 1;
6295 u64 rate_mantissa : 8;
6296 u64 rate_exponent : 4;
6297 u64 rate_divider_exponent : 4;
6298 u64 reserved_17_28 : 12;
6299 u64 burst_mantissa : 8;
6300 u64 burst_exponent : 4;
6301 u64 reserved_41_63 : 23;
6302 } s;
6303 /* struct nixx_af_tl1x_cir_s cn; */
6304};
6305
6306static inline u64 NIXX_AF_TL1X_CIR(u64 a)
6307 __attribute__ ((pure, always_inline));
6308static inline u64 NIXX_AF_TL1X_CIR(u64 a)
6309{
6310 return 0xc20 + 0x10000 * a;
6311}
6312
6313/**
6314 * Register (RVU_PF_BAR0) nix#_af_tl1#_dropped_bytes
6315 *
6316 * NIX AF Transmit Level 1 Dropped Bytes Registers This register has the
6317 * same bit fields as NIX_AF_TL1()_GREEN_BYTES.
6318 */
6319union nixx_af_tl1x_dropped_bytes {
6320 u64 u;
6321 struct nixx_af_tl1x_dropped_bytes_s {
6322 u64 count : 48;
6323 u64 reserved_48_63 : 16;
6324 } s;
6325 /* struct nixx_af_tl1x_dropped_bytes_s cn; */
6326};
6327
6328static inline u64 NIXX_AF_TL1X_DROPPED_BYTES(u64 a)
6329 __attribute__ ((pure, always_inline));
6330static inline u64 NIXX_AF_TL1X_DROPPED_BYTES(u64 a)
6331{
6332 return 0xd30 + 0x10000 * a;
6333}
6334
6335/**
6336 * Register (RVU_PF_BAR0) nix#_af_tl1#_dropped_packets
6337 *
6338 * NIX AF Transmit Level 1 Dropped Packets Registers This register has
6339 * the same bit fields as NIX_AF_TL1()_GREEN_PACKETS.
6340 */
6341union nixx_af_tl1x_dropped_packets {
6342 u64 u;
6343 struct nixx_af_tl1x_dropped_packets_s {
6344 u64 count : 40;
6345 u64 reserved_40_63 : 24;
6346 } s;
6347 /* struct nixx_af_tl1x_dropped_packets_s cn; */
6348};
6349
6350static inline u64 NIXX_AF_TL1X_DROPPED_PACKETS(u64 a)
6351 __attribute__ ((pure, always_inline));
6352static inline u64 NIXX_AF_TL1X_DROPPED_PACKETS(u64 a)
6353{
6354 return 0xd20 + 0x10000 * a;
6355}
6356
6357/**
6358 * Register (RVU_PF_BAR0) nix#_af_tl1#_green
6359 *
6360 * INTERNAL: NIX Transmit Level 1 Green State Debug Register
6361 */
6362union nixx_af_tl1x_green {
6363 u64 u;
6364 struct nixx_af_tl1x_green_s {
6365 u64 tail : 8;
6366 u64 reserved_8_9 : 2;
6367 u64 head : 8;
6368 u64 reserved_18_19 : 2;
6369 u64 active_vec : 20;
6370 u64 rr_active : 1;
6371 u64 reserved_41_63 : 23;
6372 } s;
6373 /* struct nixx_af_tl1x_green_s cn; */
6374};
6375
6376static inline u64 NIXX_AF_TL1X_GREEN(u64 a)
6377 __attribute__ ((pure, always_inline));
6378static inline u64 NIXX_AF_TL1X_GREEN(u64 a)
6379{
6380 return 0xc90 + 0x10000 * a;
6381}
6382
6383/**
6384 * Register (RVU_PF_BAR0) nix#_af_tl1#_green_bytes
6385 *
6386 * NIX AF Transmit Level 1 Green Sent Bytes Registers
6387 */
6388union nixx_af_tl1x_green_bytes {
6389 u64 u;
6390 struct nixx_af_tl1x_green_bytes_s {
6391 u64 count : 48;
6392 u64 reserved_48_63 : 16;
6393 } s;
6394 /* struct nixx_af_tl1x_green_bytes_s cn; */
6395};
6396
6397static inline u64 NIXX_AF_TL1X_GREEN_BYTES(u64 a)
6398 __attribute__ ((pure, always_inline));
6399static inline u64 NIXX_AF_TL1X_GREEN_BYTES(u64 a)
6400{
6401 return 0xd90 + 0x10000 * a;
6402}
6403
6404/**
6405 * Register (RVU_PF_BAR0) nix#_af_tl1#_green_packets
6406 *
6407 * NIX AF Transmit Level 1 Green Sent Packets Registers
6408 */
6409union nixx_af_tl1x_green_packets {
6410 u64 u;
6411 struct nixx_af_tl1x_green_packets_s {
6412 u64 count : 40;
6413 u64 reserved_40_63 : 24;
6414 } s;
6415 /* struct nixx_af_tl1x_green_packets_s cn; */
6416};
6417
6418static inline u64 NIXX_AF_TL1X_GREEN_PACKETS(u64 a)
6419 __attribute__ ((pure, always_inline));
6420static inline u64 NIXX_AF_TL1X_GREEN_PACKETS(u64 a)
6421{
6422 return 0xd80 + 0x10000 * a;
6423}
6424
6425/**
6426 * Register (RVU_PF_BAR0) nix#_af_tl1#_md_debug0
6427 *
6428 * NIX AF Transmit Level 1 Meta Descriptor Debug 0 Registers
6429 * NIX_AF_TL1()_MD_DEBUG0, NIX_AF_TL1()_MD_DEBUG1, NIX_AF_TL1()_MD_DEBUG2
6430 * and NIX_AF_TL1()_MD_DEBUG3 provide access to the TLn queue meta
6431 * descriptor. A TLn queue can hold up to two packet meta descriptors
6432 * (PMD) and one flush meta descriptor (FMD): * PMD0 state is accessed
6433 * with [PMD0_VLD], [PMD0_LENGTH] and NIX_AF_TL1()_MD_DEBUG1. * PMD1 is
6434 * accessed with [PMD1_VLD], [PMD1_LENGTH] and NIX_AF_TL1()_MD_DEBUG2. *
6435 * FMD is accessed with NIX_AF_TL1()_MD_DEBUG3.
6436 */
6437union nixx_af_tl1x_md_debug0 {
6438 u64 u;
6439 struct nixx_af_tl1x_md_debug0_s {
6440 u64 pmd0_length : 16;
6441 u64 pmd1_length : 16;
6442 u64 pmd0_vld : 1;
6443 u64 pmd1_vld : 1;
6444 u64 reserved_34_45 : 12;
6445 u64 drain_pri : 1;
6446 u64 drain : 1;
6447 u64 c_con : 1;
6448 u64 p_con : 1;
6449 u64 reserved_50_51 : 2;
6450 u64 child : 10;
6451 u64 reserved_62 : 1;
6452 u64 pmd_count : 1;
6453 } s;
6454 /* struct nixx_af_tl1x_md_debug0_s cn96xxp1; */
6455 struct nixx_af_tl1x_md_debug0_cn96xxp3 {
6456 u64 pmd0_length : 16;
6457 u64 reserved_16_31 : 16;
6458 u64 pmd0_vld : 1;
6459 u64 reserved_33 : 1;
6460 u64 reserved_34_45 : 12;
6461 u64 reserved_46 : 1;
6462 u64 reserved_47 : 1;
6463 u64 c_con : 1;
6464 u64 p_con : 1;
6465 u64 reserved_50_51 : 2;
6466 u64 child : 10;
6467 u64 reserved_62 : 1;
6468 u64 reserved_63 : 1;
6469 } cn96xxp3;
6470 /* struct nixx_af_tl1x_md_debug0_s cnf95xx; */
6471};
6472
6473static inline u64 NIXX_AF_TL1X_MD_DEBUG0(u64 a)
6474 __attribute__ ((pure, always_inline));
6475static inline u64 NIXX_AF_TL1X_MD_DEBUG0(u64 a)
6476{
6477 return 0xcc0 + 0x10000 * a;
6478}
6479
6480/**
6481 * Register (RVU_PF_BAR0) nix#_af_tl1#_md_debug1
6482 *
6483 * NIX AF Transmit Level 1 Meta Descriptor Debug 1 Registers Packet meta
6484 * descriptor 0 debug. See NIX_AF_TL1()_MD_DEBUG0.
6485 */
6486union nixx_af_tl1x_md_debug1 {
6487 u64 u;
6488 struct nixx_af_tl1x_md_debug1_s {
6489 u64 reserved_0_5 : 6;
6490 u64 red_algo_override : 2;
6491 u64 cir_dis : 1;
6492 u64 pir_dis : 1;
6493 u64 adjust : 9;
6494 u64 uid : 4;
6495 u64 reserved_23 : 1;
6496 u64 bubble : 1;
6497 u64 color : 2;
6498 u64 pse_pkt_id : 9;
6499 u64 reserved_36 : 1;
6500 u64 tx_pkt_p2x : 2;
6501 u64 sqm_pkt_id : 13;
6502 u64 mdq_idx : 10;
6503 u64 reserved_62 : 1;
6504 u64 vld : 1;
6505 } s;
6506 struct nixx_af_tl1x_md_debug1_cn96xxp1 {
6507 u64 reserved_0_5 : 6;
6508 u64 red_algo_override : 2;
6509 u64 cir_dis : 1;
6510 u64 pir_dis : 1;
6511 u64 adjust : 9;
6512 u64 uid : 4;
6513 u64 drain : 1;
6514 u64 bubble : 1;
6515 u64 color : 2;
6516 u64 pse_pkt_id : 9;
6517 u64 reserved_36 : 1;
6518 u64 tx_pkt_p2x : 2;
6519 u64 sqm_pkt_id : 13;
6520 u64 mdq_idx : 10;
6521 u64 reserved_62 : 1;
6522 u64 vld : 1;
6523 } cn96xxp1;
6524 struct nixx_af_tl1x_md_debug1_cn96xxp3 {
6525 u64 reserved_0_5 : 6;
6526 u64 red_algo_override : 2;
6527 u64 cir_dis : 1;
6528 u64 pir_dis : 1;
6529 u64 adjust : 9;
6530 u64 reserved_19_22 : 4;
6531 u64 flush : 1;
6532 u64 bubble : 1;
6533 u64 color : 2;
6534 u64 pse_pkt_id : 9;
6535 u64 reserved_36 : 1;
6536 u64 tx_pkt_p2x : 2;
6537 u64 sqm_pkt_id : 13;
6538 u64 mdq_idx : 10;
6539 u64 reserved_62 : 1;
6540 u64 vld : 1;
6541 } cn96xxp3;
6542 /* struct nixx_af_tl1x_md_debug1_cn96xxp1 cnf95xx; */
6543};
6544
6545static inline u64 NIXX_AF_TL1X_MD_DEBUG1(u64 a)
6546 __attribute__ ((pure, always_inline));
6547static inline u64 NIXX_AF_TL1X_MD_DEBUG1(u64 a)
6548{
6549 return 0xcc8 + 0x10000 * a;
6550}
6551
6552/**
6553 * Register (RVU_PF_BAR0) nix#_af_tl1#_md_debug2
6554 *
6555 * NIX AF Transmit Level 1 Meta Descriptor Debug 2 Registers Packet meta
6556 * descriptor 1 debug. See NIX_AF_TL1()_MD_DEBUG0.
6557 */
6558union nixx_af_tl1x_md_debug2 {
6559 u64 u;
6560 struct nixx_af_tl1x_md_debug2_s {
6561 u64 reserved_0_5 : 6;
6562 u64 red_algo_override : 2;
6563 u64 cir_dis : 1;
6564 u64 pir_dis : 1;
6565 u64 adjust : 9;
6566 u64 uid : 4;
6567 u64 reserved_23 : 1;
6568 u64 bubble : 1;
6569 u64 color : 2;
6570 u64 pse_pkt_id : 9;
6571 u64 reserved_36 : 1;
6572 u64 tx_pkt_p2x : 2;
6573 u64 sqm_pkt_id : 13;
6574 u64 mdq_idx : 10;
6575 u64 reserved_62 : 1;
6576 u64 vld : 1;
6577 } s;
6578 struct nixx_af_tl1x_md_debug2_cn96xxp1 {
6579 u64 reserved_0_5 : 6;
6580 u64 red_algo_override : 2;
6581 u64 cir_dis : 1;
6582 u64 pir_dis : 1;
6583 u64 adjust : 9;
6584 u64 uid : 4;
6585 u64 drain : 1;
6586 u64 bubble : 1;
6587 u64 color : 2;
6588 u64 pse_pkt_id : 9;
6589 u64 reserved_36 : 1;
6590 u64 tx_pkt_p2x : 2;
6591 u64 sqm_pkt_id : 13;
6592 u64 mdq_idx : 10;
6593 u64 reserved_62 : 1;
6594 u64 vld : 1;
6595 } cn96xxp1;
6596 struct nixx_af_tl1x_md_debug2_cn96xxp3 {
6597 u64 reserved_0_5 : 6;
6598 u64 red_algo_override : 2;
6599 u64 cir_dis : 1;
6600 u64 pir_dis : 1;
6601 u64 adjust : 9;
6602 u64 reserved_19_22 : 4;
6603 u64 flush : 1;
6604 u64 bubble : 1;
6605 u64 color : 2;
6606 u64 pse_pkt_id : 9;
6607 u64 reserved_36 : 1;
6608 u64 tx_pkt_p2x : 2;
6609 u64 sqm_pkt_id : 13;
6610 u64 mdq_idx : 10;
6611 u64 reserved_62 : 1;
6612 u64 vld : 1;
6613 } cn96xxp3;
6614 /* struct nixx_af_tl1x_md_debug2_cn96xxp1 cnf95xx; */
6615};
6616
6617static inline u64 NIXX_AF_TL1X_MD_DEBUG2(u64 a)
6618 __attribute__ ((pure, always_inline));
6619static inline u64 NIXX_AF_TL1X_MD_DEBUG2(u64 a)
6620{
6621 return 0xcd0 + 0x10000 * a;
6622}
6623
6624/**
6625 * Register (RVU_PF_BAR0) nix#_af_tl1#_md_debug3
6626 *
6627 * NIX AF Transmit Level 1 Meta Descriptor Debug 3 Registers Flush meta
6628 * descriptor debug. See NIX_AF_TL1()_MD_DEBUG0.
6629 */
6630union nixx_af_tl1x_md_debug3 {
6631 u64 u;
6632 struct nixx_af_tl1x_md_debug3_s {
6633 u64 reserved_0_36 : 37;
6634 u64 tx_pkt_p2x : 2;
6635 u64 sqm_pkt_id : 13;
6636 u64 mdq_idx : 10;
6637 u64 reserved_62 : 1;
6638 u64 vld : 1;
6639 } s;
6640 /* struct nixx_af_tl1x_md_debug3_s cn96xxp1; */
6641 struct nixx_af_tl1x_md_debug3_cn96xxp3 {
6642 u64 reserved_0_36 : 37;
6643 u64 reserved_37_38 : 2;
6644 u64 reserved_39_51 : 13;
6645 u64 reserved_52_61 : 10;
6646 u64 reserved_62 : 1;
6647 u64 reserved_63 : 1;
6648 } cn96xxp3;
6649 /* struct nixx_af_tl1x_md_debug3_s cnf95xx; */
6650};
6651
6652static inline u64 NIXX_AF_TL1X_MD_DEBUG3(u64 a)
6653 __attribute__ ((pure, always_inline));
6654static inline u64 NIXX_AF_TL1X_MD_DEBUG3(u64 a)
6655{
6656 return 0xcd8 + 0x10000 * a;
6657}
6658
6659/**
6660 * Register (RVU_PF_BAR0) nix#_af_tl1#_red
6661 *
6662 * INTERNAL: NIX Transmit Level 1 Red State Debug Register This register
6663 * has the same bit fields as NIX_AF_TL1()_YELLOW.
6664 */
6665union nixx_af_tl1x_red {
6666 u64 u;
6667 struct nixx_af_tl1x_red_s {
6668 u64 tail : 8;
6669 u64 reserved_8_9 : 2;
6670 u64 head : 8;
6671 u64 reserved_18_63 : 46;
6672 } s;
6673 /* struct nixx_af_tl1x_red_s cn; */
6674};
6675
6676static inline u64 NIXX_AF_TL1X_RED(u64 a)
6677 __attribute__ ((pure, always_inline));
6678static inline u64 NIXX_AF_TL1X_RED(u64 a)
6679{
6680 return 0xcb0 + 0x10000 * a;
6681}
6682
6683/**
6684 * Register (RVU_PF_BAR0) nix#_af_tl1#_red_bytes
6685 *
6686 * NIX AF Transmit Level 1 Red Sent Bytes Registers This register has the
6687 * same bit fields as NIX_AF_TL1()_GREEN_BYTES.
6688 */
6689union nixx_af_tl1x_red_bytes {
6690 u64 u;
6691 struct nixx_af_tl1x_red_bytes_s {
6692 u64 count : 48;
6693 u64 reserved_48_63 : 16;
6694 } s;
6695 /* struct nixx_af_tl1x_red_bytes_s cn; */
6696};
6697
6698static inline u64 NIXX_AF_TL1X_RED_BYTES(u64 a)
6699 __attribute__ ((pure, always_inline));
6700static inline u64 NIXX_AF_TL1X_RED_BYTES(u64 a)
6701{
6702 return 0xd50 + 0x10000 * a;
6703}
6704
6705/**
6706 * Register (RVU_PF_BAR0) nix#_af_tl1#_red_packets
6707 *
6708 * NIX AF Transmit Level 1 Red Sent Packets Registers This register has
6709 * the same bit fields as NIX_AF_TL1()_GREEN_PACKETS.
6710 */
6711union nixx_af_tl1x_red_packets {
6712 u64 u;
6713 struct nixx_af_tl1x_red_packets_s {
6714 u64 count : 40;
6715 u64 reserved_40_63 : 24;
6716 } s;
6717 /* struct nixx_af_tl1x_red_packets_s cn; */
6718};
6719
6720static inline u64 NIXX_AF_TL1X_RED_PACKETS(u64 a)
6721 __attribute__ ((pure, always_inline));
6722static inline u64 NIXX_AF_TL1X_RED_PACKETS(u64 a)
6723{
6724 return 0xd40 + 0x10000 * a;
6725}
6726
6727/**
6728 * Register (RVU_PF_BAR0) nix#_af_tl1#_schedule
6729 *
6730 * NIX AF Transmit Level 1 Scheduling Control Register
6731 */
6732union nixx_af_tl1x_schedule {
6733 u64 u;
6734 struct nixx_af_tl1x_schedule_s {
6735 u64 rr_quantum : 24;
6736 u64 reserved_24_63 : 40;
6737 } s;
6738 /* struct nixx_af_tl1x_schedule_s cn; */
6739};
6740
6741static inline u64 NIXX_AF_TL1X_SCHEDULE(u64 a)
6742 __attribute__ ((pure, always_inline));
6743static inline u64 NIXX_AF_TL1X_SCHEDULE(u64 a)
6744{
6745 return 0xc00 + 0x10000 * a;
6746}
6747
6748/**
6749 * Register (RVU_PF_BAR0) nix#_af_tl1#_shape
6750 *
6751 * NIX AF Transmit Level 1 Shaping Control Register
6752 */
6753union nixx_af_tl1x_shape {
6754 u64 u;
6755 struct nixx_af_tl1x_shape_s {
6756 u64 adjust : 9;
6757 u64 reserved_9_23 : 15;
6758 u64 length_disable : 1;
6759 u64 reserved_25_63 : 39;
6760 } s;
6761 struct nixx_af_tl1x_shape_cn {
6762 u64 adjust : 9;
6763 u64 reserved_9_17 : 9;
6764 u64 reserved_18_23 : 6;
6765 u64 length_disable : 1;
6766 u64 reserved_25_63 : 39;
6767 } cn;
6768};
6769
6770static inline u64 NIXX_AF_TL1X_SHAPE(u64 a)
6771 __attribute__ ((pure, always_inline));
6772static inline u64 NIXX_AF_TL1X_SHAPE(u64 a)
6773{
6774 return 0xc10 + 0x10000 * a;
6775}
6776
6777/**
6778 * Register (RVU_PF_BAR0) nix#_af_tl1#_shape_state
6779 *
6780 * NIX AF Transmit Level 1 Shape State Register This register must not be
6781 * written during normal operation.
6782 */
6783union nixx_af_tl1x_shape_state {
6784 u64 u;
6785 struct nixx_af_tl1x_shape_state_s {
6786 u64 cir_accum : 26;
6787 u64 reserved_26_51 : 26;
6788 u64 color : 1;
6789 u64 reserved_53_63 : 11;
6790 } s;
6791 /* struct nixx_af_tl1x_shape_state_s cn; */
6792};
6793
6794static inline u64 NIXX_AF_TL1X_SHAPE_STATE(u64 a)
6795 __attribute__ ((pure, always_inline));
6796static inline u64 NIXX_AF_TL1X_SHAPE_STATE(u64 a)
6797{
6798 return 0xc50 + 0x10000 * a;
6799}
6800
6801/**
6802 * Register (RVU_PF_BAR0) nix#_af_tl1#_sw_xoff
6803 *
6804 * NIX AF Transmit Level 1 Software Controlled XOFF Registers
6805 */
6806union nixx_af_tl1x_sw_xoff {
6807 u64 u;
6808 struct nixx_af_tl1x_sw_xoff_s {
6809 u64 xoff : 1;
6810 u64 drain : 1;
6811 u64 reserved_2 : 1;
6812 u64 drain_irq : 1;
6813 u64 reserved_4_63 : 60;
6814 } s;
6815 /* struct nixx_af_tl1x_sw_xoff_s cn; */
6816};
6817
6818static inline u64 NIXX_AF_TL1X_SW_XOFF(u64 a)
6819 __attribute__ ((pure, always_inline));
6820static inline u64 NIXX_AF_TL1X_SW_XOFF(u64 a)
6821{
6822 return 0xc70 + 0x10000 * a;
6823}
6824
6825/**
6826 * Register (RVU_PF_BAR0) nix#_af_tl1#_topology
6827 *
6828 * NIX AF Transmit Level 1 Topology Registers
6829 */
6830union nixx_af_tl1x_topology {
6831 u64 u;
6832 struct nixx_af_tl1x_topology_s {
6833 u64 reserved_0 : 1;
6834 u64 rr_prio : 4;
6835 u64 reserved_5_31 : 27;
6836 u64 prio_anchor : 8;
6837 u64 reserved_40_63 : 24;
6838 } s;
6839 /* struct nixx_af_tl1x_topology_s cn; */
6840};
6841
6842static inline u64 NIXX_AF_TL1X_TOPOLOGY(u64 a)
6843 __attribute__ ((pure, always_inline));
6844static inline u64 NIXX_AF_TL1X_TOPOLOGY(u64 a)
6845{
6846 return 0xc80 + 0x10000 * a;
6847}
6848
6849/**
6850 * Register (RVU_PF_BAR0) nix#_af_tl1#_yellow
6851 *
6852 * INTERNAL: NIX Transmit Level 1 Yellow State Debug Register
6853 */
6854union nixx_af_tl1x_yellow {
6855 u64 u;
6856 struct nixx_af_tl1x_yellow_s {
6857 u64 tail : 8;
6858 u64 reserved_8_9 : 2;
6859 u64 head : 8;
6860 u64 reserved_18_63 : 46;
6861 } s;
6862 /* struct nixx_af_tl1x_yellow_s cn; */
6863};
6864
6865static inline u64 NIXX_AF_TL1X_YELLOW(u64 a)
6866 __attribute__ ((pure, always_inline));
6867static inline u64 NIXX_AF_TL1X_YELLOW(u64 a)
6868{
6869 return 0xca0 + 0x10000 * a;
6870}
6871
6872/**
6873 * Register (RVU_PF_BAR0) nix#_af_tl1#_yellow_bytes
6874 *
6875 * NIX AF Transmit Level 1 Yellow Sent Bytes Registers This register has
6876 * the same bit fields as NIX_AF_TL1()_GREEN_BYTES.
6877 */
6878union nixx_af_tl1x_yellow_bytes {
6879 u64 u;
6880 struct nixx_af_tl1x_yellow_bytes_s {
6881 u64 count : 48;
6882 u64 reserved_48_63 : 16;
6883 } s;
6884 /* struct nixx_af_tl1x_yellow_bytes_s cn; */
6885};
6886
6887static inline u64 NIXX_AF_TL1X_YELLOW_BYTES(u64 a)
6888 __attribute__ ((pure, always_inline));
6889static inline u64 NIXX_AF_TL1X_YELLOW_BYTES(u64 a)
6890{
6891 return 0xd70 + 0x10000 * a;
6892}
6893
6894/**
6895 * Register (RVU_PF_BAR0) nix#_af_tl1#_yellow_packets
6896 *
6897 * NIX AF Transmit Level 1 Yellow Sent Packets Registers This register
6898 * has the same bit fields as NIX_AF_TL1()_GREEN_PACKETS.
6899 */
6900union nixx_af_tl1x_yellow_packets {
6901 u64 u;
6902 struct nixx_af_tl1x_yellow_packets_s {
6903 u64 count : 40;
6904 u64 reserved_40_63 : 24;
6905 } s;
6906 /* struct nixx_af_tl1x_yellow_packets_s cn; */
6907};
6908
6909static inline u64 NIXX_AF_TL1X_YELLOW_PACKETS(u64 a)
6910 __attribute__ ((pure, always_inline));
6911static inline u64 NIXX_AF_TL1X_YELLOW_PACKETS(u64 a)
6912{
6913 return 0xd60 + 0x10000 * a;
6914}
6915
6916/**
6917 * Register (RVU_PF_BAR0) nix#_af_tl1_const
6918 *
6919 * NIX AF Transmit Level 1 Constants Register This register contains
6920 * constants for software discovery.
6921 */
6922union nixx_af_tl1_const {
6923 u64 u;
6924 struct nixx_af_tl1_const_s {
6925 u64 count : 16;
6926 u64 reserved_16_63 : 48;
6927 } s;
6928 /* struct nixx_af_tl1_const_s cn; */
6929};
6930
6931static inline u64 NIXX_AF_TL1_CONST(void)
6932 __attribute__ ((pure, always_inline));
6933static inline u64 NIXX_AF_TL1_CONST(void)
6934{
6935 return 0x70;
6936}
6937
6938/**
6939 * Register (RVU_PF_BAR0) nix#_af_tl2#_cir
6940 *
6941 * NIX AF Transmit Level 2 Committed Information Rate Registers This
6942 * register has the same bit fields as NIX_AF_TL1()_CIR.
6943 */
6944union nixx_af_tl2x_cir {
6945 u64 u;
6946 struct nixx_af_tl2x_cir_s {
6947 u64 enable : 1;
6948 u64 rate_mantissa : 8;
6949 u64 rate_exponent : 4;
6950 u64 rate_divider_exponent : 4;
6951 u64 reserved_17_28 : 12;
6952 u64 burst_mantissa : 8;
6953 u64 burst_exponent : 4;
6954 u64 reserved_41_63 : 23;
6955 } s;
6956 /* struct nixx_af_tl2x_cir_s cn; */
6957};
6958
6959static inline u64 NIXX_AF_TL2X_CIR(u64 a)
6960 __attribute__ ((pure, always_inline));
6961static inline u64 NIXX_AF_TL2X_CIR(u64 a)
6962{
6963 return 0xe20 + 0x10000 * a;
6964}
6965
6966/**
6967 * Register (RVU_PF_BAR0) nix#_af_tl2#_green
6968 *
6969 * INTERNAL: NIX Transmit Level 2 Green State Debug Register This
6970 * register has the same bit fields as NIX_AF_TL1()_GREEN.
6971 */
6972union nixx_af_tl2x_green {
6973 u64 u;
6974 struct nixx_af_tl2x_green_s {
6975 u64 tail : 8;
6976 u64 reserved_8_9 : 2;
6977 u64 head : 8;
6978 u64 reserved_18_19 : 2;
6979 u64 active_vec : 20;
6980 u64 rr_active : 1;
6981 u64 reserved_41_63 : 23;
6982 } s;
6983 /* struct nixx_af_tl2x_green_s cn; */
6984};
6985
6986static inline u64 NIXX_AF_TL2X_GREEN(u64 a)
6987 __attribute__ ((pure, always_inline));
6988static inline u64 NIXX_AF_TL2X_GREEN(u64 a)
6989{
6990 return 0xe90 + 0x10000 * a;
6991}
6992
6993/**
6994 * Register (RVU_PF_BAR0) nix#_af_tl2#_md_debug0
6995 *
6996 * NIX AF Transmit Level 2 Meta Descriptor Debug 0 Registers See
6997 * NIX_AF_TL1()_MD_DEBUG0
6998 */
6999union nixx_af_tl2x_md_debug0 {
7000 u64 u;
7001 struct nixx_af_tl2x_md_debug0_s {
7002 u64 pmd0_length : 16;
7003 u64 pmd1_length : 16;
7004 u64 pmd0_vld : 1;
7005 u64 pmd1_vld : 1;
7006 u64 reserved_34_45 : 12;
7007 u64 drain_pri : 1;
7008 u64 drain : 1;
7009 u64 c_con : 1;
7010 u64 p_con : 1;
7011 u64 reserved_50_51 : 2;
7012 u64 child : 10;
7013 u64 reserved_62 : 1;
7014 u64 pmd_count : 1;
7015 } s;
7016 /* struct nixx_af_tl2x_md_debug0_s cn96xxp1; */
7017 struct nixx_af_tl2x_md_debug0_cn96xxp3 {
7018 u64 pmd0_length : 16;
7019 u64 reserved_16_31 : 16;
7020 u64 pmd0_vld : 1;
7021 u64 reserved_33 : 1;
7022 u64 reserved_34_45 : 12;
7023 u64 reserved_46 : 1;
7024 u64 reserved_47 : 1;
7025 u64 c_con : 1;
7026 u64 p_con : 1;
7027 u64 reserved_50_51 : 2;
7028 u64 child : 10;
7029 u64 reserved_62 : 1;
7030 u64 reserved_63 : 1;
7031 } cn96xxp3;
7032 /* struct nixx_af_tl2x_md_debug0_s cnf95xx; */
7033};
7034
7035static inline u64 NIXX_AF_TL2X_MD_DEBUG0(u64 a)
7036 __attribute__ ((pure, always_inline));
7037static inline u64 NIXX_AF_TL2X_MD_DEBUG0(u64 a)
7038{
7039 return 0xec0 + 0x10000 * a;
7040}
7041
7042/**
7043 * Register (RVU_PF_BAR0) nix#_af_tl2#_md_debug1
7044 *
7045 * NIX AF Transmit Level 2 Meta Descriptor Debug 1 Registers Packet meta
7046 * descriptor 0 debug. See NIX_AF_TL1()_MD_DEBUG0.
7047 */
7048union nixx_af_tl2x_md_debug1 {
7049 u64 u;
7050 struct nixx_af_tl2x_md_debug1_s {
7051 u64 reserved_0_5 : 6;
7052 u64 red_algo_override : 2;
7053 u64 cir_dis : 1;
7054 u64 pir_dis : 1;
7055 u64 adjust : 9;
7056 u64 uid : 4;
7057 u64 reserved_23 : 1;
7058 u64 bubble : 1;
7059 u64 color : 2;
7060 u64 pse_pkt_id : 9;
7061 u64 reserved_36 : 1;
7062 u64 tx_pkt_p2x : 2;
7063 u64 sqm_pkt_id : 13;
7064 u64 mdq_idx : 10;
7065 u64 reserved_62 : 1;
7066 u64 vld : 1;
7067 } s;
7068 struct nixx_af_tl2x_md_debug1_cn96xxp1 {
7069 u64 reserved_0_5 : 6;
7070 u64 red_algo_override : 2;
7071 u64 cir_dis : 1;
7072 u64 pir_dis : 1;
7073 u64 adjust : 9;
7074 u64 uid : 4;
7075 u64 drain : 1;
7076 u64 bubble : 1;
7077 u64 color : 2;
7078 u64 pse_pkt_id : 9;
7079 u64 reserved_36 : 1;
7080 u64 tx_pkt_p2x : 2;
7081 u64 sqm_pkt_id : 13;
7082 u64 mdq_idx : 10;
7083 u64 reserved_62 : 1;
7084 u64 vld : 1;
7085 } cn96xxp1;
7086 struct nixx_af_tl2x_md_debug1_cn96xxp3 {
7087 u64 reserved_0_5 : 6;
7088 u64 red_algo_override : 2;
7089 u64 cir_dis : 1;
7090 u64 pir_dis : 1;
7091 u64 adjust : 9;
7092 u64 reserved_19_22 : 4;
7093 u64 flush : 1;
7094 u64 bubble : 1;
7095 u64 color : 2;
7096 u64 pse_pkt_id : 9;
7097 u64 reserved_36 : 1;
7098 u64 tx_pkt_p2x : 2;
7099 u64 sqm_pkt_id : 13;
7100 u64 mdq_idx : 10;
7101 u64 reserved_62 : 1;
7102 u64 vld : 1;
7103 } cn96xxp3;
7104 /* struct nixx_af_tl2x_md_debug1_cn96xxp1 cnf95xx; */
7105};
7106
7107static inline u64 NIXX_AF_TL2X_MD_DEBUG1(u64 a)
7108 __attribute__ ((pure, always_inline));
7109static inline u64 NIXX_AF_TL2X_MD_DEBUG1(u64 a)
7110{
7111 return 0xec8 + 0x10000 * a;
7112}
7113
7114/**
7115 * Register (RVU_PF_BAR0) nix#_af_tl2#_md_debug2
7116 *
7117 * NIX AF Transmit Level 2 Meta Descriptor Debug 2 Registers Packet meta
7118 * descriptor 1 debug. See NIX_AF_TL1()_MD_DEBUG0.
7119 */
7120union nixx_af_tl2x_md_debug2 {
7121 u64 u;
7122 struct nixx_af_tl2x_md_debug2_s {
7123 u64 reserved_0_5 : 6;
7124 u64 red_algo_override : 2;
7125 u64 cir_dis : 1;
7126 u64 pir_dis : 1;
7127 u64 adjust : 9;
7128 u64 uid : 4;
7129 u64 reserved_23 : 1;
7130 u64 bubble : 1;
7131 u64 color : 2;
7132 u64 pse_pkt_id : 9;
7133 u64 reserved_36 : 1;
7134 u64 tx_pkt_p2x : 2;
7135 u64 sqm_pkt_id : 13;
7136 u64 mdq_idx : 10;
7137 u64 reserved_62 : 1;
7138 u64 vld : 1;
7139 } s;
7140 struct nixx_af_tl2x_md_debug2_cn96xxp1 {
7141 u64 reserved_0_5 : 6;
7142 u64 red_algo_override : 2;
7143 u64 cir_dis : 1;
7144 u64 pir_dis : 1;
7145 u64 adjust : 9;
7146 u64 uid : 4;
7147 u64 drain : 1;
7148 u64 bubble : 1;
7149 u64 color : 2;
7150 u64 pse_pkt_id : 9;
7151 u64 reserved_36 : 1;
7152 u64 tx_pkt_p2x : 2;
7153 u64 sqm_pkt_id : 13;
7154 u64 mdq_idx : 10;
7155 u64 reserved_62 : 1;
7156 u64 vld : 1;
7157 } cn96xxp1;
7158 struct nixx_af_tl2x_md_debug2_cn96xxp3 {
7159 u64 reserved_0_5 : 6;
7160 u64 red_algo_override : 2;
7161 u64 cir_dis : 1;
7162 u64 pir_dis : 1;
7163 u64 adjust : 9;
7164 u64 reserved_19_22 : 4;
7165 u64 flush : 1;
7166 u64 bubble : 1;
7167 u64 color : 2;
7168 u64 pse_pkt_id : 9;
7169 u64 reserved_36 : 1;
7170 u64 tx_pkt_p2x : 2;
7171 u64 sqm_pkt_id : 13;
7172 u64 mdq_idx : 10;
7173 u64 reserved_62 : 1;
7174 u64 vld : 1;
7175 } cn96xxp3;
7176 /* struct nixx_af_tl2x_md_debug2_cn96xxp1 cnf95xx; */
7177};
7178
7179static inline u64 NIXX_AF_TL2X_MD_DEBUG2(u64 a)
7180 __attribute__ ((pure, always_inline));
7181static inline u64 NIXX_AF_TL2X_MD_DEBUG2(u64 a)
7182{
7183 return 0xed0 + 0x10000 * a;
7184}
7185
7186/**
7187 * Register (RVU_PF_BAR0) nix#_af_tl2#_md_debug3
7188 *
7189 * NIX AF Transmit Level 2 Meta Descriptor Debug 3 Registers Flush meta
7190 * descriptor debug. See NIX_AF_TL1()_MD_DEBUG0.
7191 */
7192union nixx_af_tl2x_md_debug3 {
7193 u64 u;
7194 struct nixx_af_tl2x_md_debug3_s {
7195 u64 reserved_0_36 : 37;
7196 u64 tx_pkt_p2x : 2;
7197 u64 sqm_pkt_id : 13;
7198 u64 mdq_idx : 10;
7199 u64 reserved_62 : 1;
7200 u64 vld : 1;
7201 } s;
7202 /* struct nixx_af_tl2x_md_debug3_s cn96xxp1; */
7203 struct nixx_af_tl2x_md_debug3_cn96xxp3 {
7204 u64 reserved_0_36 : 37;
7205 u64 reserved_37_38 : 2;
7206 u64 reserved_39_51 : 13;
7207 u64 reserved_52_61 : 10;
7208 u64 reserved_62 : 1;
7209 u64 reserved_63 : 1;
7210 } cn96xxp3;
7211 /* struct nixx_af_tl2x_md_debug3_s cnf95xx; */
7212};
7213
7214static inline u64 NIXX_AF_TL2X_MD_DEBUG3(u64 a)
7215 __attribute__ ((pure, always_inline));
7216static inline u64 NIXX_AF_TL2X_MD_DEBUG3(u64 a)
7217{
7218 return 0xed8 + 0x10000 * a;
7219}
7220
7221/**
7222 * Register (RVU_PF_BAR0) nix#_af_tl2#_parent
7223 *
7224 * NIX AF Transmit Level 2 Parent Registers
7225 */
7226union nixx_af_tl2x_parent {
7227 u64 u;
7228 struct nixx_af_tl2x_parent_s {
7229 u64 reserved_0_15 : 16;
7230 u64 parent : 5;
7231 u64 reserved_21_63 : 43;
7232 } s;
7233 /* struct nixx_af_tl2x_parent_s cn; */
7234};
7235
7236static inline u64 NIXX_AF_TL2X_PARENT(u64 a)
7237 __attribute__ ((pure, always_inline));
7238static inline u64 NIXX_AF_TL2X_PARENT(u64 a)
7239{
7240 return 0xe88 + 0x10000 * a;
7241}
7242
7243/**
7244 * Register (RVU_PF_BAR0) nix#_af_tl2#_pir
7245 *
7246 * NIX AF Transmit Level 2 Peak Information Rate Registers This register
7247 * has the same bit fields as NIX_AF_TL1()_CIR.
7248 */
7249union nixx_af_tl2x_pir {
7250 u64 u;
7251 struct nixx_af_tl2x_pir_s {
7252 u64 enable : 1;
7253 u64 rate_mantissa : 8;
7254 u64 rate_exponent : 4;
7255 u64 rate_divider_exponent : 4;
7256 u64 reserved_17_28 : 12;
7257 u64 burst_mantissa : 8;
7258 u64 burst_exponent : 4;
7259 u64 reserved_41_63 : 23;
7260 } s;
7261 /* struct nixx_af_tl2x_pir_s cn; */
7262};
7263
7264static inline u64 NIXX_AF_TL2X_PIR(u64 a)
7265 __attribute__ ((pure, always_inline));
7266static inline u64 NIXX_AF_TL2X_PIR(u64 a)
7267{
7268 return 0xe30 + 0x10000 * a;
7269}
7270
7271/**
7272 * Register (RVU_PF_BAR0) nix#_af_tl2#_pointers
7273 *
7274 * INTERNAL: NIX Transmit Level 2 Linked List Pointers Debug Register
7275 */
7276union nixx_af_tl2x_pointers {
7277 u64 u;
7278 struct nixx_af_tl2x_pointers_s {
7279 u64 next : 8;
7280 u64 reserved_8_15 : 8;
7281 u64 prev : 8;
7282 u64 reserved_24_63 : 40;
7283 } s;
7284 /* struct nixx_af_tl2x_pointers_s cn; */
7285};
7286
7287static inline u64 NIXX_AF_TL2X_POINTERS(u64 a)
7288 __attribute__ ((pure, always_inline));
7289static inline u64 NIXX_AF_TL2X_POINTERS(u64 a)
7290{
7291 return 0xe60 + 0x10000 * a;
7292}
7293
7294/**
7295 * Register (RVU_PF_BAR0) nix#_af_tl2#_red
7296 *
7297 * INTERNAL: NIX Transmit Level 2 Red State Debug Register This register
7298 * has the same bit fields as NIX_AF_TL1()_RED.
7299 */
7300union nixx_af_tl2x_red {
7301 u64 u;
7302 struct nixx_af_tl2x_red_s {
7303 u64 tail : 8;
7304 u64 reserved_8_9 : 2;
7305 u64 head : 8;
7306 u64 reserved_18_63 : 46;
7307 } s;
7308 /* struct nixx_af_tl2x_red_s cn; */
7309};
7310
7311static inline u64 NIXX_AF_TL2X_RED(u64 a)
7312 __attribute__ ((pure, always_inline));
7313static inline u64 NIXX_AF_TL2X_RED(u64 a)
7314{
7315 return 0xeb0 + 0x10000 * a;
7316}
7317
7318/**
7319 * Register (RVU_PF_BAR0) nix#_af_tl2#_sched_state
7320 *
7321 * NIX AF Transmit Level 2 Scheduling Control State Registers
7322 */
7323union nixx_af_tl2x_sched_state {
7324 u64 u;
7325 struct nixx_af_tl2x_sched_state_s {
7326 u64 rr_count : 25;
7327 u64 reserved_25_63 : 39;
7328 } s;
7329 /* struct nixx_af_tl2x_sched_state_s cn; */
7330};
7331
7332static inline u64 NIXX_AF_TL2X_SCHED_STATE(u64 a)
7333 __attribute__ ((pure, always_inline));
7334static inline u64 NIXX_AF_TL2X_SCHED_STATE(u64 a)
7335{
7336 return 0xe40 + 0x10000 * a;
7337}
7338
7339/**
7340 * Register (RVU_PF_BAR0) nix#_af_tl2#_schedule
7341 *
7342 * NIX AF Transmit Level 2 Scheduling Control Registers
7343 */
7344union nixx_af_tl2x_schedule {
7345 u64 u;
7346 struct nixx_af_tl2x_schedule_s {
7347 u64 rr_quantum : 24;
7348 u64 prio : 4;
7349 u64 reserved_28_63 : 36;
7350 } s;
7351 /* struct nixx_af_tl2x_schedule_s cn; */
7352};
7353
7354static inline u64 NIXX_AF_TL2X_SCHEDULE(u64 a)
7355 __attribute__ ((pure, always_inline));
7356static inline u64 NIXX_AF_TL2X_SCHEDULE(u64 a)
7357{
7358 return 0xe00 + 0x10000 * a;
7359}
7360
7361/**
7362 * Register (RVU_PF_BAR0) nix#_af_tl2#_shape
7363 *
7364 * NIX AF Transmit Level 2 Shaping Control Registers
7365 */
7366union nixx_af_tl2x_shape {
7367 u64 u;
7368 struct nixx_af_tl2x_shape_s {
7369 u64 adjust : 9;
7370 u64 red_algo : 2;
7371 u64 red_disable : 1;
7372 u64 yellow_disable : 1;
7373 u64 reserved_13_23 : 11;
7374 u64 length_disable : 1;
7375 u64 schedule_list : 2;
7376 u64 reserved_27_63 : 37;
7377 } s;
7378 /* struct nixx_af_tl2x_shape_s cn; */
7379};
7380
7381static inline u64 NIXX_AF_TL2X_SHAPE(u64 a)
7382 __attribute__ ((pure, always_inline));
7383static inline u64 NIXX_AF_TL2X_SHAPE(u64 a)
7384{
7385 return 0xe10 + 0x10000 * a;
7386}
7387
7388/**
7389 * Register (RVU_PF_BAR0) nix#_af_tl2#_shape_state
7390 *
7391 * NIX AF Transmit Level 2 Shape State Registers This register must not
7392 * be written during normal operation.
7393 */
7394union nixx_af_tl2x_shape_state {
7395 u64 u;
7396 struct nixx_af_tl2x_shape_state_s {
7397 u64 cir_accum : 26;
7398 u64 pir_accum : 26;
7399 u64 color : 2;
7400 u64 reserved_54_63 : 10;
7401 } s;
7402 /* struct nixx_af_tl2x_shape_state_s cn; */
7403};
7404
7405static inline u64 NIXX_AF_TL2X_SHAPE_STATE(u64 a)
7406 __attribute__ ((pure, always_inline));
7407static inline u64 NIXX_AF_TL2X_SHAPE_STATE(u64 a)
7408{
7409 return 0xe50 + 0x10000 * a;
7410}
7411
7412/**
7413 * Register (RVU_PF_BAR0) nix#_af_tl2#_sw_xoff
7414 *
7415 * NIX AF Transmit Level 2 Software Controlled XOFF Registers This
7416 * register has the same bit fields as NIX_AF_TL1()_SW_XOFF.
7417 */
7418union nixx_af_tl2x_sw_xoff {
7419 u64 u;
7420 struct nixx_af_tl2x_sw_xoff_s {
7421 u64 xoff : 1;
7422 u64 drain : 1;
7423 u64 reserved_2 : 1;
7424 u64 drain_irq : 1;
7425 u64 reserved_4_63 : 60;
7426 } s;
7427 /* struct nixx_af_tl2x_sw_xoff_s cn; */
7428};
7429
7430static inline u64 NIXX_AF_TL2X_SW_XOFF(u64 a)
7431 __attribute__ ((pure, always_inline));
7432static inline u64 NIXX_AF_TL2X_SW_XOFF(u64 a)
7433{
7434 return 0xe70 + 0x10000 * a;
7435}
7436
7437/**
7438 * Register (RVU_PF_BAR0) nix#_af_tl2#_topology
7439 *
7440 * NIX AF Transmit Level 2 Topology Registers
7441 */
7442union nixx_af_tl2x_topology {
7443 u64 u;
7444 struct nixx_af_tl2x_topology_s {
7445 u64 reserved_0 : 1;
7446 u64 rr_prio : 4;
7447 u64 reserved_5_31 : 27;
7448 u64 prio_anchor : 8;
7449 u64 reserved_40_63 : 24;
7450 } s;
7451 /* struct nixx_af_tl2x_topology_s cn; */
7452};
7453
7454static inline u64 NIXX_AF_TL2X_TOPOLOGY(u64 a)
7455 __attribute__ ((pure, always_inline));
7456static inline u64 NIXX_AF_TL2X_TOPOLOGY(u64 a)
7457{
7458 return 0xe80 + 0x10000 * a;
7459}
7460
7461/**
7462 * Register (RVU_PF_BAR0) nix#_af_tl2#_yellow
7463 *
7464 * INTERNAL: NIX Transmit Level 2 Yellow State Debug Register This
7465 * register has the same bit fields as NIX_AF_TL1()_YELLOW.
7466 */
7467union nixx_af_tl2x_yellow {
7468 u64 u;
7469 struct nixx_af_tl2x_yellow_s {
7470 u64 tail : 8;
7471 u64 reserved_8_9 : 2;
7472 u64 head : 8;
7473 u64 reserved_18_63 : 46;
7474 } s;
7475 /* struct nixx_af_tl2x_yellow_s cn; */
7476};
7477
7478static inline u64 NIXX_AF_TL2X_YELLOW(u64 a)
7479 __attribute__ ((pure, always_inline));
7480static inline u64 NIXX_AF_TL2X_YELLOW(u64 a)
7481{
7482 return 0xea0 + 0x10000 * a;
7483}
7484
7485/**
7486 * Register (RVU_PF_BAR0) nix#_af_tl2_const
7487 *
7488 * NIX AF Transmit Level 2 Constants Register This register contains
7489 * constants for software discovery.
7490 */
7491union nixx_af_tl2_const {
7492 u64 u;
7493 struct nixx_af_tl2_const_s {
7494 u64 count : 16;
7495 u64 reserved_16_63 : 48;
7496 } s;
7497 /* struct nixx_af_tl2_const_s cn; */
7498};
7499
7500static inline u64 NIXX_AF_TL2_CONST(void)
7501 __attribute__ ((pure, always_inline));
7502static inline u64 NIXX_AF_TL2_CONST(void)
7503{
7504 return 0x78;
7505}
7506
7507/**
7508 * Register (RVU_PF_BAR0) nix#_af_tl3#_cir
7509 *
7510 * NIX AF Transmit Level 3 Committed Information Rate Registers This
7511 * register has the same bit fields as NIX_AF_TL1()_CIR.
7512 */
7513union nixx_af_tl3x_cir {
7514 u64 u;
7515 struct nixx_af_tl3x_cir_s {
7516 u64 enable : 1;
7517 u64 rate_mantissa : 8;
7518 u64 rate_exponent : 4;
7519 u64 rate_divider_exponent : 4;
7520 u64 reserved_17_28 : 12;
7521 u64 burst_mantissa : 8;
7522 u64 burst_exponent : 4;
7523 u64 reserved_41_63 : 23;
7524 } s;
7525 /* struct nixx_af_tl3x_cir_s cn; */
7526};
7527
7528static inline u64 NIXX_AF_TL3X_CIR(u64 a)
7529 __attribute__ ((pure, always_inline));
7530static inline u64 NIXX_AF_TL3X_CIR(u64 a)
7531{
7532 return 0x1020 + 0x10000 * a;
7533}
7534
7535/**
7536 * Register (RVU_PF_BAR0) nix#_af_tl3#_green
7537 *
7538 * INTERNAL: NIX Transmit Level 3 Green State Debug Register
7539 */
7540union nixx_af_tl3x_green {
7541 u64 u;
7542 struct nixx_af_tl3x_green_s {
7543 u64 tail : 9;
7544 u64 reserved_9 : 1;
7545 u64 head : 9;
7546 u64 reserved_19 : 1;
7547 u64 active_vec : 20;
7548 u64 rr_active : 1;
7549 u64 reserved_41_63 : 23;
7550 } s;
7551 /* struct nixx_af_tl3x_green_s cn; */
7552};
7553
7554static inline u64 NIXX_AF_TL3X_GREEN(u64 a)
7555 __attribute__ ((pure, always_inline));
7556static inline u64 NIXX_AF_TL3X_GREEN(u64 a)
7557{
7558 return 0x1090 + 0x10000 * a;
7559}
7560
7561/**
7562 * Register (RVU_PF_BAR0) nix#_af_tl3#_md_debug0
7563 *
7564 * NIX AF Transmit Level 3 Meta Descriptor Debug 0 Registers See
7565 * NIX_AF_TL1()_MD_DEBUG0.
7566 */
7567union nixx_af_tl3x_md_debug0 {
7568 u64 u;
7569 struct nixx_af_tl3x_md_debug0_s {
7570 u64 pmd0_length : 16;
7571 u64 pmd1_length : 16;
7572 u64 pmd0_vld : 1;
7573 u64 pmd1_vld : 1;
7574 u64 reserved_34_45 : 12;
7575 u64 drain_pri : 1;
7576 u64 drain : 1;
7577 u64 c_con : 1;
7578 u64 p_con : 1;
7579 u64 reserved_50_51 : 2;
7580 u64 child : 10;
7581 u64 reserved_62 : 1;
7582 u64 pmd_count : 1;
7583 } s;
7584 /* struct nixx_af_tl3x_md_debug0_s cn96xxp1; */
7585 struct nixx_af_tl3x_md_debug0_cn96xxp3 {
7586 u64 pmd0_length : 16;
7587 u64 reserved_16_31 : 16;
7588 u64 pmd0_vld : 1;
7589 u64 reserved_33 : 1;
7590 u64 reserved_34_45 : 12;
7591 u64 reserved_46 : 1;
7592 u64 reserved_47 : 1;
7593 u64 c_con : 1;
7594 u64 p_con : 1;
7595 u64 reserved_50_51 : 2;
7596 u64 child : 10;
7597 u64 reserved_62 : 1;
7598 u64 reserved_63 : 1;
7599 } cn96xxp3;
7600 /* struct nixx_af_tl3x_md_debug0_s cnf95xx; */
7601};
7602
7603static inline u64 NIXX_AF_TL3X_MD_DEBUG0(u64 a)
7604 __attribute__ ((pure, always_inline));
7605static inline u64 NIXX_AF_TL3X_MD_DEBUG0(u64 a)
7606{
7607 return 0x10c0 + 0x10000 * a;
7608}
7609
7610/**
7611 * Register (RVU_PF_BAR0) nix#_af_tl3#_md_debug1
7612 *
7613 * NIX AF Transmit Level 3 Meta Descriptor Debug 1 Registers Packet meta
7614 * descriptor 0 debug. See NIX_AF_TL1()_MD_DEBUG0.
7615 */
7616union nixx_af_tl3x_md_debug1 {
7617 u64 u;
7618 struct nixx_af_tl3x_md_debug1_s {
7619 u64 reserved_0_5 : 6;
7620 u64 red_algo_override : 2;
7621 u64 cir_dis : 1;
7622 u64 pir_dis : 1;
7623 u64 adjust : 9;
7624 u64 uid : 4;
7625 u64 reserved_23 : 1;
7626 u64 bubble : 1;
7627 u64 color : 2;
7628 u64 pse_pkt_id : 9;
7629 u64 reserved_36 : 1;
7630 u64 tx_pkt_p2x : 2;
7631 u64 sqm_pkt_id : 13;
7632 u64 mdq_idx : 10;
7633 u64 reserved_62 : 1;
7634 u64 vld : 1;
7635 } s;
7636 struct nixx_af_tl3x_md_debug1_cn96xxp1 {
7637 u64 reserved_0_5 : 6;
7638 u64 red_algo_override : 2;
7639 u64 cir_dis : 1;
7640 u64 pir_dis : 1;
7641 u64 adjust : 9;
7642 u64 uid : 4;
7643 u64 drain : 1;
7644 u64 bubble : 1;
7645 u64 color : 2;
7646 u64 pse_pkt_id : 9;
7647 u64 reserved_36 : 1;
7648 u64 tx_pkt_p2x : 2;
7649 u64 sqm_pkt_id : 13;
7650 u64 mdq_idx : 10;
7651 u64 reserved_62 : 1;
7652 u64 vld : 1;
7653 } cn96xxp1;
7654 struct nixx_af_tl3x_md_debug1_cn96xxp3 {
7655 u64 reserved_0_5 : 6;
7656 u64 red_algo_override : 2;
7657 u64 cir_dis : 1;
7658 u64 pir_dis : 1;
7659 u64 adjust : 9;
7660 u64 reserved_19_22 : 4;
7661 u64 flush : 1;
7662 u64 bubble : 1;
7663 u64 color : 2;
7664 u64 pse_pkt_id : 9;
7665 u64 reserved_36 : 1;
7666 u64 tx_pkt_p2x : 2;
7667 u64 sqm_pkt_id : 13;
7668 u64 mdq_idx : 10;
7669 u64 reserved_62 : 1;
7670 u64 vld : 1;
7671 } cn96xxp3;
7672 /* struct nixx_af_tl3x_md_debug1_cn96xxp1 cnf95xx; */
7673};
7674
7675static inline u64 NIXX_AF_TL3X_MD_DEBUG1(u64 a)
7676 __attribute__ ((pure, always_inline));
7677static inline u64 NIXX_AF_TL3X_MD_DEBUG1(u64 a)
7678{
7679 return 0x10c8 + 0x10000 * a;
7680}
7681
7682/**
7683 * Register (RVU_PF_BAR0) nix#_af_tl3#_md_debug2
7684 *
7685 * NIX AF Transmit Level 3 Meta Descriptor Debug 2 Registers Packet meta
7686 * descriptor 1 debug. See NIX_AF_TL1()_MD_DEBUG0.
7687 */
7688union nixx_af_tl3x_md_debug2 {
7689 u64 u;
7690 struct nixx_af_tl3x_md_debug2_s {
7691 u64 reserved_0_5 : 6;
7692 u64 red_algo_override : 2;
7693 u64 cir_dis : 1;
7694 u64 pir_dis : 1;
7695 u64 adjust : 9;
7696 u64 uid : 4;
7697 u64 reserved_23 : 1;
7698 u64 bubble : 1;
7699 u64 color : 2;
7700 u64 pse_pkt_id : 9;
7701 u64 reserved_36 : 1;
7702 u64 tx_pkt_p2x : 2;
7703 u64 sqm_pkt_id : 13;
7704 u64 mdq_idx : 10;
7705 u64 reserved_62 : 1;
7706 u64 vld : 1;
7707 } s;
7708 struct nixx_af_tl3x_md_debug2_cn96xxp1 {
7709 u64 reserved_0_5 : 6;
7710 u64 red_algo_override : 2;
7711 u64 cir_dis : 1;
7712 u64 pir_dis : 1;
7713 u64 adjust : 9;
7714 u64 uid : 4;
7715 u64 drain : 1;
7716 u64 bubble : 1;
7717 u64 color : 2;
7718 u64 pse_pkt_id : 9;
7719 u64 reserved_36 : 1;
7720 u64 tx_pkt_p2x : 2;
7721 u64 sqm_pkt_id : 13;
7722 u64 mdq_idx : 10;
7723 u64 reserved_62 : 1;
7724 u64 vld : 1;
7725 } cn96xxp1;
7726 struct nixx_af_tl3x_md_debug2_cn96xxp3 {
7727 u64 reserved_0_5 : 6;
7728 u64 red_algo_override : 2;
7729 u64 cir_dis : 1;
7730 u64 pir_dis : 1;
7731 u64 adjust : 9;
7732 u64 reserved_19_22 : 4;
7733 u64 flush : 1;
7734 u64 bubble : 1;
7735 u64 color : 2;
7736 u64 pse_pkt_id : 9;
7737 u64 reserved_36 : 1;
7738 u64 tx_pkt_p2x : 2;
7739 u64 sqm_pkt_id : 13;
7740 u64 mdq_idx : 10;
7741 u64 reserved_62 : 1;
7742 u64 vld : 1;
7743 } cn96xxp3;
7744 /* struct nixx_af_tl3x_md_debug2_cn96xxp1 cnf95xx; */
7745};
7746
7747static inline u64 NIXX_AF_TL3X_MD_DEBUG2(u64 a)
7748 __attribute__ ((pure, always_inline));
7749static inline u64 NIXX_AF_TL3X_MD_DEBUG2(u64 a)
7750{
7751 return 0x10d0 + 0x10000 * a;
7752}
7753
7754/**
7755 * Register (RVU_PF_BAR0) nix#_af_tl3#_md_debug3
7756 *
7757 * NIX AF Transmit Level 3 Meta Descriptor Debug 3 Registers Flush meta
7758 * descriptor debug. See NIX_AF_TL1()_MD_DEBUG0.
7759 */
7760union nixx_af_tl3x_md_debug3 {
7761 u64 u;
7762 struct nixx_af_tl3x_md_debug3_s {
7763 u64 reserved_0_36 : 37;
7764 u64 tx_pkt_p2x : 2;
7765 u64 sqm_pkt_id : 13;
7766 u64 mdq_idx : 10;
7767 u64 reserved_62 : 1;
7768 u64 vld : 1;
7769 } s;
7770 /* struct nixx_af_tl3x_md_debug3_s cn96xxp1; */
7771 struct nixx_af_tl3x_md_debug3_cn96xxp3 {
7772 u64 reserved_0_36 : 37;
7773 u64 reserved_37_38 : 2;
7774 u64 reserved_39_51 : 13;
7775 u64 reserved_52_61 : 10;
7776 u64 reserved_62 : 1;
7777 u64 reserved_63 : 1;
7778 } cn96xxp3;
7779 /* struct nixx_af_tl3x_md_debug3_s cnf95xx; */
7780};
7781
7782static inline u64 NIXX_AF_TL3X_MD_DEBUG3(u64 a)
7783 __attribute__ ((pure, always_inline));
7784static inline u64 NIXX_AF_TL3X_MD_DEBUG3(u64 a)
7785{
7786 return 0x10d8 + 0x10000 * a;
7787}
7788
7789/**
7790 * Register (RVU_PF_BAR0) nix#_af_tl3#_parent
7791 *
7792 * NIX AF Transmit Level 3 Parent Registers
7793 */
7794union nixx_af_tl3x_parent {
7795 u64 u;
7796 struct nixx_af_tl3x_parent_s {
7797 u64 reserved_0_15 : 16;
7798 u64 parent : 8;
7799 u64 reserved_24_63 : 40;
7800 } s;
7801 /* struct nixx_af_tl3x_parent_s cn; */
7802};
7803
7804static inline u64 NIXX_AF_TL3X_PARENT(u64 a)
7805 __attribute__ ((pure, always_inline));
7806static inline u64 NIXX_AF_TL3X_PARENT(u64 a)
7807{
7808 return 0x1088 + 0x10000 * a;
7809}
7810
7811/**
7812 * Register (RVU_PF_BAR0) nix#_af_tl3#_pir
7813 *
7814 * NIX AF Transmit Level 3 Peak Information Rate Registers This register
7815 * has the same bit fields as NIX_AF_TL1()_CIR.
7816 */
7817union nixx_af_tl3x_pir {
7818 u64 u;
7819 struct nixx_af_tl3x_pir_s {
7820 u64 enable : 1;
7821 u64 rate_mantissa : 8;
7822 u64 rate_exponent : 4;
7823 u64 rate_divider_exponent : 4;
7824 u64 reserved_17_28 : 12;
7825 u64 burst_mantissa : 8;
7826 u64 burst_exponent : 4;
7827 u64 reserved_41_63 : 23;
7828 } s;
7829 /* struct nixx_af_tl3x_pir_s cn; */
7830};
7831
7832static inline u64 NIXX_AF_TL3X_PIR(u64 a)
7833 __attribute__ ((pure, always_inline));
7834static inline u64 NIXX_AF_TL3X_PIR(u64 a)
7835{
7836 return 0x1030 + 0x10000 * a;
7837}
7838
7839/**
7840 * Register (RVU_PF_BAR0) nix#_af_tl3#_pointers
7841 *
7842 * INTERNAL: NIX Transmit Level 3 Linked List Pointers Debug Register
7843 * This register has the same bit fields as NIX_AF_TL2()_POINTERS.
7844 */
7845union nixx_af_tl3x_pointers {
7846 u64 u;
7847 struct nixx_af_tl3x_pointers_s {
7848 u64 next : 8;
7849 u64 reserved_8_15 : 8;
7850 u64 prev : 8;
7851 u64 reserved_24_63 : 40;
7852 } s;
7853 /* struct nixx_af_tl3x_pointers_s cn; */
7854};
7855
7856static inline u64 NIXX_AF_TL3X_POINTERS(u64 a)
7857 __attribute__ ((pure, always_inline));
7858static inline u64 NIXX_AF_TL3X_POINTERS(u64 a)
7859{
7860 return 0x1060 + 0x10000 * a;
7861}
7862
7863/**
7864 * Register (RVU_PF_BAR0) nix#_af_tl3#_red
7865 *
7866 * INTERNAL: NIX Transmit Level 3 Red State Debug Register This register
7867 * has the same bit fields as NIX_AF_TL3()_YELLOW.
7868 */
7869union nixx_af_tl3x_red {
7870 u64 u;
7871 struct nixx_af_tl3x_red_s {
7872 u64 tail : 9;
7873 u64 reserved_9 : 1;
7874 u64 head : 9;
7875 u64 reserved_19_63 : 45;
7876 } s;
7877 /* struct nixx_af_tl3x_red_s cn; */
7878};
7879
7880static inline u64 NIXX_AF_TL3X_RED(u64 a)
7881 __attribute__ ((pure, always_inline));
7882static inline u64 NIXX_AF_TL3X_RED(u64 a)
7883{
7884 return 0x10b0 + 0x10000 * a;
7885}
7886
7887/**
7888 * Register (RVU_PF_BAR0) nix#_af_tl3#_sched_state
7889 *
7890 * NIX AF Transmit Level 3 Scheduling Control State Registers This
7891 * register has the same bit fields as NIX_AF_TL2()_SCHED_STATE.
7892 */
7893union nixx_af_tl3x_sched_state {
7894 u64 u;
7895 struct nixx_af_tl3x_sched_state_s {
7896 u64 rr_count : 25;
7897 u64 reserved_25_63 : 39;
7898 } s;
7899 /* struct nixx_af_tl3x_sched_state_s cn; */
7900};
7901
7902static inline u64 NIXX_AF_TL3X_SCHED_STATE(u64 a)
7903 __attribute__ ((pure, always_inline));
7904static inline u64 NIXX_AF_TL3X_SCHED_STATE(u64 a)
7905{
7906 return 0x1040 + 0x10000 * a;
7907}
7908
7909/**
7910 * Register (RVU_PF_BAR0) nix#_af_tl3#_schedule
7911 *
7912 * NIX AF Transmit Level 3 Scheduling Control Registers This register has
7913 * the same bit fields as NIX_AF_TL2()_SCHEDULE.
7914 */
7915union nixx_af_tl3x_schedule {
7916 u64 u;
7917 struct nixx_af_tl3x_schedule_s {
7918 u64 rr_quantum : 24;
7919 u64 prio : 4;
7920 u64 reserved_28_63 : 36;
7921 } s;
7922 /* struct nixx_af_tl3x_schedule_s cn; */
7923};
7924
7925static inline u64 NIXX_AF_TL3X_SCHEDULE(u64 a)
7926 __attribute__ ((pure, always_inline));
7927static inline u64 NIXX_AF_TL3X_SCHEDULE(u64 a)
7928{
7929 return 0x1000 + 0x10000 * a;
7930}
7931
7932/**
7933 * Register (RVU_PF_BAR0) nix#_af_tl3#_shape
7934 *
7935 * NIX AF Transmit Level 3 Shaping Control Registers
7936 */
7937union nixx_af_tl3x_shape {
7938 u64 u;
7939 struct nixx_af_tl3x_shape_s {
7940 u64 adjust : 9;
7941 u64 red_algo : 2;
7942 u64 red_disable : 1;
7943 u64 yellow_disable : 1;
7944 u64 reserved_13_23 : 11;
7945 u64 length_disable : 1;
7946 u64 schedule_list : 2;
7947 u64 reserved_27_63 : 37;
7948 } s;
7949 /* struct nixx_af_tl3x_shape_s cn; */
7950};
7951
7952static inline u64 NIXX_AF_TL3X_SHAPE(u64 a)
7953 __attribute__ ((pure, always_inline));
7954static inline u64 NIXX_AF_TL3X_SHAPE(u64 a)
7955{
7956 return 0x1010 + 0x10000 * a;
7957}
7958
7959/**
7960 * Register (RVU_PF_BAR0) nix#_af_tl3#_shape_state
7961 *
7962 * NIX AF Transmit Level 3 Shaping State Registers This register has the
7963 * same bit fields as NIX_AF_TL2()_SHAPE_STATE. This register must not be
7964 * written during normal operation.
7965 */
7966union nixx_af_tl3x_shape_state {
7967 u64 u;
7968 struct nixx_af_tl3x_shape_state_s {
7969 u64 cir_accum : 26;
7970 u64 pir_accum : 26;
7971 u64 color : 2;
7972 u64 reserved_54_63 : 10;
7973 } s;
7974 /* struct nixx_af_tl3x_shape_state_s cn; */
7975};
7976
7977static inline u64 NIXX_AF_TL3X_SHAPE_STATE(u64 a)
7978 __attribute__ ((pure, always_inline));
7979static inline u64 NIXX_AF_TL3X_SHAPE_STATE(u64 a)
7980{
7981 return 0x1050 + 0x10000 * a;
7982}
7983
7984/**
7985 * Register (RVU_PF_BAR0) nix#_af_tl3#_sw_xoff
7986 *
7987 * NIX AF Transmit Level 3 Software Controlled XOFF Registers This
7988 * register has the same bit fields as NIX_AF_TL1()_SW_XOFF
7989 */
7990union nixx_af_tl3x_sw_xoff {
7991 u64 u;
7992 struct nixx_af_tl3x_sw_xoff_s {
7993 u64 xoff : 1;
7994 u64 drain : 1;
7995 u64 reserved_2 : 1;
7996 u64 drain_irq : 1;
7997 u64 reserved_4_63 : 60;
7998 } s;
7999 /* struct nixx_af_tl3x_sw_xoff_s cn; */
8000};
8001
8002static inline u64 NIXX_AF_TL3X_SW_XOFF(u64 a)
8003 __attribute__ ((pure, always_inline));
8004static inline u64 NIXX_AF_TL3X_SW_XOFF(u64 a)
8005{
8006 return 0x1070 + 0x10000 * a;
8007}
8008
8009/**
8010 * Register (RVU_PF_BAR0) nix#_af_tl3#_topology
8011 *
8012 * NIX AF Transmit Level 3 Topology Registers
8013 */
8014union nixx_af_tl3x_topology {
8015 u64 u;
8016 struct nixx_af_tl3x_topology_s {
8017 u64 reserved_0 : 1;
8018 u64 rr_prio : 4;
8019 u64 reserved_5_31 : 27;
8020 u64 prio_anchor : 9;
8021 u64 reserved_41_63 : 23;
8022 } s;
8023 /* struct nixx_af_tl3x_topology_s cn; */
8024};
8025
8026static inline u64 NIXX_AF_TL3X_TOPOLOGY(u64 a)
8027 __attribute__ ((pure, always_inline));
8028static inline u64 NIXX_AF_TL3X_TOPOLOGY(u64 a)
8029{
8030 return 0x1080 + 0x10000 * a;
8031}
8032
8033/**
8034 * Register (RVU_PF_BAR0) nix#_af_tl3#_yellow
8035 *
8036 * INTERNAL: NIX Transmit Level 3 Yellow State Debug Register
8037 */
8038union nixx_af_tl3x_yellow {
8039 u64 u;
8040 struct nixx_af_tl3x_yellow_s {
8041 u64 tail : 9;
8042 u64 reserved_9 : 1;
8043 u64 head : 9;
8044 u64 reserved_19_63 : 45;
8045 } s;
8046 /* struct nixx_af_tl3x_yellow_s cn; */
8047};
8048
8049static inline u64 NIXX_AF_TL3X_YELLOW(u64 a)
8050 __attribute__ ((pure, always_inline));
8051static inline u64 NIXX_AF_TL3X_YELLOW(u64 a)
8052{
8053 return 0x10a0 + 0x10000 * a;
8054}
8055
8056/**
8057 * Register (RVU_PF_BAR0) nix#_af_tl3_const
8058 *
8059 * NIX AF Transmit Level 3 Constants Register This register contains
8060 * constants for software discovery.
8061 */
8062union nixx_af_tl3_const {
8063 u64 u;
8064 struct nixx_af_tl3_const_s {
8065 u64 count : 16;
8066 u64 reserved_16_63 : 48;
8067 } s;
8068 /* struct nixx_af_tl3_const_s cn; */
8069};
8070
8071static inline u64 NIXX_AF_TL3_CONST(void)
8072 __attribute__ ((pure, always_inline));
8073static inline u64 NIXX_AF_TL3_CONST(void)
8074{
8075 return 0x80;
8076}
8077
8078/**
8079 * Register (RVU_PF_BAR0) nix#_af_tl3_tl2#_bp_status
8080 *
8081 * NIX AF Transmit Level 3/2 Backpressure Status Registers
8082 */
8083union nixx_af_tl3_tl2x_bp_status {
8084 u64 u;
8085 struct nixx_af_tl3_tl2x_bp_status_s {
8086 u64 hw_xoff : 1;
8087 u64 reserved_1_63 : 63;
8088 } s;
8089 /* struct nixx_af_tl3_tl2x_bp_status_s cn; */
8090};
8091
8092static inline u64 NIXX_AF_TL3_TL2X_BP_STATUS(u64 a)
8093 __attribute__ ((pure, always_inline));
8094static inline u64 NIXX_AF_TL3_TL2X_BP_STATUS(u64 a)
8095{
8096 return 0x1610 + 0x10000 * a;
8097}
8098
8099/**
8100 * Register (RVU_PF_BAR0) nix#_af_tl3_tl2#_cfg
8101 *
8102 * NIX AF Transmit Level 3/2 Configuration Registers
8103 */
8104union nixx_af_tl3_tl2x_cfg {
8105 u64 u;
8106 struct nixx_af_tl3_tl2x_cfg_s {
8107 u64 express : 1;
8108 u64 reserved_1_63 : 63;
8109 } s;
8110 /* struct nixx_af_tl3_tl2x_cfg_s cn; */
8111};
8112
8113static inline u64 NIXX_AF_TL3_TL2X_CFG(u64 a)
8114 __attribute__ ((pure, always_inline));
8115static inline u64 NIXX_AF_TL3_TL2X_CFG(u64 a)
8116{
8117 return 0x1600 + 0x10000 * a;
8118}
8119
8120/**
8121 * Register (RVU_PF_BAR0) nix#_af_tl3_tl2#_link#_cfg
8122 *
8123 * NIX AF Transmit Level 3/2 Link Configuration Registers These registers
8124 * specify the links and associated channels that a given TL3 or TL2
8125 * queue (depending on NIX_AF_PSE_CHANNEL_LEVEL[BP_LEVEL]) can transmit
8126 * on. Each TL3/TL2 queue can be enabled to transmit on and be
8127 * backpressured by one or more links and associated channels. The last
8128 * index (LINK) is enumerated by NIX_LINK_E.
8129 */
8130union nixx_af_tl3_tl2x_linkx_cfg {
8131 u64 u;
8132 struct nixx_af_tl3_tl2x_linkx_cfg_s {
8133 u64 relchan : 8;
8134 u64 reserved_8_11 : 4;
8135 u64 ena : 1;
8136 u64 bp_ena : 1;
8137 u64 reserved_14_63 : 50;
8138 } s;
8139 /* struct nixx_af_tl3_tl2x_linkx_cfg_s cn; */
8140};
8141
8142static inline u64 NIXX_AF_TL3_TL2X_LINKX_CFG(u64 a, u64 b)
8143 __attribute__ ((pure, always_inline));
8144static inline u64 NIXX_AF_TL3_TL2X_LINKX_CFG(u64 a, u64 b)
8145{
8146 return 0x1700 + 0x10000 * a + 8 * b;
8147}
8148
8149/**
8150 * Register (RVU_PF_BAR0) nix#_af_tl4#_bp_status
8151 *
8152 * NIX AF Transmit Level 4 Backpressure Status Registers
8153 */
8154union nixx_af_tl4x_bp_status {
8155 u64 u;
8156 struct nixx_af_tl4x_bp_status_s {
8157 u64 hw_xoff : 1;
8158 u64 reserved_1_63 : 63;
8159 } s;
8160 /* struct nixx_af_tl4x_bp_status_s cn; */
8161};
8162
8163static inline u64 NIXX_AF_TL4X_BP_STATUS(u64 a)
8164 __attribute__ ((pure, always_inline));
8165static inline u64 NIXX_AF_TL4X_BP_STATUS(u64 a)
8166{
8167 return 0xb00 + 0x10000 * a;
8168}
8169
8170/**
8171 * Register (RVU_PF_BAR0) nix#_af_tl4#_cir
8172 *
8173 * NIX AF Transmit Level 4 Committed Information Rate Registers This
8174 * register has the same bit fields as NIX_AF_TL1()_CIR.
8175 */
8176union nixx_af_tl4x_cir {
8177 u64 u;
8178 struct nixx_af_tl4x_cir_s {
8179 u64 enable : 1;
8180 u64 rate_mantissa : 8;
8181 u64 rate_exponent : 4;
8182 u64 rate_divider_exponent : 4;
8183 u64 reserved_17_28 : 12;
8184 u64 burst_mantissa : 8;
8185 u64 burst_exponent : 4;
8186 u64 reserved_41_63 : 23;
8187 } s;
8188 /* struct nixx_af_tl4x_cir_s cn; */
8189};
8190
8191static inline u64 NIXX_AF_TL4X_CIR(u64 a)
8192 __attribute__ ((pure, always_inline));
8193static inline u64 NIXX_AF_TL4X_CIR(u64 a)
8194{
8195 return 0x1220 + 0x10000 * a;
8196}
8197
8198/**
8199 * Register (RVU_PF_BAR0) nix#_af_tl4#_green
8200 *
8201 * INTERNAL: NIX Transmit Level 4 Green State Debug Register This
8202 * register has the same bit fields as NIX_AF_TL3()_GREEN.
8203 */
8204union nixx_af_tl4x_green {
8205 u64 u;
8206 struct nixx_af_tl4x_green_s {
8207 u64 tail : 9;
8208 u64 reserved_9 : 1;
8209 u64 head : 9;
8210 u64 reserved_19 : 1;
8211 u64 active_vec : 20;
8212 u64 rr_active : 1;
8213 u64 reserved_41_63 : 23;
8214 } s;
8215 /* struct nixx_af_tl4x_green_s cn; */
8216};
8217
8218static inline u64 NIXX_AF_TL4X_GREEN(u64 a)
8219 __attribute__ ((pure, always_inline));
8220static inline u64 NIXX_AF_TL4X_GREEN(u64 a)
8221{
8222 return 0x1290 + 0x10000 * a;
8223}
8224
8225/**
8226 * Register (RVU_PF_BAR0) nix#_af_tl4#_md_debug0
8227 *
8228 * NIX AF Transmit Level 4 Meta Descriptor Debug 0 Registers See
8229 * NIX_AF_TL1()_MD_DEBUG0.
8230 */
8231union nixx_af_tl4x_md_debug0 {
8232 u64 u;
8233 struct nixx_af_tl4x_md_debug0_s {
8234 u64 pmd0_length : 16;
8235 u64 pmd1_length : 16;
8236 u64 pmd0_vld : 1;
8237 u64 pmd1_vld : 1;
8238 u64 reserved_34_45 : 12;
8239 u64 drain_pri : 1;
8240 u64 drain : 1;
8241 u64 c_con : 1;
8242 u64 p_con : 1;
8243 u64 reserved_50_51 : 2;
8244 u64 child : 10;
8245 u64 reserved_62 : 1;
8246 u64 pmd_count : 1;
8247 } s;
8248 /* struct nixx_af_tl4x_md_debug0_s cn96xxp1; */
8249 struct nixx_af_tl4x_md_debug0_cn96xxp3 {
8250 u64 pmd0_length : 16;
8251 u64 reserved_16_31 : 16;
8252 u64 pmd0_vld : 1;
8253 u64 reserved_33 : 1;
8254 u64 reserved_34_45 : 12;
8255 u64 reserved_46 : 1;
8256 u64 reserved_47 : 1;
8257 u64 c_con : 1;
8258 u64 p_con : 1;
8259 u64 reserved_50_51 : 2;
8260 u64 child : 10;
8261 u64 reserved_62 : 1;
8262 u64 reserved_63 : 1;
8263 } cn96xxp3;
8264 /* struct nixx_af_tl4x_md_debug0_s cnf95xx; */
8265};
8266
8267static inline u64 NIXX_AF_TL4X_MD_DEBUG0(u64 a)
8268 __attribute__ ((pure, always_inline));
8269static inline u64 NIXX_AF_TL4X_MD_DEBUG0(u64 a)
8270{
8271 return 0x12c0 + 0x10000 * a;
8272}
8273
8274/**
8275 * Register (RVU_PF_BAR0) nix#_af_tl4#_md_debug1
8276 *
8277 * NIX AF Transmit Level 4 Meta Descriptor Debug 1 Registers Packet meta
8278 * descriptor 0 debug. See NIX_AF_TL1()_MD_DEBUG0.
8279 */
8280union nixx_af_tl4x_md_debug1 {
8281 u64 u;
8282 struct nixx_af_tl4x_md_debug1_s {
8283 u64 reserved_0_5 : 6;
8284 u64 red_algo_override : 2;
8285 u64 cir_dis : 1;
8286 u64 pir_dis : 1;
8287 u64 adjust : 9;
8288 u64 uid : 4;
8289 u64 reserved_23 : 1;
8290 u64 bubble : 1;
8291 u64 color : 2;
8292 u64 pse_pkt_id : 9;
8293 u64 reserved_36 : 1;
8294 u64 tx_pkt_p2x : 2;
8295 u64 sqm_pkt_id : 13;
8296 u64 mdq_idx : 10;
8297 u64 reserved_62 : 1;
8298 u64 vld : 1;
8299 } s;
8300 struct nixx_af_tl4x_md_debug1_cn96xxp1 {
8301 u64 reserved_0_5 : 6;
8302 u64 red_algo_override : 2;
8303 u64 cir_dis : 1;
8304 u64 pir_dis : 1;
8305 u64 adjust : 9;
8306 u64 uid : 4;
8307 u64 drain : 1;
8308 u64 bubble : 1;
8309 u64 color : 2;
8310 u64 pse_pkt_id : 9;
8311 u64 reserved_36 : 1;
8312 u64 tx_pkt_p2x : 2;
8313 u64 sqm_pkt_id : 13;
8314 u64 mdq_idx : 10;
8315 u64 reserved_62 : 1;
8316 u64 vld : 1;
8317 } cn96xxp1;
8318 struct nixx_af_tl4x_md_debug1_cn96xxp3 {
8319 u64 reserved_0_5 : 6;
8320 u64 red_algo_override : 2;
8321 u64 cir_dis : 1;
8322 u64 pir_dis : 1;
8323 u64 adjust : 9;
8324 u64 reserved_19_22 : 4;
8325 u64 flush : 1;
8326 u64 bubble : 1;
8327 u64 color : 2;
8328 u64 pse_pkt_id : 9;
8329 u64 reserved_36 : 1;
8330 u64 tx_pkt_p2x : 2;
8331 u64 sqm_pkt_id : 13;
8332 u64 mdq_idx : 10;
8333 u64 reserved_62 : 1;
8334 u64 vld : 1;
8335 } cn96xxp3;
8336 /* struct nixx_af_tl4x_md_debug1_cn96xxp1 cnf95xx; */
8337};
8338
8339static inline u64 NIXX_AF_TL4X_MD_DEBUG1(u64 a)
8340 __attribute__ ((pure, always_inline));
8341static inline u64 NIXX_AF_TL4X_MD_DEBUG1(u64 a)
8342{
8343 return 0x12c8 + 0x10000 * a;
8344}
8345
8346/**
8347 * Register (RVU_PF_BAR0) nix#_af_tl4#_md_debug2
8348 *
8349 * NIX AF Transmit Level 4 Meta Descriptor Debug 2 Registers Packet meta
8350 * descriptor 1 debug. See NIX_AF_TL1()_MD_DEBUG0.
8351 */
8352union nixx_af_tl4x_md_debug2 {
8353 u64 u;
8354 struct nixx_af_tl4x_md_debug2_s {
8355 u64 reserved_0_5 : 6;
8356 u64 red_algo_override : 2;
8357 u64 cir_dis : 1;
8358 u64 pir_dis : 1;
8359 u64 adjust : 9;
8360 u64 uid : 4;
8361 u64 reserved_23 : 1;
8362 u64 bubble : 1;
8363 u64 color : 2;
8364 u64 pse_pkt_id : 9;
8365 u64 reserved_36 : 1;
8366 u64 tx_pkt_p2x : 2;
8367 u64 sqm_pkt_id : 13;
8368 u64 mdq_idx : 10;
8369 u64 reserved_62 : 1;
8370 u64 vld : 1;
8371 } s;
8372 struct nixx_af_tl4x_md_debug2_cn96xxp1 {
8373 u64 reserved_0_5 : 6;
8374 u64 red_algo_override : 2;
8375 u64 cir_dis : 1;
8376 u64 pir_dis : 1;
8377 u64 adjust : 9;
8378 u64 uid : 4;
8379 u64 drain : 1;
8380 u64 bubble : 1;
8381 u64 color : 2;
8382 u64 pse_pkt_id : 9;
8383 u64 reserved_36 : 1;
8384 u64 tx_pkt_p2x : 2;
8385 u64 sqm_pkt_id : 13;
8386 u64 mdq_idx : 10;
8387 u64 reserved_62 : 1;
8388 u64 vld : 1;
8389 } cn96xxp1;
8390 struct nixx_af_tl4x_md_debug2_cn96xxp3 {
8391 u64 reserved_0_5 : 6;
8392 u64 red_algo_override : 2;
8393 u64 cir_dis : 1;
8394 u64 pir_dis : 1;
8395 u64 adjust : 9;
8396 u64 reserved_19_22 : 4;
8397 u64 flush : 1;
8398 u64 bubble : 1;
8399 u64 color : 2;
8400 u64 pse_pkt_id : 9;
8401 u64 reserved_36 : 1;
8402 u64 tx_pkt_p2x : 2;
8403 u64 sqm_pkt_id : 13;
8404 u64 mdq_idx : 10;
8405 u64 reserved_62 : 1;
8406 u64 vld : 1;
8407 } cn96xxp3;
8408 /* struct nixx_af_tl4x_md_debug2_cn96xxp1 cnf95xx; */
8409};
8410
8411static inline u64 NIXX_AF_TL4X_MD_DEBUG2(u64 a)
8412 __attribute__ ((pure, always_inline));
8413static inline u64 NIXX_AF_TL4X_MD_DEBUG2(u64 a)
8414{
8415 return 0x12d0 + 0x10000 * a;
8416}
8417
8418/**
8419 * Register (RVU_PF_BAR0) nix#_af_tl4#_md_debug3
8420 *
8421 * NIX AF Transmit Level 4 Meta Descriptor Debug 3 Registers Flush meta
8422 * descriptor debug. See NIX_AF_TL1()_MD_DEBUG0.
8423 */
8424union nixx_af_tl4x_md_debug3 {
8425 u64 u;
8426 struct nixx_af_tl4x_md_debug3_s {
8427 u64 reserved_0_36 : 37;
8428 u64 tx_pkt_p2x : 2;
8429 u64 sqm_pkt_id : 13;
8430 u64 mdq_idx : 10;
8431 u64 reserved_62 : 1;
8432 u64 vld : 1;
8433 } s;
8434 /* struct nixx_af_tl4x_md_debug3_s cn96xxp1; */
8435 struct nixx_af_tl4x_md_debug3_cn96xxp3 {
8436 u64 reserved_0_36 : 37;
8437 u64 reserved_37_38 : 2;
8438 u64 reserved_39_51 : 13;
8439 u64 reserved_52_61 : 10;
8440 u64 reserved_62 : 1;
8441 u64 reserved_63 : 1;
8442 } cn96xxp3;
8443 /* struct nixx_af_tl4x_md_debug3_s cnf95xx; */
8444};
8445
8446static inline u64 NIXX_AF_TL4X_MD_DEBUG3(u64 a)
8447 __attribute__ ((pure, always_inline));
8448static inline u64 NIXX_AF_TL4X_MD_DEBUG3(u64 a)
8449{
8450 return 0x12d8 + 0x10000 * a;
8451}
8452
8453/**
8454 * Register (RVU_PF_BAR0) nix#_af_tl4#_parent
8455 *
8456 * NIX AF Transmit Level 4 Parent Registers
8457 */
8458union nixx_af_tl4x_parent {
8459 u64 u;
8460 struct nixx_af_tl4x_parent_s {
8461 u64 reserved_0_15 : 16;
8462 u64 parent : 8;
8463 u64 reserved_24_63 : 40;
8464 } s;
8465 /* struct nixx_af_tl4x_parent_s cn; */
8466};
8467
8468static inline u64 NIXX_AF_TL4X_PARENT(u64 a)
8469 __attribute__ ((pure, always_inline));
8470static inline u64 NIXX_AF_TL4X_PARENT(u64 a)
8471{
8472 return 0x1288 + 0x10000 * a;
8473}
8474
8475/**
8476 * Register (RVU_PF_BAR0) nix#_af_tl4#_pir
8477 *
8478 * NIX AF Transmit Level 4 Peak Information Rate Registers This register
8479 * has the same bit fields as NIX_AF_TL1()_CIR.
8480 */
8481union nixx_af_tl4x_pir {
8482 u64 u;
8483 struct nixx_af_tl4x_pir_s {
8484 u64 enable : 1;
8485 u64 rate_mantissa : 8;
8486 u64 rate_exponent : 4;
8487 u64 rate_divider_exponent : 4;
8488 u64 reserved_17_28 : 12;
8489 u64 burst_mantissa : 8;
8490 u64 burst_exponent : 4;
8491 u64 reserved_41_63 : 23;
8492 } s;
8493 /* struct nixx_af_tl4x_pir_s cn; */
8494};
8495
8496static inline u64 NIXX_AF_TL4X_PIR(u64 a)
8497 __attribute__ ((pure, always_inline));
8498static inline u64 NIXX_AF_TL4X_PIR(u64 a)
8499{
8500 return 0x1230 + 0x10000 * a;
8501}
8502
8503/**
8504 * Register (RVU_PF_BAR0) nix#_af_tl4#_pointers
8505 *
8506 * INTERNAL: NIX Transmit Level 4 Linked List Pointers Debug Register
8507 * This register has the same bit fields as NIX_AF_TL2()_POINTERS.
8508 */
8509union nixx_af_tl4x_pointers {
8510 u64 u;
8511 struct nixx_af_tl4x_pointers_s {
8512 u64 next : 9;
8513 u64 reserved_9_15 : 7;
8514 u64 prev : 9;
8515 u64 reserved_25_63 : 39;
8516 } s;
8517 /* struct nixx_af_tl4x_pointers_s cn; */
8518};
8519
8520static inline u64 NIXX_AF_TL4X_POINTERS(u64 a)
8521 __attribute__ ((pure, always_inline));
8522static inline u64 NIXX_AF_TL4X_POINTERS(u64 a)
8523{
8524 return 0x1260 + 0x10000 * a;
8525}
8526
8527/**
8528 * Register (RVU_PF_BAR0) nix#_af_tl4#_red
8529 *
8530 * INTERNAL: NIX Transmit Level 4 Red State Debug Register This register
8531 * has the same bit fields as NIX_AF_TL3()_YELLOW.
8532 */
8533union nixx_af_tl4x_red {
8534 u64 u;
8535 struct nixx_af_tl4x_red_s {
8536 u64 tail : 9;
8537 u64 reserved_9 : 1;
8538 u64 head : 9;
8539 u64 reserved_19_63 : 45;
8540 } s;
8541 /* struct nixx_af_tl4x_red_s cn; */
8542};
8543
8544static inline u64 NIXX_AF_TL4X_RED(u64 a)
8545 __attribute__ ((pure, always_inline));
8546static inline u64 NIXX_AF_TL4X_RED(u64 a)
8547{
8548 return 0x12b0 + 0x10000 * a;
8549}
8550
8551/**
8552 * Register (RVU_PF_BAR0) nix#_af_tl4#_sched_state
8553 *
8554 * NIX AF Transmit Level 4 Scheduling Control State Registers This
8555 * register has the same bit fields as NIX_AF_TL2()_SCHED_STATE.
8556 */
8557union nixx_af_tl4x_sched_state {
8558 u64 u;
8559 struct nixx_af_tl4x_sched_state_s {
8560 u64 rr_count : 25;
8561 u64 reserved_25_63 : 39;
8562 } s;
8563 /* struct nixx_af_tl4x_sched_state_s cn; */
8564};
8565
8566static inline u64 NIXX_AF_TL4X_SCHED_STATE(u64 a)
8567 __attribute__ ((pure, always_inline));
8568static inline u64 NIXX_AF_TL4X_SCHED_STATE(u64 a)
8569{
8570 return 0x1240 + 0x10000 * a;
8571}
8572
8573/**
8574 * Register (RVU_PF_BAR0) nix#_af_tl4#_schedule
8575 *
8576 * NIX AF Transmit Level 4 Scheduling Control Registers This register has
8577 * the same bit fields as NIX_AF_TL2()_SCHEDULE.
8578 */
8579union nixx_af_tl4x_schedule {
8580 u64 u;
8581 struct nixx_af_tl4x_schedule_s {
8582 u64 rr_quantum : 24;
8583 u64 prio : 4;
8584 u64 reserved_28_63 : 36;
8585 } s;
8586 /* struct nixx_af_tl4x_schedule_s cn; */
8587};
8588
8589static inline u64 NIXX_AF_TL4X_SCHEDULE(u64 a)
8590 __attribute__ ((pure, always_inline));
8591static inline u64 NIXX_AF_TL4X_SCHEDULE(u64 a)
8592{
8593 return 0x1200 + 0x10000 * a;
8594}
8595
8596/**
8597 * Register (RVU_PF_BAR0) nix#_af_tl4#_sdp_link_cfg
8598 *
8599 * NIX AF Transmit Level 4 Link Configuration Registers These registers
8600 * specify which TL4 queues transmit to and are optionally backpressured
8601 * by SDP.
8602 */
8603union nixx_af_tl4x_sdp_link_cfg {
8604 u64 u;
8605 struct nixx_af_tl4x_sdp_link_cfg_s {
8606 u64 relchan : 8;
8607 u64 reserved_8_11 : 4;
8608 u64 ena : 1;
8609 u64 bp_ena : 1;
8610 u64 reserved_14_63 : 50;
8611 } s;
8612 /* struct nixx_af_tl4x_sdp_link_cfg_s cn; */
8613};
8614
8615static inline u64 NIXX_AF_TL4X_SDP_LINK_CFG(u64 a)
8616 __attribute__ ((pure, always_inline));
8617static inline u64 NIXX_AF_TL4X_SDP_LINK_CFG(u64 a)
8618{
8619 return 0xb10 + 0x10000 * a;
8620}
8621
8622/**
8623 * Register (RVU_PF_BAR0) nix#_af_tl4#_shape
8624 *
8625 * NIX AF Transmit Level 4 Shaping Control Registers This register has
8626 * the same bit fields as NIX_AF_TL2()_SHAPE.
8627 */
8628union nixx_af_tl4x_shape {
8629 u64 u;
8630 struct nixx_af_tl4x_shape_s {
8631 u64 adjust : 9;
8632 u64 red_algo : 2;
8633 u64 red_disable : 1;
8634 u64 yellow_disable : 1;
8635 u64 reserved_13_23 : 11;
8636 u64 length_disable : 1;
8637 u64 schedule_list : 2;
8638 u64 reserved_27_63 : 37;
8639 } s;
8640 /* struct nixx_af_tl4x_shape_s cn; */
8641};
8642
8643static inline u64 NIXX_AF_TL4X_SHAPE(u64 a)
8644 __attribute__ ((pure, always_inline));
8645static inline u64 NIXX_AF_TL4X_SHAPE(u64 a)
8646{
8647 return 0x1210 + 0x10000 * a;
8648}
8649
8650/**
8651 * Register (RVU_PF_BAR0) nix#_af_tl4#_shape_state
8652 *
8653 * NIX AF Transmit Level 4 Shaping State Registers This register has the
8654 * same bit fields as NIX_AF_TL2()_SHAPE_STATE. This register must not be
8655 * written during normal operation.
8656 */
8657union nixx_af_tl4x_shape_state {
8658 u64 u;
8659 struct nixx_af_tl4x_shape_state_s {
8660 u64 cir_accum : 26;
8661 u64 pir_accum : 26;
8662 u64 color : 2;
8663 u64 reserved_54_63 : 10;
8664 } s;
8665 /* struct nixx_af_tl4x_shape_state_s cn; */
8666};
8667
8668static inline u64 NIXX_AF_TL4X_SHAPE_STATE(u64 a)
8669 __attribute__ ((pure, always_inline));
8670static inline u64 NIXX_AF_TL4X_SHAPE_STATE(u64 a)
8671{
8672 return 0x1250 + 0x10000 * a;
8673}
8674
8675/**
8676 * Register (RVU_PF_BAR0) nix#_af_tl4#_sw_xoff
8677 *
8678 * NIX AF Transmit Level 4 Software Controlled XOFF Registers This
8679 * register has the same bit fields as NIX_AF_TL1()_SW_XOFF
8680 */
8681union nixx_af_tl4x_sw_xoff {
8682 u64 u;
8683 struct nixx_af_tl4x_sw_xoff_s {
8684 u64 xoff : 1;
8685 u64 drain : 1;
8686 u64 reserved_2 : 1;
8687 u64 drain_irq : 1;
8688 u64 reserved_4_63 : 60;
8689 } s;
8690 /* struct nixx_af_tl4x_sw_xoff_s cn; */
8691};
8692
8693static inline u64 NIXX_AF_TL4X_SW_XOFF(u64 a)
8694 __attribute__ ((pure, always_inline));
8695static inline u64 NIXX_AF_TL4X_SW_XOFF(u64 a)
8696{
8697 return 0x1270 + 0x10000 * a;
8698}
8699
8700/**
8701 * Register (RVU_PF_BAR0) nix#_af_tl4#_topology
8702 *
8703 * NIX AF Transmit Level 4 Topology Registers
8704 */
8705union nixx_af_tl4x_topology {
8706 u64 u;
8707 struct nixx_af_tl4x_topology_s {
8708 u64 reserved_0 : 1;
8709 u64 rr_prio : 4;
8710 u64 reserved_5_31 : 27;
8711 u64 prio_anchor : 9;
8712 u64 reserved_41_63 : 23;
8713 } s;
8714 /* struct nixx_af_tl4x_topology_s cn; */
8715};
8716
8717static inline u64 NIXX_AF_TL4X_TOPOLOGY(u64 a)
8718 __attribute__ ((pure, always_inline));
8719static inline u64 NIXX_AF_TL4X_TOPOLOGY(u64 a)
8720{
8721 return 0x1280 + 0x10000 * a;
8722}
8723
8724/**
8725 * Register (RVU_PF_BAR0) nix#_af_tl4#_yellow
8726 *
8727 * INTERNAL: NIX Transmit Level 4 Yellow State Debug Register This
8728 * register has the same bit fields as NIX_AF_TL3()_YELLOW
8729 */
8730union nixx_af_tl4x_yellow {
8731 u64 u;
8732 struct nixx_af_tl4x_yellow_s {
8733 u64 tail : 9;
8734 u64 reserved_9 : 1;
8735 u64 head : 9;
8736 u64 reserved_19_63 : 45;
8737 } s;
8738 /* struct nixx_af_tl4x_yellow_s cn; */
8739};
8740
8741static inline u64 NIXX_AF_TL4X_YELLOW(u64 a)
8742 __attribute__ ((pure, always_inline));
8743static inline u64 NIXX_AF_TL4X_YELLOW(u64 a)
8744{
8745 return 0x12a0 + 0x10000 * a;
8746}
8747
8748/**
8749 * Register (RVU_PF_BAR0) nix#_af_tl4_const
8750 *
8751 * NIX AF Transmit Level 4 Constants Register This register contains
8752 * constants for software discovery.
8753 */
8754union nixx_af_tl4_const {
8755 u64 u;
8756 struct nixx_af_tl4_const_s {
8757 u64 count : 16;
8758 u64 reserved_16_63 : 48;
8759 } s;
8760 /* struct nixx_af_tl4_const_s cn; */
8761};
8762
8763static inline u64 NIXX_AF_TL4_CONST(void)
8764 __attribute__ ((pure, always_inline));
8765static inline u64 NIXX_AF_TL4_CONST(void)
8766{
8767 return 0x88;
8768}
8769
8770/**
8771 * Register (RVU_PF_BAR0) nix#_af_tx_link#_expr_credit
8772 *
8773 * INTERNAL: NIX AF Transmit Link Express Credit Registers Internal:
8774 * 802.3br frame preemption/express path is defeatured. Old definition:
8775 * These registers track credits per link for express packets that may
8776 * potentially preempt normal packets. Link index enumerated by
8777 * NIX_LINK_E.
8778 */
8779union nixx_af_tx_linkx_expr_credit {
8780 u64 u;
8781 struct nixx_af_tx_linkx_expr_credit_s {
8782 u64 reserved_0 : 1;
8783 u64 cc_enable : 1;
8784 u64 cc_packet_cnt : 10;
8785 u64 cc_unit_cnt : 20;
8786 u64 reserved_32_63 : 32;
8787 } s;
8788 /* struct nixx_af_tx_linkx_expr_credit_s cn; */
8789};
8790
8791static inline u64 NIXX_AF_TX_LINKX_EXPR_CREDIT(u64 a)
8792 __attribute__ ((pure, always_inline));
8793static inline u64 NIXX_AF_TX_LINKX_EXPR_CREDIT(u64 a)
8794{
8795 return 0xa10 + 0x10000 * a;
8796}
8797
8798/**
8799 * Register (RVU_PF_BAR0) nix#_af_tx_link#_hw_xoff
8800 *
8801 * NIX AF Transmit Link Hardware Controlled XOFF Registers Link index
8802 * enumerated by NIX_LINK_E.
8803 */
8804union nixx_af_tx_linkx_hw_xoff {
8805 u64 u;
8806 struct nixx_af_tx_linkx_hw_xoff_s {
8807 u64 chan_xoff : 64;
8808 } s;
8809 /* struct nixx_af_tx_linkx_hw_xoff_s cn; */
8810};
8811
8812static inline u64 NIXX_AF_TX_LINKX_HW_XOFF(u64 a)
8813 __attribute__ ((pure, always_inline));
8814static inline u64 NIXX_AF_TX_LINKX_HW_XOFF(u64 a)
8815{
8816 return 0xa30 + 0x10000 * a;
8817}
8818
8819/**
8820 * Register (RVU_PF_BAR0) nix#_af_tx_link#_norm_credit
8821 *
8822 * NIX AF Transmit Link Normal Credit Registers These registers track
8823 * credits per link for normal packets sent to CGX and LBK. Link index
8824 * enumerated by NIX_LINK_E.
8825 */
8826union nixx_af_tx_linkx_norm_credit {
8827 u64 u;
8828 struct nixx_af_tx_linkx_norm_credit_s {
8829 u64 reserved_0 : 1;
8830 u64 cc_enable : 1;
8831 u64 cc_packet_cnt : 10;
8832 u64 cc_unit_cnt : 20;
8833 u64 reserved_32_63 : 32;
8834 } s;
8835 /* struct nixx_af_tx_linkx_norm_credit_s cn; */
8836};
8837
8838static inline u64 NIXX_AF_TX_LINKX_NORM_CREDIT(u64 a)
8839 __attribute__ ((pure, always_inline));
8840static inline u64 NIXX_AF_TX_LINKX_NORM_CREDIT(u64 a)
8841{
8842 return 0xa00 + 0x10000 * a;
8843}
8844
8845/**
8846 * Register (RVU_PF_BAR0) nix#_af_tx_link#_sw_xoff
8847 *
8848 * INTERNAL: NIX AF Transmit Link Software Controlled XOFF Registers
8849 * Link index enumerated by NIX_LINK_E. Internal: Defeatured registers.
8850 * Software should instead use NIX_AF_TL3()_SW_XOFF registers when
8851 * NIX_AF_PSE_CHANNEL_LEVEL[BP_LEVEL] is set and NIX_AF_TL2()_SW_XOFF
8852 * registers when NIX_AF_PSE_CHANNEL_LEVEL[BP_LEVEL] is clear.
8853 */
8854union nixx_af_tx_linkx_sw_xoff {
8855 u64 u;
8856 struct nixx_af_tx_linkx_sw_xoff_s {
8857 u64 chan_xoff : 64;
8858 } s;
8859 /* struct nixx_af_tx_linkx_sw_xoff_s cn; */
8860};
8861
8862static inline u64 NIXX_AF_TX_LINKX_SW_XOFF(u64 a)
8863 __attribute__ ((pure, always_inline));
8864static inline u64 NIXX_AF_TX_LINKX_SW_XOFF(u64 a)
8865{
8866 return 0xa20 + 0x10000 * a;
8867}
8868
8869/**
8870 * Register (RVU_PF_BAR0) nix#_af_tx_mcast#
8871 *
8872 * NIX AF Transmit Multicast Registers These registers access transmit
8873 * multicast table entries used to specify multicast replication lists.
8874 * Each list consists of linked entries with [EOL] = 1 in the last entry.
8875 * A transmit packet is multicast when the action returned by NPC has
8876 * NIX_TX_ACTION_S[OP] = NIX_TX_ACTIONOP_E::MCAST. NIX_TX_ACTION_S[INDEX]
8877 * points to the start of the multicast replication list, and [EOL] = 1
8878 * indicates the end of list.
8879 */
8880union nixx_af_tx_mcastx {
8881 u64 u;
8882 struct nixx_af_tx_mcastx_s {
8883 u64 channel : 12;
8884 u64 eol : 1;
8885 u64 reserved_13_15 : 3;
8886 u64 next : 16;
8887 u64 reserved_32_63 : 32;
8888 } s;
8889 /* struct nixx_af_tx_mcastx_s cn; */
8890};
8891
8892static inline u64 NIXX_AF_TX_MCASTX(u64 a)
8893 __attribute__ ((pure, always_inline));
8894static inline u64 NIXX_AF_TX_MCASTX(u64 a)
8895{
8896 return 0x1900 + 0x8000 * a;
8897}
8898
8899/**
8900 * Register (RVU_PF_BAR0) nix#_af_tx_npc_capture_config
8901 *
8902 * NIX AF Transmit NPC Response Capture Configuration Register Configures
8903 * the NPC response capture logic for transmit packets. When enabled,
8904 * allows NPC responses for selected packets to be captured in
8905 * NIX_AF_TX_NPC_CAPTURE_INFO and NIX_AF_TX_NPC_CAPTURE_RESP().
8906 */
8907union nixx_af_tx_npc_capture_config {
8908 u64 u;
8909 struct nixx_af_tx_npc_capture_config_s {
8910 u64 en : 1;
8911 u64 continuous : 1;
8912 u64 lso_segnum_en : 1;
8913 u64 sqe_id_en : 1;
8914 u64 sq_id_en : 1;
8915 u64 lf_id_en : 1;
8916 u64 reserved_6_11 : 6;
8917 u64 lso_segnum : 8;
8918 u64 sqe_id : 16;
8919 u64 sq_id : 20;
8920 u64 lf_id : 8;
8921 } s;
8922 /* struct nixx_af_tx_npc_capture_config_s cn; */
8923};
8924
8925static inline u64 NIXX_AF_TX_NPC_CAPTURE_CONFIG(void)
8926 __attribute__ ((pure, always_inline));
8927static inline u64 NIXX_AF_TX_NPC_CAPTURE_CONFIG(void)
8928{
8929 return 0x660;
8930}
8931
8932/**
8933 * Register (RVU_PF_BAR0) nix#_af_tx_npc_capture_info
8934 *
8935 * NIX AF Transmit NPC Response Capture Information Register This
8936 * register contains captured NPC response information for a transmit
8937 * packet. See NIX_AF_TX_NPC_CAPTURE_CONFIG.
8938 */
8939union nixx_af_tx_npc_capture_info {
8940 u64 u;
8941 struct nixx_af_tx_npc_capture_info_s {
8942 u64 vld : 1;
8943 u64 reserved_1_11 : 11;
8944 u64 lso_segnum : 8;
8945 u64 sqe_id : 16;
8946 u64 sq_id : 20;
8947 u64 lf_id : 8;
8948 } s;
8949 /* struct nixx_af_tx_npc_capture_info_s cn; */
8950};
8951
8952static inline u64 NIXX_AF_TX_NPC_CAPTURE_INFO(void)
8953 __attribute__ ((pure, always_inline));
8954static inline u64 NIXX_AF_TX_NPC_CAPTURE_INFO(void)
8955{
8956 return 0x668;
8957}
8958
8959/**
8960 * Register (RVU_PF_BAR0) nix#_af_tx_npc_capture_resp#
8961 *
8962 * NIX AF Transmit NPC Capture Response Registers These registers contain
8963 * the captured NPC response for a transmit packet when
8964 * NIX_AF_TX_NPC_CAPTURE_INFO[VLD] is set. See also
8965 * NIX_AF_TX_NPC_CAPTURE_CONFIG.
8966 */
8967union nixx_af_tx_npc_capture_respx {
8968 u64 u;
8969 struct nixx_af_tx_npc_capture_respx_s {
8970 u64 data : 64;
8971 } s;
8972 /* struct nixx_af_tx_npc_capture_respx_s cn; */
8973};
8974
8975static inline u64 NIXX_AF_TX_NPC_CAPTURE_RESPX(u64 a)
8976 __attribute__ ((pure, always_inline));
8977static inline u64 NIXX_AF_TX_NPC_CAPTURE_RESPX(u64 a)
8978{
8979 return 0x680 + 8 * a;
8980}
8981
8982/**
8983 * Register (RVU_PF_BAR0) nix#_af_tx_tstmp_cfg
8984 *
8985 * NIX AF Transmit Timestamp Configuration Register
8986 */
8987union nixx_af_tx_tstmp_cfg {
8988 u64 u;
8989 struct nixx_af_tx_tstmp_cfg_s {
8990 u64 tstmp_wd_period : 4;
8991 u64 reserved_4_7 : 4;
8992 u64 express : 16;
8993 u64 reserved_24_63 : 40;
8994 } s;
8995 /* struct nixx_af_tx_tstmp_cfg_s cn; */
8996};
8997
8998static inline u64 NIXX_AF_TX_TSTMP_CFG(void)
8999 __attribute__ ((pure, always_inline));
9000static inline u64 NIXX_AF_TX_TSTMP_CFG(void)
9001{
9002 return 0xc0;
9003}
9004
9005/**
9006 * Register (RVU_PF_BAR0) nix#_af_tx_vtag_def#_ctl
9007 *
9008 * NIX AF Transmit Vtag Definition Control Registers The transmit Vtag
9009 * definition table specifies Vtag layers (e.g. VLAN, E-TAG) to
9010 * optionally insert or replace in the TX packet header. Indexed by
9011 * NIX_TX_VTAG_ACTION_S[VTAG*_DEF].
9012 */
9013union nixx_af_tx_vtag_defx_ctl {
9014 u64 u;
9015 struct nixx_af_tx_vtag_defx_ctl_s {
9016 u64 size : 1;
9017 u64 reserved_1_63 : 63;
9018 } s;
9019 /* struct nixx_af_tx_vtag_defx_ctl_s cn; */
9020};
9021
9022static inline u64 NIXX_AF_TX_VTAG_DEFX_CTL(u64 a)
9023 __attribute__ ((pure, always_inline));
9024static inline u64 NIXX_AF_TX_VTAG_DEFX_CTL(u64 a)
9025{
9026 return 0x1a00 + 0x10000 * a;
9027}
9028
9029/**
9030 * Register (RVU_PF_BAR0) nix#_af_tx_vtag_def#_data
9031 *
9032 * NIX AF Transmit Vtag Definition Data Registers See
9033 * NIX_AF_TX_VTAG_DEF()_CTL.
9034 */
9035union nixx_af_tx_vtag_defx_data {
9036 u64 u;
9037 struct nixx_af_tx_vtag_defx_data_s {
9038 u64 data : 64;
9039 } s;
9040 /* struct nixx_af_tx_vtag_defx_data_s cn; */
9041};
9042
9043static inline u64 NIXX_AF_TX_VTAG_DEFX_DATA(u64 a)
9044 __attribute__ ((pure, always_inline));
9045static inline u64 NIXX_AF_TX_VTAG_DEFX_DATA(u64 a)
9046{
9047 return 0x1a10 + 0x10000 * a;
9048}
9049
9050/**
9051 * Register (RVU_PFVF_BAR2) nix#_lf_cfg
9052 *
9053 * NIX LF Configuration Register
9054 */
9055union nixx_lf_cfg {
9056 u64 u;
9057 struct nixx_lf_cfg_s {
9058 u64 tcp_timer_int_ena : 1;
9059 u64 reserved_1_63 : 63;
9060 } s;
9061 /* struct nixx_lf_cfg_s cn; */
9062};
9063
9064static inline u64 NIXX_LF_CFG(void)
9065 __attribute__ ((pure, always_inline));
9066static inline u64 NIXX_LF_CFG(void)
9067{
9068 return 0x100;
9069}
9070
9071/**
9072 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_cnt
9073 *
9074 * NIX LF Completion Interrupt Count Registers
9075 */
9076union nixx_lf_cintx_cnt {
9077 u64 u;
9078 struct nixx_lf_cintx_cnt_s {
9079 u64 ecount : 32;
9080 u64 qcount : 16;
9081 u64 reserved_48_63 : 16;
9082 } s;
9083 /* struct nixx_lf_cintx_cnt_s cn; */
9084};
9085
9086static inline u64 NIXX_LF_CINTX_CNT(u64 a)
9087 __attribute__ ((pure, always_inline));
9088static inline u64 NIXX_LF_CINTX_CNT(u64 a)
9089{
9090 return 0xd00 + 0x1000 * a;
9091}
9092
9093/**
9094 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_ena_w1c
9095 *
9096 * NIX LF Completion Interrupt Enable Clear Registers This register
9097 * clears interrupt enable bits.
9098 */
9099union nixx_lf_cintx_ena_w1c {
9100 u64 u;
9101 struct nixx_lf_cintx_ena_w1c_s {
9102 u64 intr : 1;
9103 u64 reserved_1_63 : 63;
9104 } s;
9105 /* struct nixx_lf_cintx_ena_w1c_s cn; */
9106};
9107
9108static inline u64 NIXX_LF_CINTX_ENA_W1C(u64 a)
9109 __attribute__ ((pure, always_inline));
9110static inline u64 NIXX_LF_CINTX_ENA_W1C(u64 a)
9111{
9112 return 0xd50 + 0x1000 * a;
9113}
9114
9115/**
9116 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_ena_w1s
9117 *
9118 * NIX LF Completion Interrupt Enable Set Registers This register sets
9119 * interrupt enable bits.
9120 */
9121union nixx_lf_cintx_ena_w1s {
9122 u64 u;
9123 struct nixx_lf_cintx_ena_w1s_s {
9124 u64 intr : 1;
9125 u64 reserved_1_63 : 63;
9126 } s;
9127 /* struct nixx_lf_cintx_ena_w1s_s cn; */
9128};
9129
9130static inline u64 NIXX_LF_CINTX_ENA_W1S(u64 a)
9131 __attribute__ ((pure, always_inline));
9132static inline u64 NIXX_LF_CINTX_ENA_W1S(u64 a)
9133{
9134 return 0xd40 + 0x1000 * a;
9135}
9136
9137/**
9138 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_int
9139 *
9140 * NIX LF Completion Interrupt Registers
9141 */
9142union nixx_lf_cintx_int {
9143 u64 u;
9144 struct nixx_lf_cintx_int_s {
9145 u64 intr : 1;
9146 u64 reserved_1_63 : 63;
9147 } s;
9148 /* struct nixx_lf_cintx_int_s cn; */
9149};
9150
9151static inline u64 NIXX_LF_CINTX_INT(u64 a)
9152 __attribute__ ((pure, always_inline));
9153static inline u64 NIXX_LF_CINTX_INT(u64 a)
9154{
9155 return 0xd20 + 0x1000 * a;
9156}
9157
9158/**
9159 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_int_w1s
9160 *
9161 * NIX LF Completion Interrupt Set Registers This register sets interrupt
9162 * bits.
9163 */
9164union nixx_lf_cintx_int_w1s {
9165 u64 u;
9166 struct nixx_lf_cintx_int_w1s_s {
9167 u64 intr : 1;
9168 u64 reserved_1_63 : 63;
9169 } s;
9170 /* struct nixx_lf_cintx_int_w1s_s cn; */
9171};
9172
9173static inline u64 NIXX_LF_CINTX_INT_W1S(u64 a)
9174 __attribute__ ((pure, always_inline));
9175static inline u64 NIXX_LF_CINTX_INT_W1S(u64 a)
9176{
9177 return 0xd30 + 0x1000 * a;
9178}
9179
9180/**
9181 * Register (RVU_PFVF_BAR2) nix#_lf_cint#_wait
9182 *
9183 * NIX LF Completion Interrupt Count Registers
9184 */
9185union nixx_lf_cintx_wait {
9186 u64 u;
9187 struct nixx_lf_cintx_wait_s {
9188 u64 ecount_wait : 32;
9189 u64 qcount_wait : 16;
9190 u64 time_wait : 8;
9191 u64 reserved_56_63 : 8;
9192 } s;
9193 /* struct nixx_lf_cintx_wait_s cn; */
9194};
9195
9196static inline u64 NIXX_LF_CINTX_WAIT(u64 a)
9197 __attribute__ ((pure, always_inline));
9198static inline u64 NIXX_LF_CINTX_WAIT(u64 a)
9199{
9200 return 0xd10 + 0x1000 * a;
9201}
9202
9203/**
9204 * Register (RVU_PFVF_BAR2) nix#_lf_cq_op_door
9205 *
9206 * NIX LF CQ Doorbell Operation Register A write to this register
9207 * dequeues CQEs from a CQ ring within the LF. A read is RAZ. RSL
9208 * accesses to this register are RAZ/WI.
9209 */
9210union nixx_lf_cq_op_door {
9211 u64 u;
9212 struct nixx_lf_cq_op_door_s {
9213 u64 count : 16;
9214 u64 reserved_16_31 : 16;
9215 u64 cq : 20;
9216 u64 reserved_52_63 : 12;
9217 } s;
9218 /* struct nixx_lf_cq_op_door_s cn; */
9219};
9220
9221static inline u64 NIXX_LF_CQ_OP_DOOR(void)
9222 __attribute__ ((pure, always_inline));
9223static inline u64 NIXX_LF_CQ_OP_DOOR(void)
9224{
9225 return 0xb30;
9226}
9227
9228/**
9229 * Register (RVU_PFVF_BAR2) nix#_lf_cq_op_int
9230 *
9231 * NIX LF Completion Queue Interrupt Operation Register A 64-bit atomic
9232 * load-and-add to this register reads CQ interrupts and interrupt
9233 * enables. A write optionally sets or clears interrupts and interrupt
9234 * enables. A read is RAZ. RSL accesses to this register are RAZ/WI.
9235 */
9236union nixx_lf_cq_op_int {
9237 u64 u;
9238 struct nixx_lf_cq_op_int_s {
9239 u64 cq_err_int : 8;
9240 u64 cq_err_int_ena : 8;
9241 u64 reserved_16_41 : 26;
9242 u64 op_err : 1;
9243 u64 setop : 1;
9244 u64 cq : 20;
9245 } s;
9246 /* struct nixx_lf_cq_op_int_s cn; */
9247};
9248
9249static inline u64 NIXX_LF_CQ_OP_INT(void)
9250 __attribute__ ((pure, always_inline));
9251static inline u64 NIXX_LF_CQ_OP_INT(void)
9252{
9253 return 0xb00;
9254}
9255
9256/**
9257 * Register (RVU_PFVF_BAR2) nix#_lf_cq_op_status
9258 *
9259 * NIX LF Completion Queue Status Operation Register A 64-bit atomic
9260 * load-and-add to this register reads NIX_CQ_CTX_S[HEAD,TAIL]. The
9261 * atomic write data has format NIX_OP_Q_WDATA_S and selects the CQ
9262 * within LF. All other accesses to this register (e.g. reads and
9263 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
9264 */
9265union nixx_lf_cq_op_status {
9266 u64 u;
9267 struct nixx_lf_cq_op_status_s {
9268 u64 tail : 20;
9269 u64 head : 20;
9270 u64 reserved_40_45 : 6;
9271 u64 cq_err : 1;
9272 u64 reserved_47_62 : 16;
9273 u64 op_err : 1;
9274 } s;
9275 /* struct nixx_lf_cq_op_status_s cn; */
9276};
9277
9278static inline u64 NIXX_LF_CQ_OP_STATUS(void)
9279 __attribute__ ((pure, always_inline));
9280static inline u64 NIXX_LF_CQ_OP_STATUS(void)
9281{
9282 return 0xb40;
9283}
9284
9285/**
9286 * Register (RVU_PFVF_BAR2) nix#_lf_err_int
9287 *
9288 * NIX LF Error Interrupt Register
9289 */
9290union nixx_lf_err_int {
9291 u64 u;
9292 struct nixx_lf_err_int_s {
9293 u64 sqb_fault : 1;
9294 u64 sq_ctx_fault : 1;
9295 u64 rq_ctx_fault : 1;
9296 u64 cq_ctx_fault : 1;
9297 u64 reserved_4 : 1;
9298 u64 rsse_fault : 1;
9299 u64 ipsec_dyno_fault : 1;
9300 u64 sq_disabled : 1;
9301 u64 sq_oor : 1;
9302 u64 send_jump_fault : 1;
9303 u64 send_sg_fault : 1;
9304 u64 rq_disabled : 1;
9305 u64 rq_oor : 1;
9306 u64 rx_wqe_fault : 1;
9307 u64 rss_err : 1;
9308 u64 reserved_15_19 : 5;
9309 u64 dyno_err : 1;
9310 u64 reserved_21_23 : 3;
9311 u64 cq_disabled : 1;
9312 u64 cq_oor : 1;
9313 u64 reserved_26_27 : 2;
9314 u64 qint_fault : 1;
9315 u64 cint_fault : 1;
9316 u64 reserved_30_63 : 34;
9317 } s;
9318 /* struct nixx_lf_err_int_s cn; */
9319};
9320
9321static inline u64 NIXX_LF_ERR_INT(void)
9322 __attribute__ ((pure, always_inline));
9323static inline u64 NIXX_LF_ERR_INT(void)
9324{
9325 return 0x220;
9326}
9327
9328/**
9329 * Register (RVU_PFVF_BAR2) nix#_lf_err_int_ena_w1c
9330 *
9331 * NIX LF Error Interrupt Enable Clear Register This register clears
9332 * interrupt enable bits.
9333 */
9334union nixx_lf_err_int_ena_w1c {
9335 u64 u;
9336 struct nixx_lf_err_int_ena_w1c_s {
9337 u64 sqb_fault : 1;
9338 u64 sq_ctx_fault : 1;
9339 u64 rq_ctx_fault : 1;
9340 u64 cq_ctx_fault : 1;
9341 u64 reserved_4 : 1;
9342 u64 rsse_fault : 1;
9343 u64 ipsec_dyno_fault : 1;
9344 u64 sq_disabled : 1;
9345 u64 sq_oor : 1;
9346 u64 send_jump_fault : 1;
9347 u64 send_sg_fault : 1;
9348 u64 rq_disabled : 1;
9349 u64 rq_oor : 1;
9350 u64 rx_wqe_fault : 1;
9351 u64 rss_err : 1;
9352 u64 reserved_15_19 : 5;
9353 u64 dyno_err : 1;
9354 u64 reserved_21_23 : 3;
9355 u64 cq_disabled : 1;
9356 u64 cq_oor : 1;
9357 u64 reserved_26_27 : 2;
9358 u64 qint_fault : 1;
9359 u64 cint_fault : 1;
9360 u64 reserved_30_63 : 34;
9361 } s;
9362 /* struct nixx_lf_err_int_ena_w1c_s cn; */
9363};
9364
9365static inline u64 NIXX_LF_ERR_INT_ENA_W1C(void)
9366 __attribute__ ((pure, always_inline));
9367static inline u64 NIXX_LF_ERR_INT_ENA_W1C(void)
9368{
9369 return 0x230;
9370}
9371
9372/**
9373 * Register (RVU_PFVF_BAR2) nix#_lf_err_int_ena_w1s
9374 *
9375 * NIX LF Error Interrupt Enable Set Register This register sets
9376 * interrupt enable bits.
9377 */
9378union nixx_lf_err_int_ena_w1s {
9379 u64 u;
9380 struct nixx_lf_err_int_ena_w1s_s {
9381 u64 sqb_fault : 1;
9382 u64 sq_ctx_fault : 1;
9383 u64 rq_ctx_fault : 1;
9384 u64 cq_ctx_fault : 1;
9385 u64 reserved_4 : 1;
9386 u64 rsse_fault : 1;
9387 u64 ipsec_dyno_fault : 1;
9388 u64 sq_disabled : 1;
9389 u64 sq_oor : 1;
9390 u64 send_jump_fault : 1;
9391 u64 send_sg_fault : 1;
9392 u64 rq_disabled : 1;
9393 u64 rq_oor : 1;
9394 u64 rx_wqe_fault : 1;
9395 u64 rss_err : 1;
9396 u64 reserved_15_19 : 5;
9397 u64 dyno_err : 1;
9398 u64 reserved_21_23 : 3;
9399 u64 cq_disabled : 1;
9400 u64 cq_oor : 1;
9401 u64 reserved_26_27 : 2;
9402 u64 qint_fault : 1;
9403 u64 cint_fault : 1;
9404 u64 reserved_30_63 : 34;
9405 } s;
9406 /* struct nixx_lf_err_int_ena_w1s_s cn; */
9407};
9408
9409static inline u64 NIXX_LF_ERR_INT_ENA_W1S(void)
9410 __attribute__ ((pure, always_inline));
9411static inline u64 NIXX_LF_ERR_INT_ENA_W1S(void)
9412{
9413 return 0x238;
9414}
9415
9416/**
9417 * Register (RVU_PFVF_BAR2) nix#_lf_err_int_w1s
9418 *
9419 * NIX LF Error Interrupt Set Register This register sets interrupt bits.
9420 */
9421union nixx_lf_err_int_w1s {
9422 u64 u;
9423 struct nixx_lf_err_int_w1s_s {
9424 u64 sqb_fault : 1;
9425 u64 sq_ctx_fault : 1;
9426 u64 rq_ctx_fault : 1;
9427 u64 cq_ctx_fault : 1;
9428 u64 reserved_4 : 1;
9429 u64 rsse_fault : 1;
9430 u64 ipsec_dyno_fault : 1;
9431 u64 sq_disabled : 1;
9432 u64 sq_oor : 1;
9433 u64 send_jump_fault : 1;
9434 u64 send_sg_fault : 1;
9435 u64 rq_disabled : 1;
9436 u64 rq_oor : 1;
9437 u64 rx_wqe_fault : 1;
9438 u64 rss_err : 1;
9439 u64 reserved_15_19 : 5;
9440 u64 dyno_err : 1;
9441 u64 reserved_21_23 : 3;
9442 u64 cq_disabled : 1;
9443 u64 cq_oor : 1;
9444 u64 reserved_26_27 : 2;
9445 u64 qint_fault : 1;
9446 u64 cint_fault : 1;
9447 u64 reserved_30_63 : 34;
9448 } s;
9449 /* struct nixx_lf_err_int_w1s_s cn; */
9450};
9451
9452static inline u64 NIXX_LF_ERR_INT_W1S(void)
9453 __attribute__ ((pure, always_inline));
9454static inline u64 NIXX_LF_ERR_INT_W1S(void)
9455{
9456 return 0x228;
9457}
9458
9459/**
9460 * Register (RVU_PFVF_BAR2) nix#_lf_gint
9461 *
9462 * NIX LF General Interrupt Register
9463 */
9464union nixx_lf_gint {
9465 u64 u;
9466 struct nixx_lf_gint_s {
9467 u64 drop : 1;
9468 u64 tcp_timer : 1;
9469 u64 reserved_2_63 : 62;
9470 } s;
9471 /* struct nixx_lf_gint_s cn; */
9472};
9473
9474static inline u64 NIXX_LF_GINT(void)
9475 __attribute__ ((pure, always_inline));
9476static inline u64 NIXX_LF_GINT(void)
9477{
9478 return 0x200;
9479}
9480
9481/**
9482 * Register (RVU_PFVF_BAR2) nix#_lf_gint_ena_w1c
9483 *
9484 * NIX LF General Interrupt Enable Clear Register This register clears
9485 * interrupt enable bits.
9486 */
9487union nixx_lf_gint_ena_w1c {
9488 u64 u;
9489 struct nixx_lf_gint_ena_w1c_s {
9490 u64 drop : 1;
9491 u64 tcp_timer : 1;
9492 u64 reserved_2_63 : 62;
9493 } s;
9494 /* struct nixx_lf_gint_ena_w1c_s cn; */
9495};
9496
9497static inline u64 NIXX_LF_GINT_ENA_W1C(void)
9498 __attribute__ ((pure, always_inline));
9499static inline u64 NIXX_LF_GINT_ENA_W1C(void)
9500{
9501 return 0x210;
9502}
9503
9504/**
9505 * Register (RVU_PFVF_BAR2) nix#_lf_gint_ena_w1s
9506 *
9507 * NIX LF General Interrupt Enable Set Register This register sets
9508 * interrupt enable bits.
9509 */
9510union nixx_lf_gint_ena_w1s {
9511 u64 u;
9512 struct nixx_lf_gint_ena_w1s_s {
9513 u64 drop : 1;
9514 u64 tcp_timer : 1;
9515 u64 reserved_2_63 : 62;
9516 } s;
9517 /* struct nixx_lf_gint_ena_w1s_s cn; */
9518};
9519
9520static inline u64 NIXX_LF_GINT_ENA_W1S(void)
9521 __attribute__ ((pure, always_inline));
9522static inline u64 NIXX_LF_GINT_ENA_W1S(void)
9523{
9524 return 0x218;
9525}
9526
9527/**
9528 * Register (RVU_PFVF_BAR2) nix#_lf_gint_w1s
9529 *
9530 * NIX LF General Interrupt Set Register This register sets interrupt
9531 * bits.
9532 */
9533union nixx_lf_gint_w1s {
9534 u64 u;
9535 struct nixx_lf_gint_w1s_s {
9536 u64 drop : 1;
9537 u64 tcp_timer : 1;
9538 u64 reserved_2_63 : 62;
9539 } s;
9540 /* struct nixx_lf_gint_w1s_s cn; */
9541};
9542
9543static inline u64 NIXX_LF_GINT_W1S(void)
9544 __attribute__ ((pure, always_inline));
9545static inline u64 NIXX_LF_GINT_W1S(void)
9546{
9547 return 0x208;
9548}
9549
9550/**
9551 * Register (RVU_PFVF_BAR2) nix#_lf_mnq_err_dbg
9552 *
9553 * NIX LF Meta-descriptor Enqueue Error Debug Register This register
9554 * captures debug info for an error detected during send meta-descriptor
9555 * enqueue from an SQ to an SMQ. Hardware sets [VALID] when the debug
9556 * info is captured, and subsequent errors are not captured until
9557 * software clears [VALID] by writing a one to it.
9558 */
9559union nixx_lf_mnq_err_dbg {
9560 u64 u;
9561 struct nixx_lf_mnq_err_dbg_s {
9562 u64 errcode : 8;
9563 u64 sq : 20;
9564 u64 sqe_id : 16;
9565 u64 valid : 1;
9566 u64 reserved_45_63 : 19;
9567 } s;
9568 /* struct nixx_lf_mnq_err_dbg_s cn; */
9569};
9570
9571static inline u64 NIXX_LF_MNQ_ERR_DBG(void)
9572 __attribute__ ((pure, always_inline));
9573static inline u64 NIXX_LF_MNQ_ERR_DBG(void)
9574{
9575 return 0x270;
9576}
9577
9578/**
9579 * Register (RVU_PFVF_BAR2) nix#_lf_op_ipsec_dyno_cnt
9580 *
9581 * INTERNAL: NIX LF IPSEC Dynamic Ordering Counter Operation Register
9582 * Internal: Not used; no IPSEC fast-path. All accesses are RAZ/WI.
9583 */
9584union nixx_lf_op_ipsec_dyno_cnt {
9585 u64 u;
9586 struct nixx_lf_op_ipsec_dyno_cnt_s {
9587 u64 count : 32;
9588 u64 reserved_32_46 : 15;
9589 u64 storeop : 1;
9590 u64 dyno_sel : 15;
9591 u64 op_err : 1;
9592 } s;
9593 /* struct nixx_lf_op_ipsec_dyno_cnt_s cn; */
9594};
9595
9596static inline u64 NIXX_LF_OP_IPSEC_DYNO_CNT(void)
9597 __attribute__ ((pure, always_inline));
9598static inline u64 NIXX_LF_OP_IPSEC_DYNO_CNT(void)
9599{
9600 return 0x980;
9601}
9602
9603/**
9604 * Register (RVU_PFVF_BAR2) nix#_lf_op_send#
9605 *
9606 * NIX LF Send Operation Registers An LMTST (or large store from CPT) to
9607 * this address enqueues one or more SQEs to a send queue.
9608 * NIX_SEND_HDR_S[SQ] in the first SQE selects the send queue.The maximum
9609 * size of each SQE is specified by NIX_SQ_CTX_S[MAX_SQE_SIZE]. A read
9610 * to this address is RAZ. An RSL access to this address will fault.
9611 * The endianness of the instruction write data is controlled by
9612 * NIX_AF_LF()_CFG[BE]. When a NIX_SEND_JUMP_S is not present in the
9613 * SQE, the SQE consists of the entire send descriptor. When a
9614 * NIX_SEND_JUMP_S is present in the SQE, the SQE must contain exactly
9615 * the portion of the send descriptor up to and including the
9616 * NIX_SEND_JUMP_S, and the remainder of the send descriptor must be at
9617 * LF IOVA NIX_SEND_JUMP_S[ADDR] in LLC/DRAM. Software must ensure that
9618 * all LLC/DRAM locations that will be referenced by NIX while processing
9619 * this descriptor, including all packet data and post-jump
9620 * subdescriptors contain the latest updates before issuing the LMTST. A
9621 * DMB instruction may be required prior to the LMTST to ensure this. A
9622 * DMB following the LMTST may be useful if SQ descriptor ordering
9623 * matters and more than one CPU core is simultaneously enqueueing to the
9624 * same SQ.
9625 */
9626union nixx_lf_op_sendx {
9627 u64 u;
9628 struct nixx_lf_op_sendx_s {
9629 u64 data : 64;
9630 } s;
9631 /* struct nixx_lf_op_sendx_s cn; */
9632};
9633
9634static inline u64 NIXX_LF_OP_SENDX(u64 a)
9635 __attribute__ ((pure, always_inline));
9636static inline u64 NIXX_LF_OP_SENDX(u64 a)
9637{
9638 return 0x800 + 8 * a;
9639}
9640
9641/**
9642 * Register (RVU_PFVF_BAR2) nix#_lf_qint#_cnt
9643 *
9644 * NIX LF Queue Interrupt Count Registers
9645 */
9646union nixx_lf_qintx_cnt {
9647 u64 u;
9648 struct nixx_lf_qintx_cnt_s {
9649 u64 count : 22;
9650 u64 reserved_22_63 : 42;
9651 } s;
9652 /* struct nixx_lf_qintx_cnt_s cn; */
9653};
9654
9655static inline u64 NIXX_LF_QINTX_CNT(u64 a)
9656 __attribute__ ((pure, always_inline));
9657static inline u64 NIXX_LF_QINTX_CNT(u64 a)
9658{
9659 return 0xc00 + 0x1000 * a;
9660}
9661
9662/**
9663 * Register (RVU_PFVF_BAR2) nix#_lf_qint#_ena_w1c
9664 *
9665 * NIX LF Queue Interrupt Enable Clear Registers This register clears
9666 * interrupt enable bits.
9667 */
9668union nixx_lf_qintx_ena_w1c {
9669 u64 u;
9670 struct nixx_lf_qintx_ena_w1c_s {
9671 u64 intr : 1;
9672 u64 reserved_1_63 : 63;
9673 } s;
9674 /* struct nixx_lf_qintx_ena_w1c_s cn; */
9675};
9676
9677static inline u64 NIXX_LF_QINTX_ENA_W1C(u64 a)
9678 __attribute__ ((pure, always_inline));
9679static inline u64 NIXX_LF_QINTX_ENA_W1C(u64 a)
9680{
9681 return 0xc30 + 0x1000 * a;
9682}
9683
9684/**
9685 * Register (RVU_PFVF_BAR2) nix#_lf_qint#_ena_w1s
9686 *
9687 * NIX LF Queue Interrupt Enable Set Registers This register sets
9688 * interrupt enable bits.
9689 */
9690union nixx_lf_qintx_ena_w1s {
9691 u64 u;
9692 struct nixx_lf_qintx_ena_w1s_s {
9693 u64 intr : 1;
9694 u64 reserved_1_63 : 63;
9695 } s;
9696 /* struct nixx_lf_qintx_ena_w1s_s cn; */
9697};
9698
9699static inline u64 NIXX_LF_QINTX_ENA_W1S(u64 a)
9700 __attribute__ ((pure, always_inline));
9701static inline u64 NIXX_LF_QINTX_ENA_W1S(u64 a)
9702{
9703 return 0xc20 + 0x1000 * a;
9704}
9705
9706/**
9707 * Register (RVU_PFVF_BAR2) nix#_lf_qint#_int
9708 *
9709 * NIX LF Queue Interrupt Registers
9710 */
9711union nixx_lf_qintx_int {
9712 u64 u;
9713 struct nixx_lf_qintx_int_s {
9714 u64 intr : 1;
9715 u64 reserved_1_63 : 63;
9716 } s;
9717 /* struct nixx_lf_qintx_int_s cn; */
9718};
9719
9720static inline u64 NIXX_LF_QINTX_INT(u64 a)
9721 __attribute__ ((pure, always_inline));
9722static inline u64 NIXX_LF_QINTX_INT(u64 a)
9723{
9724 return 0xc10 + 0x1000 * a;
9725}
9726
9727/**
9728 * Register (RVU_PFVF_BAR2) nix#_lf_qint#_int_w1s
9729 *
9730 * INTERNAL: NIX LF Queue Interrupt Set Registers
9731 */
9732union nixx_lf_qintx_int_w1s {
9733 u64 u;
9734 struct nixx_lf_qintx_int_w1s_s {
9735 u64 intr : 1;
9736 u64 reserved_1_63 : 63;
9737 } s;
9738 /* struct nixx_lf_qintx_int_w1s_s cn; */
9739};
9740
9741static inline u64 NIXX_LF_QINTX_INT_W1S(u64 a)
9742 __attribute__ ((pure, always_inline));
9743static inline u64 NIXX_LF_QINTX_INT_W1S(u64 a)
9744{
9745 return 0xc18 + 0x1000 * a;
9746}
9747
9748/**
9749 * Register (RVU_PFVF_BAR2) nix#_lf_ras
9750 *
9751 * NIX LF RAS Interrupt Register
9752 */
9753union nixx_lf_ras {
9754 u64 u;
9755 struct nixx_lf_ras_s {
9756 u64 sqb_poison : 1;
9757 u64 sq_ctx_poison : 1;
9758 u64 rq_ctx_poison : 1;
9759 u64 cq_ctx_poison : 1;
9760 u64 reserved_4 : 1;
9761 u64 rsse_poison : 1;
9762 u64 ipsec_dyno_poison : 1;
9763 u64 send_jump_poison : 1;
9764 u64 send_sg_poison : 1;
9765 u64 qint_poison : 1;
9766 u64 cint_poison : 1;
9767 u64 reserved_11_63 : 53;
9768 } s;
9769 /* struct nixx_lf_ras_s cn; */
9770};
9771
9772static inline u64 NIXX_LF_RAS(void)
9773 __attribute__ ((pure, always_inline));
9774static inline u64 NIXX_LF_RAS(void)
9775{
9776 return 0x240;
9777}
9778
9779/**
9780 * Register (RVU_PFVF_BAR2) nix#_lf_ras_ena_w1c
9781 *
9782 * NIX LF RAS Interrupt Enable Clear Register This register clears
9783 * interrupt enable bits.
9784 */
9785union nixx_lf_ras_ena_w1c {
9786 u64 u;
9787 struct nixx_lf_ras_ena_w1c_s {
9788 u64 sqb_poison : 1;
9789 u64 sq_ctx_poison : 1;
9790 u64 rq_ctx_poison : 1;
9791 u64 cq_ctx_poison : 1;
9792 u64 reserved_4 : 1;
9793 u64 rsse_poison : 1;
9794 u64 ipsec_dyno_poison : 1;
9795 u64 send_jump_poison : 1;
9796 u64 send_sg_poison : 1;
9797 u64 qint_poison : 1;
9798 u64 cint_poison : 1;
9799 u64 reserved_11_63 : 53;
9800 } s;
9801 /* struct nixx_lf_ras_ena_w1c_s cn; */
9802};
9803
9804static inline u64 NIXX_LF_RAS_ENA_W1C(void)
9805 __attribute__ ((pure, always_inline));
9806static inline u64 NIXX_LF_RAS_ENA_W1C(void)
9807{
9808 return 0x250;
9809}
9810
9811/**
9812 * Register (RVU_PFVF_BAR2) nix#_lf_ras_ena_w1s
9813 *
9814 * NIX LF RAS Interrupt Enable Set Register This register sets interrupt
9815 * enable bits.
9816 */
9817union nixx_lf_ras_ena_w1s {
9818 u64 u;
9819 struct nixx_lf_ras_ena_w1s_s {
9820 u64 sqb_poison : 1;
9821 u64 sq_ctx_poison : 1;
9822 u64 rq_ctx_poison : 1;
9823 u64 cq_ctx_poison : 1;
9824 u64 reserved_4 : 1;
9825 u64 rsse_poison : 1;
9826 u64 ipsec_dyno_poison : 1;
9827 u64 send_jump_poison : 1;
9828 u64 send_sg_poison : 1;
9829 u64 qint_poison : 1;
9830 u64 cint_poison : 1;
9831 u64 reserved_11_63 : 53;
9832 } s;
9833 /* struct nixx_lf_ras_ena_w1s_s cn; */
9834};
9835
9836static inline u64 NIXX_LF_RAS_ENA_W1S(void)
9837 __attribute__ ((pure, always_inline));
9838static inline u64 NIXX_LF_RAS_ENA_W1S(void)
9839{
9840 return 0x258;
9841}
9842
9843/**
9844 * Register (RVU_PFVF_BAR2) nix#_lf_ras_w1s
9845 *
9846 * NIX LF RAS Interrupt Set Register This register sets interrupt bits.
9847 */
9848union nixx_lf_ras_w1s {
9849 u64 u;
9850 struct nixx_lf_ras_w1s_s {
9851 u64 sqb_poison : 1;
9852 u64 sq_ctx_poison : 1;
9853 u64 rq_ctx_poison : 1;
9854 u64 cq_ctx_poison : 1;
9855 u64 reserved_4 : 1;
9856 u64 rsse_poison : 1;
9857 u64 ipsec_dyno_poison : 1;
9858 u64 send_jump_poison : 1;
9859 u64 send_sg_poison : 1;
9860 u64 qint_poison : 1;
9861 u64 cint_poison : 1;
9862 u64 reserved_11_63 : 53;
9863 } s;
9864 /* struct nixx_lf_ras_w1s_s cn; */
9865};
9866
9867static inline u64 NIXX_LF_RAS_W1S(void)
9868 __attribute__ ((pure, always_inline));
9869static inline u64 NIXX_LF_RAS_W1S(void)
9870{
9871 return 0x248;
9872}
9873
9874/**
9875 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_drop_octs
9876 *
9877 * NIX LF Receive Queue Dropped Octets Operation Register A 64-bit atomic
9878 * load-and-add to this register reads NIX_RQ_CTX_S[DROP_OCTS]. The
9879 * atomic write data has format NIX_OP_Q_WDATA_S and selects the RQ
9880 * within LF. All other accesses to this register (e.g. reads and
9881 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
9882 */
9883union nixx_lf_rq_op_drop_octs {
9884 u64 u;
9885 struct nixx_lf_rq_op_drop_octs_s {
9886 u64 cnt : 48;
9887 u64 reserved_48_62 : 15;
9888 u64 op_err : 1;
9889 } s;
9890 /* struct nixx_lf_rq_op_drop_octs_s cn; */
9891};
9892
9893static inline u64 NIXX_LF_RQ_OP_DROP_OCTS(void)
9894 __attribute__ ((pure, always_inline));
9895static inline u64 NIXX_LF_RQ_OP_DROP_OCTS(void)
9896{
9897 return 0x930;
9898}
9899
9900/**
9901 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_drop_pkts
9902 *
9903 * NIX LF Receive Queue Dropped Packets Operation Register A 64-bit
9904 * atomic load-and-add to this register reads NIX_RQ_CTX_S[DROP_PKTS].
9905 * The atomic write data has format NIX_OP_Q_WDATA_S and selects the RQ
9906 * within LF. All other accesses to this register (e.g. reads and
9907 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
9908 */
9909union nixx_lf_rq_op_drop_pkts {
9910 u64 u;
9911 struct nixx_lf_rq_op_drop_pkts_s {
9912 u64 cnt : 48;
9913 u64 reserved_48_62 : 15;
9914 u64 op_err : 1;
9915 } s;
9916 /* struct nixx_lf_rq_op_drop_pkts_s cn; */
9917};
9918
9919static inline u64 NIXX_LF_RQ_OP_DROP_PKTS(void)
9920 __attribute__ ((pure, always_inline));
9921static inline u64 NIXX_LF_RQ_OP_DROP_PKTS(void)
9922{
9923 return 0x940;
9924}
9925
9926/**
9927 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_int
9928 *
9929 * NIX LF Receive Queue Interrupt Operation Register A 64-bit atomic
9930 * load-and-add to this register reads RQ interrupts and interrupt
9931 * enables. A 64-bit write optionally sets or clears interrupts and
9932 * interrupt enables. All other accesses to this register (e.g. reads,
9933 * 128-bit accesses) are RAZ/WI. RSL accesses to this register are
9934 * RAZ/WI.
9935 */
9936union nixx_lf_rq_op_int {
9937 u64 u;
9938 struct nixx_lf_rq_op_int_s {
9939 u64 rq_int : 8;
9940 u64 rq_int_ena : 8;
9941 u64 reserved_16_41 : 26;
9942 u64 op_err : 1;
9943 u64 setop : 1;
9944 u64 rq : 20;
9945 } s;
9946 /* struct nixx_lf_rq_op_int_s cn; */
9947};
9948
9949static inline u64 NIXX_LF_RQ_OP_INT(void)
9950 __attribute__ ((pure, always_inline));
9951static inline u64 NIXX_LF_RQ_OP_INT(void)
9952{
9953 return 0x900;
9954}
9955
9956/**
9957 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_octs
9958 *
9959 * NIX LF Receive Queue Octets Operation Register A 64-bit atomic load-
9960 * and-add to this register reads NIX_RQ_CTX_S[OCTS]. The atomic write
9961 * data has format NIX_OP_Q_WDATA_S and selects the RQ within LF. All
9962 * other accesses to this register (e.g. reads and writes) are RAZ/WI.
9963 * RSL accesses to this register are RAZ/WI.
9964 */
9965union nixx_lf_rq_op_octs {
9966 u64 u;
9967 struct nixx_lf_rq_op_octs_s {
9968 u64 cnt : 48;
9969 u64 reserved_48_62 : 15;
9970 u64 op_err : 1;
9971 } s;
9972 /* struct nixx_lf_rq_op_octs_s cn; */
9973};
9974
9975static inline u64 NIXX_LF_RQ_OP_OCTS(void)
9976 __attribute__ ((pure, always_inline));
9977static inline u64 NIXX_LF_RQ_OP_OCTS(void)
9978{
9979 return 0x910;
9980}
9981
9982/**
9983 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_pkts
9984 *
9985 * NIX LF Receive Queue Packets Operation Register A 64-bit atomic load-
9986 * and-add to this register reads NIX_RQ_CTX_S[PKTS]. The atomic write
9987 * data has format NIX_OP_Q_WDATA_S and selects the RQ within LF. All
9988 * other accesses to this register (e.g. reads and writes) are RAZ/WI.
9989 * RSL accesses to this register are RAZ/WI.
9990 */
9991union nixx_lf_rq_op_pkts {
9992 u64 u;
9993 struct nixx_lf_rq_op_pkts_s {
9994 u64 cnt : 48;
9995 u64 reserved_48_62 : 15;
9996 u64 op_err : 1;
9997 } s;
9998 /* struct nixx_lf_rq_op_pkts_s cn; */
9999};
10000
10001static inline u64 NIXX_LF_RQ_OP_PKTS(void)
10002 __attribute__ ((pure, always_inline));
10003static inline u64 NIXX_LF_RQ_OP_PKTS(void)
10004{
10005 return 0x920;
10006}
10007
10008/**
10009 * Register (RVU_PFVF_BAR2) nix#_lf_rq_op_re_pkts
10010 *
10011 * NIX LF Receive Queue Errored Packets Operation Register A 64-bit
10012 * atomic load-and-add to this register reads NIX_RQ_CTX_S[RE_PKTS]. The
10013 * atomic write data has format NIX_OP_Q_WDATA_S and selects the RQ
10014 * within LF. All other accesses to this register (e.g. reads and
10015 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
10016 */
10017union nixx_lf_rq_op_re_pkts {
10018 u64 u;
10019 struct nixx_lf_rq_op_re_pkts_s {
10020 u64 cnt : 48;
10021 u64 reserved_48_62 : 15;
10022 u64 op_err : 1;
10023 } s;
10024 /* struct nixx_lf_rq_op_re_pkts_s cn; */
10025};
10026
10027static inline u64 NIXX_LF_RQ_OP_RE_PKTS(void)
10028 __attribute__ ((pure, always_inline));
10029static inline u64 NIXX_LF_RQ_OP_RE_PKTS(void)
10030{
10031 return 0x950;
10032}
10033
10034/**
10035 * Register (RVU_PFVF_BAR2) nix#_lf_rx_secret#
10036 *
10037 * NIX LF Receive Secret Key Registers
10038 */
10039union nixx_lf_rx_secretx {
10040 u64 u;
10041 struct nixx_lf_rx_secretx_s {
10042 u64 key : 64;
10043 } s;
10044 /* struct nixx_lf_rx_secretx_s cn; */
10045};
10046
10047static inline u64 NIXX_LF_RX_SECRETX(u64 a)
10048 __attribute__ ((pure, always_inline));
10049static inline u64 NIXX_LF_RX_SECRETX(u64 a)
10050{
10051 return 0 + 8 * a;
10052}
10053
10054/**
10055 * Register (RVU_PFVF_BAR2) nix#_lf_rx_stat#
10056 *
10057 * NIX LF Receive Statistics Registers The last dimension indicates which
10058 * statistic, and is enumerated by NIX_STAT_LF_RX_E.
10059 */
10060union nixx_lf_rx_statx {
10061 u64 u;
10062 struct nixx_lf_rx_statx_s {
10063 u64 stat : 48;
10064 u64 reserved_48_63 : 16;
10065 } s;
10066 /* struct nixx_lf_rx_statx_s cn; */
10067};
10068
10069static inline u64 NIXX_LF_RX_STATX(u64 a)
10070 __attribute__ ((pure, always_inline));
10071static inline u64 NIXX_LF_RX_STATX(u64 a)
10072{
10073 return 0x400 + 8 * a;
10074}
10075
10076/**
10077 * Register (RVU_PFVF_BAR2) nix#_lf_send_err_dbg
10078 *
10079 * NIX LF Send Error Debug Register This register captures debug info an
10080 * error detected on packet send after a meta-descriptor is granted by
10081 * PSE. Hardware sets [VALID] when the debug info is captured, and
10082 * subsequent errors are not captured until software clears [VALID] by
10083 * writing a one to it.
10084 */
10085union nixx_lf_send_err_dbg {
10086 u64 u;
10087 struct nixx_lf_send_err_dbg_s {
10088 u64 errcode : 8;
10089 u64 sq : 20;
10090 u64 sqe_id : 16;
10091 u64 valid : 1;
10092 u64 reserved_45_63 : 19;
10093 } s;
10094 /* struct nixx_lf_send_err_dbg_s cn; */
10095};
10096
10097static inline u64 NIXX_LF_SEND_ERR_DBG(void)
10098 __attribute__ ((pure, always_inline));
10099static inline u64 NIXX_LF_SEND_ERR_DBG(void)
10100{
10101 return 0x280;
10102}
10103
10104/**
10105 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_drop_octs
10106 *
10107 * NIX LF Send Queue Dropped Octets Operation Register A 64-bit atomic
10108 * load-and-add to this register reads NIX_SQ_CTX_S[DROP_OCTS]. The
10109 * atomic write data has format NIX_OP_Q_WDATA_S and selects the SQ
10110 * within LF. All other accesses to this register (e.g. reads and
10111 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
10112 */
10113union nixx_lf_sq_op_drop_octs {
10114 u64 u;
10115 struct nixx_lf_sq_op_drop_octs_s {
10116 u64 cnt : 48;
10117 u64 reserved_48_62 : 15;
10118 u64 op_err : 1;
10119 } s;
10120 /* struct nixx_lf_sq_op_drop_octs_s cn; */
10121};
10122
10123static inline u64 NIXX_LF_SQ_OP_DROP_OCTS(void)
10124 __attribute__ ((pure, always_inline));
10125static inline u64 NIXX_LF_SQ_OP_DROP_OCTS(void)
10126{
10127 return 0xa40;
10128}
10129
10130/**
10131 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_drop_pkts
10132 *
10133 * NIX LF Send Queue Dropped Packets Operation Register A 64-bit atomic
10134 * load-and-add to this register reads NIX_SQ_CTX_S[DROP_PKTS]. The
10135 * atomic write data has format NIX_OP_Q_WDATA_S and selects the SQ
10136 * within LF. All other accesses to this register (e.g. reads and
10137 * writes) are RAZ/WI. RSL accesses to this register are RAZ/WI.
10138 */
10139union nixx_lf_sq_op_drop_pkts {
10140 u64 u;
10141 struct nixx_lf_sq_op_drop_pkts_s {
10142 u64 cnt : 48;
10143 u64 reserved_48_62 : 15;
10144 u64 op_err : 1;
10145 } s;
10146 /* struct nixx_lf_sq_op_drop_pkts_s cn; */
10147};
10148
10149static inline u64 NIXX_LF_SQ_OP_DROP_PKTS(void)
10150 __attribute__ ((pure, always_inline));
10151static inline u64 NIXX_LF_SQ_OP_DROP_PKTS(void)
10152{
10153 return 0xa50;
10154}
10155
10156/**
10157 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_err_dbg
10158 *
10159 * NIX LF SQ Operation Error Debug Register This register captures debug
10160 * info for an error detected on LMT store to NIX_LF_OP_SEND() or when a
10161 * NIX_LF_SQ_OP_* register is accessed. Hardware sets [VALID] when the
10162 * debug info is captured, and subsequent errors are not captured until
10163 * software clears [VALID] by writing a one to it.
10164 */
10165union nixx_lf_sq_op_err_dbg {
10166 u64 u;
10167 struct nixx_lf_sq_op_err_dbg_s {
10168 u64 errcode : 8;
10169 u64 sq : 20;
10170 u64 sqe_id : 16;
10171 u64 valid : 1;
10172 u64 reserved_45_63 : 19;
10173 } s;
10174 /* struct nixx_lf_sq_op_err_dbg_s cn; */
10175};
10176
10177static inline u64 NIXX_LF_SQ_OP_ERR_DBG(void)
10178 __attribute__ ((pure, always_inline));
10179static inline u64 NIXX_LF_SQ_OP_ERR_DBG(void)
10180{
10181 return 0x260;
10182}
10183
10184/**
10185 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_int
10186 *
10187 * NIX LF Send Queue Interrupt Operation Register A 64-bit atomic load-
10188 * and-add to this register reads SQ interrupts, interrupt enables and
10189 * XOFF status. A write optionally sets or clears interrupts, interrupt
10190 * enables and XOFF status. A read is RAZ. RSL accesses to this register
10191 * are RAZ/WI.
10192 */
10193union nixx_lf_sq_op_int {
10194 u64 u;
10195 struct nixx_lf_sq_op_int_s {
10196 u64 sq_int : 8;
10197 u64 sq_int_ena : 8;
10198 u64 xoff : 1;
10199 u64 reserved_17_41 : 25;
10200 u64 op_err : 1;
10201 u64 setop : 1;
10202 u64 sq : 20;
10203 } s;
10204 /* struct nixx_lf_sq_op_int_s cn; */
10205};
10206
10207static inline u64 NIXX_LF_SQ_OP_INT(void)
10208 __attribute__ ((pure, always_inline));
10209static inline u64 NIXX_LF_SQ_OP_INT(void)
10210{
10211 return 0xa00;
10212}
10213
10214/**
10215 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_octs
10216 *
10217 * NIX LF Send Queue Octets Operation Register A 64-bit atomic load-and-
10218 * add to this register reads NIX_SQ_CTX_S[OCTS]. The atomic write data
10219 * has format NIX_OP_Q_WDATA_S and selects the SQ within LF. All other
10220 * accesses to this register (e.g. reads and writes) are RAZ/WI. RSL
10221 * accesses to this register are RAZ/WI.
10222 */
10223union nixx_lf_sq_op_octs {
10224 u64 u;
10225 struct nixx_lf_sq_op_octs_s {
10226 u64 cnt : 48;
10227 u64 reserved_48_62 : 15;
10228 u64 op_err : 1;
10229 } s;
10230 /* struct nixx_lf_sq_op_octs_s cn; */
10231};
10232
10233static inline u64 NIXX_LF_SQ_OP_OCTS(void)
10234 __attribute__ ((pure, always_inline));
10235static inline u64 NIXX_LF_SQ_OP_OCTS(void)
10236{
10237 return 0xa10;
10238}
10239
10240/**
10241 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_pkts
10242 *
10243 * NIX LF Send Queue Packets Operation Register A 64-bit atomic load-and-
10244 * add to this register reads NIX_SQ_CTX_S[PKTS]. The atomic write data
10245 * has format NIX_OP_Q_WDATA_S and selects the SQ within LF. All other
10246 * accesses to this register (e.g. reads and writes) are RAZ/WI. RSL
10247 * accesses to this register are RAZ/WI.
10248 */
10249union nixx_lf_sq_op_pkts {
10250 u64 u;
10251 struct nixx_lf_sq_op_pkts_s {
10252 u64 cnt : 48;
10253 u64 reserved_48_62 : 15;
10254 u64 op_err : 1;
10255 } s;
10256 /* struct nixx_lf_sq_op_pkts_s cn; */
10257};
10258
10259static inline u64 NIXX_LF_SQ_OP_PKTS(void)
10260 __attribute__ ((pure, always_inline));
10261static inline u64 NIXX_LF_SQ_OP_PKTS(void)
10262{
10263 return 0xa20;
10264}
10265
10266/**
10267 * Register (RVU_PFVF_BAR2) nix#_lf_sq_op_status
10268 *
10269 * NIX LF Send Queue Status Operation Register A 64-bit atomic load-and-
10270 * add to this register reads status fields in NIX_SQ_CTX_S. The atomic
10271 * write data has format NIX_OP_Q_WDATA_S and selects the SQ within LF.
10272 * Completion of the load-and-add operation also ensures that all
10273 * previously issued LMT stores to NIX_LF_OP_SEND() have completed. All
10274 * other accesses to this register (e.g. reads and writes) are RAZ/WI.
10275 * RSL accesses to this register are RAZ/WI.
10276 */
10277union nixx_lf_sq_op_status {
10278 u64 u;
10279 struct nixx_lf_sq_op_status_s {
10280 u64 sqb_count : 16;
10281 u64 reserved_16_19 : 4;
10282 u64 head_offset : 6;
10283 u64 reserved_26_27 : 2;
10284 u64 tail_offset : 6;
10285 u64 reserved_34_62 : 29;
10286 u64 op_err : 1;
10287 } s;
10288 struct nixx_lf_sq_op_status_cn {
10289 u64 sqb_count : 16;
10290 u64 reserved_16_19 : 4;
10291 u64 head_offset : 6;
10292 u64 reserved_26_27 : 2;
10293 u64 tail_offset : 6;
10294 u64 reserved_34_35 : 2;
10295 u64 reserved_36_62 : 27;
10296 u64 op_err : 1;
10297 } cn;
10298};
10299
10300static inline u64 NIXX_LF_SQ_OP_STATUS(void)
10301 __attribute__ ((pure, always_inline));
10302static inline u64 NIXX_LF_SQ_OP_STATUS(void)
10303{
10304 return 0xa30;
10305}
10306
10307/**
10308 * Register (RVU_PFVF_BAR2) nix#_lf_tx_stat#
10309 *
10310 * NIX LF Transmit Statistics Registers The last dimension indicates
10311 * which statistic, and is enumerated by NIX_STAT_LF_TX_E.
10312 */
10313union nixx_lf_tx_statx {
10314 u64 u;
10315 struct nixx_lf_tx_statx_s {
10316 u64 stat : 48;
10317 u64 reserved_48_63 : 16;
10318 } s;
10319 /* struct nixx_lf_tx_statx_s cn; */
10320};
10321
10322static inline u64 NIXX_LF_TX_STATX(u64 a)
10323 __attribute__ ((pure, always_inline));
10324static inline u64 NIXX_LF_TX_STATX(u64 a)
10325{
10326 return 0x300 + 8 * a;
10327}
10328
10329/**
10330 * Register (RVU_PF_BAR0) nix#_priv_af_int_cfg
10331 *
10332 * NIX Privileged Admin Function Interrupt Configuration Register
10333 */
10334union nixx_priv_af_int_cfg {
10335 u64 u;
10336 struct nixx_priv_af_int_cfg_s {
10337 u64 msix_offset : 11;
10338 u64 reserved_11 : 1;
10339 u64 msix_size : 8;
10340 u64 reserved_20_63 : 44;
10341 } s;
10342 /* struct nixx_priv_af_int_cfg_s cn; */
10343};
10344
10345static inline u64 NIXX_PRIV_AF_INT_CFG(void)
10346 __attribute__ ((pure, always_inline));
10347static inline u64 NIXX_PRIV_AF_INT_CFG(void)
10348{
10349 return 0x8000000;
10350}
10351
10352/**
10353 * Register (RVU_PF_BAR0) nix#_priv_lf#_cfg
10354 *
10355 * NIX Privileged Local Function Configuration Registers These registers
10356 * allow each NIX local function (LF) to be provisioned to a VF/PF for
10357 * RVU. See also NIX_AF_RVU_LF_CFG_DEBUG. Software should read this
10358 * register after write to ensure that the LF is mapped to [PF_FUNC]
10359 * before issuing transactions to the mapped PF and function. [SLOT]
10360 * must be zero. Internal: Hardware ignores [SLOT] and always assumes
10361 * 0x0.
10362 */
10363union nixx_priv_lfx_cfg {
10364 u64 u;
10365 struct nixx_priv_lfx_cfg_s {
10366 u64 slot : 8;
10367 u64 pf_func : 16;
10368 u64 reserved_24_62 : 39;
10369 u64 ena : 1;
10370 } s;
10371 /* struct nixx_priv_lfx_cfg_s cn; */
10372};
10373
10374static inline u64 NIXX_PRIV_LFX_CFG(u64 a)
10375 __attribute__ ((pure, always_inline));
10376static inline u64 NIXX_PRIV_LFX_CFG(u64 a)
10377{
10378 return 0x8000010 + 0x100 * a;
10379}
10380
10381/**
10382 * Register (RVU_PF_BAR0) nix#_priv_lf#_int_cfg
10383 *
10384 * NIX Privileged LF Interrupt Configuration Registers
10385 */
10386union nixx_priv_lfx_int_cfg {
10387 u64 u;
10388 struct nixx_priv_lfx_int_cfg_s {
10389 u64 msix_offset : 11;
10390 u64 reserved_11 : 1;
10391 u64 msix_size : 8;
10392 u64 reserved_20_63 : 44;
10393 } s;
10394 /* struct nixx_priv_lfx_int_cfg_s cn; */
10395};
10396
10397static inline u64 NIXX_PRIV_LFX_INT_CFG(u64 a)
10398 __attribute__ ((pure, always_inline));
10399static inline u64 NIXX_PRIV_LFX_INT_CFG(u64 a)
10400{
10401 return 0x8000020 + 0x100 * a;
10402}
10403
10404#endif /* __CSRS_NIX_H__ */