1 /***********************license start***************
2 * Copyright (c) 2003-2012 Cavium Inc. (support@cavium.com). All rights
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * * Neither the name of Cavium Inc. nor the names of
19 * its contributors may be used to endorse or promote products
20 * derived from this software without specific prior written
23 * This Software, including technical data, may be subject to U.S. export control
24 * laws, including the U.S. Export Administration Act and its associated
25 * regulations, and may be subject to export or import regulations in other
28 * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
29 * AND WITH ALL FAULTS AND CAVIUM INC. MAKES NO PROMISES, REPRESENTATIONS OR
30 * WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
31 * THE SOFTWARE, INCLUDING ITS CONDITION, ITS CONFORMITY TO ANY REPRESENTATION OR
32 * DESCRIPTION, OR THE EXISTENCE OF ANY LATENT OR PATENT DEFECTS, AND CAVIUM
33 * SPECIFICALLY DISCLAIMS ALL IMPLIED (IF ANY) WARRANTIES OF TITLE,
34 * MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE, LACK OF
35 * VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR
36 * CORRESPONDENCE TO DESCRIPTION. THE ENTIRE RISK ARISING OUT OF USE OR
37 * PERFORMANCE OF THE SOFTWARE LIES WITH YOU.
38 ***********************license end**************************************/
44 * Configuration and status register (CSR) type definitions for
47 * This file is auto generated. Do not edit.
52 #ifndef __CVMX_IPD_DEFS_H__
53 #define __CVMX_IPD_DEFS_H__
55 #define CVMX_IPD_1ST_MBUFF_SKIP (CVMX_ADD_IO_SEG(0x00014F0000000000ull))
56 #define CVMX_IPD_1st_NEXT_PTR_BACK (CVMX_ADD_IO_SEG(0x00014F0000000150ull))
57 #define CVMX_IPD_2nd_NEXT_PTR_BACK (CVMX_ADD_IO_SEG(0x00014F0000000158ull))
58 #define CVMX_IPD_BIST_STATUS (CVMX_ADD_IO_SEG(0x00014F00000007F8ull))
59 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
60 static inline uint64_t CVMX_IPD_BPIDX_MBUF_TH(unsigned long offset)
63 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 63)))))
64 cvmx_warn("CVMX_IPD_BPIDX_MBUF_TH(%lu) is invalid on this chip\n", offset);
65 return CVMX_ADD_IO_SEG(0x00014F0000002000ull) + ((offset) & 63) * 8;
68 #define CVMX_IPD_BPIDX_MBUF_TH(offset) (CVMX_ADD_IO_SEG(0x00014F0000002000ull) + ((offset) & 63) * 8)
70 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
71 static inline uint64_t CVMX_IPD_BPID_BP_COUNTERX(unsigned long offset)
74 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 63)))))
75 cvmx_warn("CVMX_IPD_BPID_BP_COUNTERX(%lu) is invalid on this chip\n", offset);
76 return CVMX_ADD_IO_SEG(0x00014F0000003000ull) + ((offset) & 63) * 8;
79 #define CVMX_IPD_BPID_BP_COUNTERX(offset) (CVMX_ADD_IO_SEG(0x00014F0000003000ull) + ((offset) & 63) * 8)
81 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
82 #define CVMX_IPD_BP_PRT_RED_END CVMX_IPD_BP_PRT_RED_END_FUNC()
83 static inline uint64_t CVMX_IPD_BP_PRT_RED_END_FUNC(void)
85 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
86 cvmx_warn("CVMX_IPD_BP_PRT_RED_END not supported on this chip\n");
87 return CVMX_ADD_IO_SEG(0x00014F0000000328ull);
90 #define CVMX_IPD_BP_PRT_RED_END (CVMX_ADD_IO_SEG(0x00014F0000000328ull))
92 #define CVMX_IPD_CLK_COUNT (CVMX_ADD_IO_SEG(0x00014F0000000338ull))
93 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
94 #define CVMX_IPD_CREDITS CVMX_IPD_CREDITS_FUNC()
95 static inline uint64_t CVMX_IPD_CREDITS_FUNC(void)
97 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
98 cvmx_warn("CVMX_IPD_CREDITS not supported on this chip\n");
99 return CVMX_ADD_IO_SEG(0x00014F0000004410ull);
102 #define CVMX_IPD_CREDITS (CVMX_ADD_IO_SEG(0x00014F0000004410ull))
104 #define CVMX_IPD_CTL_STATUS (CVMX_ADD_IO_SEG(0x00014F0000000018ull))
105 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
106 #define CVMX_IPD_ECC_CTL CVMX_IPD_ECC_CTL_FUNC()
107 static inline uint64_t CVMX_IPD_ECC_CTL_FUNC(void)
109 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
110 cvmx_warn("CVMX_IPD_ECC_CTL not supported on this chip\n");
111 return CVMX_ADD_IO_SEG(0x00014F0000004408ull);
114 #define CVMX_IPD_ECC_CTL (CVMX_ADD_IO_SEG(0x00014F0000004408ull))
116 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
117 #define CVMX_IPD_FREE_PTR_FIFO_CTL CVMX_IPD_FREE_PTR_FIFO_CTL_FUNC()
118 static inline uint64_t CVMX_IPD_FREE_PTR_FIFO_CTL_FUNC(void)
120 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
121 cvmx_warn("CVMX_IPD_FREE_PTR_FIFO_CTL not supported on this chip\n");
122 return CVMX_ADD_IO_SEG(0x00014F0000000780ull);
125 #define CVMX_IPD_FREE_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000780ull))
127 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
128 #define CVMX_IPD_FREE_PTR_VALUE CVMX_IPD_FREE_PTR_VALUE_FUNC()
129 static inline uint64_t CVMX_IPD_FREE_PTR_VALUE_FUNC(void)
131 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
132 cvmx_warn("CVMX_IPD_FREE_PTR_VALUE not supported on this chip\n");
133 return CVMX_ADD_IO_SEG(0x00014F0000000788ull);
136 #define CVMX_IPD_FREE_PTR_VALUE (CVMX_ADD_IO_SEG(0x00014F0000000788ull))
138 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
139 #define CVMX_IPD_HOLD_PTR_FIFO_CTL CVMX_IPD_HOLD_PTR_FIFO_CTL_FUNC()
140 static inline uint64_t CVMX_IPD_HOLD_PTR_FIFO_CTL_FUNC(void)
142 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
143 cvmx_warn("CVMX_IPD_HOLD_PTR_FIFO_CTL not supported on this chip\n");
144 return CVMX_ADD_IO_SEG(0x00014F0000000790ull);
147 #define CVMX_IPD_HOLD_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000790ull))
149 #define CVMX_IPD_INT_ENB (CVMX_ADD_IO_SEG(0x00014F0000000160ull))
150 #define CVMX_IPD_INT_SUM (CVMX_ADD_IO_SEG(0x00014F0000000168ull))
151 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
152 #define CVMX_IPD_NEXT_PKT_PTR CVMX_IPD_NEXT_PKT_PTR_FUNC()
153 static inline uint64_t CVMX_IPD_NEXT_PKT_PTR_FUNC(void)
155 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
156 cvmx_warn("CVMX_IPD_NEXT_PKT_PTR not supported on this chip\n");
157 return CVMX_ADD_IO_SEG(0x00014F00000007A0ull);
160 #define CVMX_IPD_NEXT_PKT_PTR (CVMX_ADD_IO_SEG(0x00014F00000007A0ull))
162 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
163 #define CVMX_IPD_NEXT_WQE_PTR CVMX_IPD_NEXT_WQE_PTR_FUNC()
164 static inline uint64_t CVMX_IPD_NEXT_WQE_PTR_FUNC(void)
166 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
167 cvmx_warn("CVMX_IPD_NEXT_WQE_PTR not supported on this chip\n");
168 return CVMX_ADD_IO_SEG(0x00014F00000007A8ull);
171 #define CVMX_IPD_NEXT_WQE_PTR (CVMX_ADD_IO_SEG(0x00014F00000007A8ull))
173 #define CVMX_IPD_NOT_1ST_MBUFF_SKIP (CVMX_ADD_IO_SEG(0x00014F0000000008ull))
174 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
175 static inline uint64_t CVMX_IPD_ON_BP_DROP_PKTX(unsigned long block_id)
178 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0)))))
179 cvmx_warn("CVMX_IPD_ON_BP_DROP_PKTX(%lu) is invalid on this chip\n", block_id);
180 return CVMX_ADD_IO_SEG(0x00014F0000004100ull);
183 #define CVMX_IPD_ON_BP_DROP_PKTX(block_id) (CVMX_ADD_IO_SEG(0x00014F0000004100ull))
185 #define CVMX_IPD_PACKET_MBUFF_SIZE (CVMX_ADD_IO_SEG(0x00014F0000000010ull))
186 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
187 #define CVMX_IPD_PKT_ERR CVMX_IPD_PKT_ERR_FUNC()
188 static inline uint64_t CVMX_IPD_PKT_ERR_FUNC(void)
190 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
191 cvmx_warn("CVMX_IPD_PKT_ERR not supported on this chip\n");
192 return CVMX_ADD_IO_SEG(0x00014F00000003F0ull);
195 #define CVMX_IPD_PKT_ERR (CVMX_ADD_IO_SEG(0x00014F00000003F0ull))
197 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
198 #define CVMX_IPD_PKT_PTR_VALID CVMX_IPD_PKT_PTR_VALID_FUNC()
199 static inline uint64_t CVMX_IPD_PKT_PTR_VALID_FUNC(void)
201 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
202 cvmx_warn("CVMX_IPD_PKT_PTR_VALID not supported on this chip\n");
203 return CVMX_ADD_IO_SEG(0x00014F0000000358ull);
206 #define CVMX_IPD_PKT_PTR_VALID (CVMX_ADD_IO_SEG(0x00014F0000000358ull))
208 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
209 static inline uint64_t CVMX_IPD_PORTX_BP_PAGE_CNT(unsigned long offset)
212 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 2) || (offset == 32))) ||
213 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 2) || ((offset >= 32) && (offset <= 33)))) ||
214 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 35))) ||
215 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 2) || ((offset >= 32) && (offset <= 33)))) ||
216 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset <= 3) || ((offset >= 32) && (offset <= 35)))) ||
217 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
218 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 35))) ||
219 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
220 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 3) || ((offset >= 32) && (offset <= 35)))) ||
221 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
222 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35))))))
223 cvmx_warn("CVMX_IPD_PORTX_BP_PAGE_CNT(%lu) is invalid on this chip\n", offset);
224 return CVMX_ADD_IO_SEG(0x00014F0000000028ull) + ((offset) & 63) * 8;
227 #define CVMX_IPD_PORTX_BP_PAGE_CNT(offset) (CVMX_ADD_IO_SEG(0x00014F0000000028ull) + ((offset) & 63) * 8)
229 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
230 static inline uint64_t CVMX_IPD_PORTX_BP_PAGE_CNT2(unsigned long offset)
233 (OCTEON_IS_MODEL(OCTEON_CN52XX) && (((offset >= 36) && (offset <= 39)))) ||
234 (OCTEON_IS_MODEL(OCTEON_CN56XX) && (((offset >= 36) && (offset <= 39)))) ||
235 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 36) && (offset <= 39)))) ||
236 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 36) && (offset <= 39)))) ||
237 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 36) && (offset <= 39)))) ||
238 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 36) && (offset <= 39))))))
239 cvmx_warn("CVMX_IPD_PORTX_BP_PAGE_CNT2(%lu) is invalid on this chip\n", offset);
240 return CVMX_ADD_IO_SEG(0x00014F0000000368ull) + ((offset) & 63) * 8 - 8*36;
243 #define CVMX_IPD_PORTX_BP_PAGE_CNT2(offset) (CVMX_ADD_IO_SEG(0x00014F0000000368ull) + ((offset) & 63) * 8 - 8*36)
245 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
246 static inline uint64_t CVMX_IPD_PORTX_BP_PAGE_CNT3(unsigned long offset)
249 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 40) && (offset <= 47)))) ||
250 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 40) && (offset <= 43)))) ||
251 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 40) && (offset <= 41)) || ((offset >= 44) && (offset <= 47)))) ||
252 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 40) && (offset <= 47))))))
253 cvmx_warn("CVMX_IPD_PORTX_BP_PAGE_CNT3(%lu) is invalid on this chip\n", offset);
254 return CVMX_ADD_IO_SEG(0x00014F00000003D0ull) + ((offset) & 63) * 8 - 8*40;
257 #define CVMX_IPD_PORTX_BP_PAGE_CNT3(offset) (CVMX_ADD_IO_SEG(0x00014F00000003D0ull) + ((offset) & 63) * 8 - 8*40)
259 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
260 static inline uint64_t CVMX_IPD_PORT_BP_COUNTERS2_PAIRX(unsigned long offset)
263 (OCTEON_IS_MODEL(OCTEON_CN52XX) && (((offset >= 36) && (offset <= 39)))) ||
264 (OCTEON_IS_MODEL(OCTEON_CN56XX) && (((offset >= 36) && (offset <= 39)))) ||
265 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 36) && (offset <= 39)))) ||
266 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 36) && (offset <= 39)))) ||
267 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 36) && (offset <= 39)))) ||
268 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 36) && (offset <= 39))))))
269 cvmx_warn("CVMX_IPD_PORT_BP_COUNTERS2_PAIRX(%lu) is invalid on this chip\n", offset);
270 return CVMX_ADD_IO_SEG(0x00014F0000000388ull) + ((offset) & 63) * 8 - 8*36;
273 #define CVMX_IPD_PORT_BP_COUNTERS2_PAIRX(offset) (CVMX_ADD_IO_SEG(0x00014F0000000388ull) + ((offset) & 63) * 8 - 8*36)
275 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
276 static inline uint64_t CVMX_IPD_PORT_BP_COUNTERS3_PAIRX(unsigned long offset)
279 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 40) && (offset <= 43)))) ||
280 (OCTEON_IS_MODEL(OCTEON_CN63XX) && (((offset >= 40) && (offset <= 43)))) ||
281 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 40) && (offset <= 43)))) ||
282 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 40) && (offset <= 43))))))
283 cvmx_warn("CVMX_IPD_PORT_BP_COUNTERS3_PAIRX(%lu) is invalid on this chip\n", offset);
284 return CVMX_ADD_IO_SEG(0x00014F00000003B0ull) + ((offset) & 63) * 8 - 8*40;
287 #define CVMX_IPD_PORT_BP_COUNTERS3_PAIRX(offset) (CVMX_ADD_IO_SEG(0x00014F00000003B0ull) + ((offset) & 63) * 8 - 8*40)
289 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
290 static inline uint64_t CVMX_IPD_PORT_BP_COUNTERS4_PAIRX(unsigned long offset)
293 (OCTEON_IS_MODEL(OCTEON_CN61XX) && (((offset >= 44) && (offset <= 47)))) ||
294 (OCTEON_IS_MODEL(OCTEON_CN66XX) && (((offset >= 44) && (offset <= 47)))) ||
295 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && (((offset >= 44) && (offset <= 47))))))
296 cvmx_warn("CVMX_IPD_PORT_BP_COUNTERS4_PAIRX(%lu) is invalid on this chip\n", offset);
297 return CVMX_ADD_IO_SEG(0x00014F0000000410ull) + ((offset) & 63) * 8 - 8*44;
300 #define CVMX_IPD_PORT_BP_COUNTERS4_PAIRX(offset) (CVMX_ADD_IO_SEG(0x00014F0000000410ull) + ((offset) & 63) * 8 - 8*44)
302 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
303 static inline uint64_t CVMX_IPD_PORT_BP_COUNTERS_PAIRX(unsigned long offset)
306 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 2) || (offset == 32))) ||
307 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 2) || ((offset >= 32) && (offset <= 33)))) ||
308 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 35))) ||
309 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 2) || ((offset >= 32) && (offset <= 33)))) ||
310 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset <= 3) || ((offset >= 32) && (offset <= 35)))) ||
311 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
312 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 35))) ||
313 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
314 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 3) || ((offset >= 32) && (offset <= 35)))) ||
315 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35)))) ||
316 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 3) || ((offset >= 16) && (offset <= 19)) || ((offset >= 32) && (offset <= 35))))))
317 cvmx_warn("CVMX_IPD_PORT_BP_COUNTERS_PAIRX(%lu) is invalid on this chip\n", offset);
318 return CVMX_ADD_IO_SEG(0x00014F00000001B8ull) + ((offset) & 63) * 8;
321 #define CVMX_IPD_PORT_BP_COUNTERS_PAIRX(offset) (CVMX_ADD_IO_SEG(0x00014F00000001B8ull) + ((offset) & 63) * 8)
323 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
324 #define CVMX_IPD_PORT_PTR_FIFO_CTL CVMX_IPD_PORT_PTR_FIFO_CTL_FUNC()
325 static inline uint64_t CVMX_IPD_PORT_PTR_FIFO_CTL_FUNC(void)
327 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
328 cvmx_warn("CVMX_IPD_PORT_PTR_FIFO_CTL not supported on this chip\n");
329 return CVMX_ADD_IO_SEG(0x00014F0000000798ull);
332 #define CVMX_IPD_PORT_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000798ull))
334 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
335 static inline uint64_t CVMX_IPD_PORT_QOS_INTX(unsigned long offset)
338 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset == 0) || (offset == 4))) ||
339 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset == 0) || (offset == 2) || (offset == 4))) ||
340 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5))) ||
341 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset == 0) || (offset == 4) || (offset == 5))) ||
342 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5))) ||
343 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
344 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5)))))
345 cvmx_warn("CVMX_IPD_PORT_QOS_INTX(%lu) is invalid on this chip\n", offset);
346 return CVMX_ADD_IO_SEG(0x00014F0000000808ull) + ((offset) & 7) * 8;
349 #define CVMX_IPD_PORT_QOS_INTX(offset) (CVMX_ADD_IO_SEG(0x00014F0000000808ull) + ((offset) & 7) * 8)
351 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
352 static inline uint64_t CVMX_IPD_PORT_QOS_INT_ENBX(unsigned long offset)
355 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset == 0) || (offset == 4))) ||
356 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset == 0) || (offset == 2) || (offset == 4))) ||
357 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5))) ||
358 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset == 0) || (offset == 4) || (offset == 5))) ||
359 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5))) ||
360 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
361 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset == 0) || (offset == 2) || (offset == 4) || (offset == 5)))))
362 cvmx_warn("CVMX_IPD_PORT_QOS_INT_ENBX(%lu) is invalid on this chip\n", offset);
363 return CVMX_ADD_IO_SEG(0x00014F0000000848ull) + ((offset) & 7) * 8;
366 #define CVMX_IPD_PORT_QOS_INT_ENBX(offset) (CVMX_ADD_IO_SEG(0x00014F0000000848ull) + ((offset) & 7) * 8)
368 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
369 static inline uint64_t CVMX_IPD_PORT_QOS_X_CNT(unsigned long offset)
372 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset <= 31) || ((offset >= 256) && (offset <= 319)))) ||
373 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset <= 31) || ((offset >= 128) && (offset <= 159)) || ((offset >= 256) && (offset <= 319)))) ||
374 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 31) || ((offset >= 128) && (offset <= 159)) || ((offset >= 256) && (offset <= 383)))) ||
375 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 31) || ((offset >= 256) && (offset <= 351)))) ||
376 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 31) || ((offset >= 128) && (offset <= 159)) || ((offset >= 256) && (offset <= 335)) || ((offset >= 352) && (offset <= 383)))) ||
377 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 511))) ||
378 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 31) || ((offset >= 128) && (offset <= 159)) || ((offset >= 256) && (offset <= 383))))))
379 cvmx_warn("CVMX_IPD_PORT_QOS_X_CNT(%lu) is invalid on this chip\n", offset);
380 return CVMX_ADD_IO_SEG(0x00014F0000000888ull) + ((offset) & 511) * 8;
383 #define CVMX_IPD_PORT_QOS_X_CNT(offset) (CVMX_ADD_IO_SEG(0x00014F0000000888ull) + ((offset) & 511) * 8)
385 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
386 static inline uint64_t CVMX_IPD_PORT_SOPX(unsigned long block_id)
389 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0)))))
390 cvmx_warn("CVMX_IPD_PORT_SOPX(%lu) is invalid on this chip\n", block_id);
391 return CVMX_ADD_IO_SEG(0x00014F0000004400ull);
394 #define CVMX_IPD_PORT_SOPX(block_id) (CVMX_ADD_IO_SEG(0x00014F0000004400ull))
396 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
397 #define CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL_FUNC()
398 static inline uint64_t CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL_FUNC(void)
400 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
401 cvmx_warn("CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL not supported on this chip\n");
402 return CVMX_ADD_IO_SEG(0x00014F0000000348ull);
405 #define CVMX_IPD_PRC_HOLD_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000348ull))
407 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
408 #define CVMX_IPD_PRC_PORT_PTR_FIFO_CTL CVMX_IPD_PRC_PORT_PTR_FIFO_CTL_FUNC()
409 static inline uint64_t CVMX_IPD_PRC_PORT_PTR_FIFO_CTL_FUNC(void)
411 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
412 cvmx_warn("CVMX_IPD_PRC_PORT_PTR_FIFO_CTL not supported on this chip\n");
413 return CVMX_ADD_IO_SEG(0x00014F0000000350ull);
416 #define CVMX_IPD_PRC_PORT_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000350ull))
418 #define CVMX_IPD_PTR_COUNT (CVMX_ADD_IO_SEG(0x00014F0000000320ull))
419 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
420 #define CVMX_IPD_PWP_PTR_FIFO_CTL CVMX_IPD_PWP_PTR_FIFO_CTL_FUNC()
421 static inline uint64_t CVMX_IPD_PWP_PTR_FIFO_CTL_FUNC(void)
423 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
424 cvmx_warn("CVMX_IPD_PWP_PTR_FIFO_CTL not supported on this chip\n");
425 return CVMX_ADD_IO_SEG(0x00014F0000000340ull);
428 #define CVMX_IPD_PWP_PTR_FIFO_CTL (CVMX_ADD_IO_SEG(0x00014F0000000340ull))
430 #define CVMX_IPD_QOS0_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(0)
431 #define CVMX_IPD_QOS1_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(1)
432 #define CVMX_IPD_QOS2_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(2)
433 #define CVMX_IPD_QOS3_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(3)
434 #define CVMX_IPD_QOS4_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(4)
435 #define CVMX_IPD_QOS5_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(5)
436 #define CVMX_IPD_QOS6_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(6)
437 #define CVMX_IPD_QOS7_RED_MARKS CVMX_IPD_QOSX_RED_MARKS(7)
438 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
439 static inline uint64_t CVMX_IPD_QOSX_RED_MARKS(unsigned long offset)
442 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 7))) ||
443 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 7))) ||
444 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 7))) ||
445 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 7))) ||
446 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset <= 7))) ||
447 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset <= 7))) ||
448 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 7))) ||
449 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
450 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
451 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
452 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
453 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
454 cvmx_warn("CVMX_IPD_QOSX_RED_MARKS(%lu) is invalid on this chip\n", offset);
455 return CVMX_ADD_IO_SEG(0x00014F0000000178ull) + ((offset) & 7) * 8;
458 #define CVMX_IPD_QOSX_RED_MARKS(offset) (CVMX_ADD_IO_SEG(0x00014F0000000178ull) + ((offset) & 7) * 8)
460 #define CVMX_IPD_QUE0_FREE_PAGE_CNT (CVMX_ADD_IO_SEG(0x00014F0000000330ull))
461 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
462 static inline uint64_t CVMX_IPD_RED_BPID_ENABLEX(unsigned long block_id)
465 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((block_id == 0)))))
466 cvmx_warn("CVMX_IPD_RED_BPID_ENABLEX(%lu) is invalid on this chip\n", block_id);
467 return CVMX_ADD_IO_SEG(0x00014F0000004200ull);
470 #define CVMX_IPD_RED_BPID_ENABLEX(block_id) (CVMX_ADD_IO_SEG(0x00014F0000004200ull))
472 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
473 #define CVMX_IPD_RED_DELAY CVMX_IPD_RED_DELAY_FUNC()
474 static inline uint64_t CVMX_IPD_RED_DELAY_FUNC(void)
476 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
477 cvmx_warn("CVMX_IPD_RED_DELAY not supported on this chip\n");
478 return CVMX_ADD_IO_SEG(0x00014F0000004300ull);
481 #define CVMX_IPD_RED_DELAY (CVMX_ADD_IO_SEG(0x00014F0000004300ull))
483 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
484 #define CVMX_IPD_RED_PORT_ENABLE CVMX_IPD_RED_PORT_ENABLE_FUNC()
485 static inline uint64_t CVMX_IPD_RED_PORT_ENABLE_FUNC(void)
487 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
488 cvmx_warn("CVMX_IPD_RED_PORT_ENABLE not supported on this chip\n");
489 return CVMX_ADD_IO_SEG(0x00014F00000002D8ull);
492 #define CVMX_IPD_RED_PORT_ENABLE (CVMX_ADD_IO_SEG(0x00014F00000002D8ull))
494 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
495 #define CVMX_IPD_RED_PORT_ENABLE2 CVMX_IPD_RED_PORT_ENABLE2_FUNC()
496 static inline uint64_t CVMX_IPD_RED_PORT_ENABLE2_FUNC(void)
498 if (!(OCTEON_IS_MODEL(OCTEON_CN52XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
499 cvmx_warn("CVMX_IPD_RED_PORT_ENABLE2 not supported on this chip\n");
500 return CVMX_ADD_IO_SEG(0x00014F00000003A8ull);
503 #define CVMX_IPD_RED_PORT_ENABLE2 (CVMX_ADD_IO_SEG(0x00014F00000003A8ull))
505 #define CVMX_IPD_RED_QUE0_PARAM CVMX_IPD_RED_QUEX_PARAM(0)
506 #define CVMX_IPD_RED_QUE1_PARAM CVMX_IPD_RED_QUEX_PARAM(1)
507 #define CVMX_IPD_RED_QUE2_PARAM CVMX_IPD_RED_QUEX_PARAM(2)
508 #define CVMX_IPD_RED_QUE3_PARAM CVMX_IPD_RED_QUEX_PARAM(3)
509 #define CVMX_IPD_RED_QUE4_PARAM CVMX_IPD_RED_QUEX_PARAM(4)
510 #define CVMX_IPD_RED_QUE5_PARAM CVMX_IPD_RED_QUEX_PARAM(5)
511 #define CVMX_IPD_RED_QUE6_PARAM CVMX_IPD_RED_QUEX_PARAM(6)
512 #define CVMX_IPD_RED_QUE7_PARAM CVMX_IPD_RED_QUEX_PARAM(7)
513 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
514 static inline uint64_t CVMX_IPD_RED_QUEX_PARAM(unsigned long offset)
517 (OCTEON_IS_MODEL(OCTEON_CN30XX) && ((offset <= 7))) ||
518 (OCTEON_IS_MODEL(OCTEON_CN31XX) && ((offset <= 7))) ||
519 (OCTEON_IS_MODEL(OCTEON_CN38XX) && ((offset <= 7))) ||
520 (OCTEON_IS_MODEL(OCTEON_CN50XX) && ((offset <= 7))) ||
521 (OCTEON_IS_MODEL(OCTEON_CN52XX) && ((offset <= 7))) ||
522 (OCTEON_IS_MODEL(OCTEON_CN56XX) && ((offset <= 7))) ||
523 (OCTEON_IS_MODEL(OCTEON_CN58XX) && ((offset <= 7))) ||
524 (OCTEON_IS_MODEL(OCTEON_CN61XX) && ((offset <= 7))) ||
525 (OCTEON_IS_MODEL(OCTEON_CN63XX) && ((offset <= 7))) ||
526 (OCTEON_IS_MODEL(OCTEON_CN66XX) && ((offset <= 7))) ||
527 (OCTEON_IS_MODEL(OCTEON_CN68XX) && ((offset <= 7))) ||
528 (OCTEON_IS_MODEL(OCTEON_CNF71XX) && ((offset <= 7)))))
529 cvmx_warn("CVMX_IPD_RED_QUEX_PARAM(%lu) is invalid on this chip\n", offset);
530 return CVMX_ADD_IO_SEG(0x00014F00000002E0ull) + ((offset) & 7) * 8;
533 #define CVMX_IPD_RED_QUEX_PARAM(offset) (CVMX_ADD_IO_SEG(0x00014F00000002E0ull) + ((offset) & 7) * 8)
535 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
536 #define CVMX_IPD_REQ_WGT CVMX_IPD_REQ_WGT_FUNC()
537 static inline uint64_t CVMX_IPD_REQ_WGT_FUNC(void)
539 if (!(OCTEON_IS_MODEL(OCTEON_CN68XX)))
540 cvmx_warn("CVMX_IPD_REQ_WGT not supported on this chip\n");
541 return CVMX_ADD_IO_SEG(0x00014F0000004418ull);
544 #define CVMX_IPD_REQ_WGT (CVMX_ADD_IO_SEG(0x00014F0000004418ull))
546 #define CVMX_IPD_SUB_PORT_BP_PAGE_CNT (CVMX_ADD_IO_SEG(0x00014F0000000148ull))
547 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
548 #define CVMX_IPD_SUB_PORT_FCS CVMX_IPD_SUB_PORT_FCS_FUNC()
549 static inline uint64_t CVMX_IPD_SUB_PORT_FCS_FUNC(void)
551 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
552 cvmx_warn("CVMX_IPD_SUB_PORT_FCS not supported on this chip\n");
553 return CVMX_ADD_IO_SEG(0x00014F0000000170ull);
556 #define CVMX_IPD_SUB_PORT_FCS (CVMX_ADD_IO_SEG(0x00014F0000000170ull))
558 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
559 #define CVMX_IPD_SUB_PORT_QOS_CNT CVMX_IPD_SUB_PORT_QOS_CNT_FUNC()
560 static inline uint64_t CVMX_IPD_SUB_PORT_QOS_CNT_FUNC(void)
562 if (!(OCTEON_IS_MODEL(OCTEON_CN52XX) || OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CN68XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
563 cvmx_warn("CVMX_IPD_SUB_PORT_QOS_CNT not supported on this chip\n");
564 return CVMX_ADD_IO_SEG(0x00014F0000000800ull);
567 #define CVMX_IPD_SUB_PORT_QOS_CNT (CVMX_ADD_IO_SEG(0x00014F0000000800ull))
569 #define CVMX_IPD_WQE_FPA_QUEUE (CVMX_ADD_IO_SEG(0x00014F0000000020ull))
570 #if CVMX_ENABLE_CSR_ADDRESS_CHECKING
571 #define CVMX_IPD_WQE_PTR_VALID CVMX_IPD_WQE_PTR_VALID_FUNC()
572 static inline uint64_t CVMX_IPD_WQE_PTR_VALID_FUNC(void)
574 if (!(OCTEON_IS_MODEL(OCTEON_CN3XXX) || OCTEON_IS_MODEL(OCTEON_CN5XXX) || OCTEON_IS_MODEL(OCTEON_CN61XX) || OCTEON_IS_MODEL(OCTEON_CN63XX) || OCTEON_IS_MODEL(OCTEON_CN66XX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)))
575 cvmx_warn("CVMX_IPD_WQE_PTR_VALID not supported on this chip\n");
576 return CVMX_ADD_IO_SEG(0x00014F0000000360ull);
579 #define CVMX_IPD_WQE_PTR_VALID (CVMX_ADD_IO_SEG(0x00014F0000000360ull))
583 * cvmx_ipd_1st_mbuff_skip
585 * IPD_1ST_MBUFF_SKIP = IPD First MBUFF Word Skip Size
587 * The number of words that the IPD will skip when writing the first MBUFF.
589 union cvmx_ipd_1st_mbuff_skip {
591 struct cvmx_ipd_1st_mbuff_skip_s {
592 #ifdef __BIG_ENDIAN_BITFIELD
593 uint64_t reserved_6_63 : 58;
594 uint64_t skip_sz : 6; /**< The number of 8-byte words from the top of the
595 1st MBUFF that the IPD will store the next-pointer.
596 Legal values are 0 to 32, where the MAX value
598 IPD_PACKET_MBUFF_SIZE[MB_SIZE] - 18.
599 Must be at least 16 when IPD_CTL_STATUS[NO_WPTR]
602 uint64_t skip_sz : 6;
603 uint64_t reserved_6_63 : 58;
606 struct cvmx_ipd_1st_mbuff_skip_s cn30xx;
607 struct cvmx_ipd_1st_mbuff_skip_s cn31xx;
608 struct cvmx_ipd_1st_mbuff_skip_s cn38xx;
609 struct cvmx_ipd_1st_mbuff_skip_s cn38xxp2;
610 struct cvmx_ipd_1st_mbuff_skip_s cn50xx;
611 struct cvmx_ipd_1st_mbuff_skip_s cn52xx;
612 struct cvmx_ipd_1st_mbuff_skip_s cn52xxp1;
613 struct cvmx_ipd_1st_mbuff_skip_s cn56xx;
614 struct cvmx_ipd_1st_mbuff_skip_s cn56xxp1;
615 struct cvmx_ipd_1st_mbuff_skip_s cn58xx;
616 struct cvmx_ipd_1st_mbuff_skip_s cn58xxp1;
617 struct cvmx_ipd_1st_mbuff_skip_s cn61xx;
618 struct cvmx_ipd_1st_mbuff_skip_s cn63xx;
619 struct cvmx_ipd_1st_mbuff_skip_s cn63xxp1;
620 struct cvmx_ipd_1st_mbuff_skip_s cn66xx;
621 struct cvmx_ipd_1st_mbuff_skip_s cn68xx;
622 struct cvmx_ipd_1st_mbuff_skip_s cn68xxp1;
623 struct cvmx_ipd_1st_mbuff_skip_s cnf71xx;
625 typedef union cvmx_ipd_1st_mbuff_skip cvmx_ipd_1st_mbuff_skip_t;
628 * cvmx_ipd_1st_next_ptr_back
630 * IPD_1st_NEXT_PTR_BACK = IPD First Next Pointer Back Values
632 * Contains the Back Field for use in creating the Next Pointer Header for the First MBUF
634 union cvmx_ipd_1st_next_ptr_back {
636 struct cvmx_ipd_1st_next_ptr_back_s {
637 #ifdef __BIG_ENDIAN_BITFIELD
638 uint64_t reserved_4_63 : 60;
639 uint64_t back : 4; /**< Used to find head of buffer from the nxt-hdr-ptr. */
642 uint64_t reserved_4_63 : 60;
645 struct cvmx_ipd_1st_next_ptr_back_s cn30xx;
646 struct cvmx_ipd_1st_next_ptr_back_s cn31xx;
647 struct cvmx_ipd_1st_next_ptr_back_s cn38xx;
648 struct cvmx_ipd_1st_next_ptr_back_s cn38xxp2;
649 struct cvmx_ipd_1st_next_ptr_back_s cn50xx;
650 struct cvmx_ipd_1st_next_ptr_back_s cn52xx;
651 struct cvmx_ipd_1st_next_ptr_back_s cn52xxp1;
652 struct cvmx_ipd_1st_next_ptr_back_s cn56xx;
653 struct cvmx_ipd_1st_next_ptr_back_s cn56xxp1;
654 struct cvmx_ipd_1st_next_ptr_back_s cn58xx;
655 struct cvmx_ipd_1st_next_ptr_back_s cn58xxp1;
656 struct cvmx_ipd_1st_next_ptr_back_s cn61xx;
657 struct cvmx_ipd_1st_next_ptr_back_s cn63xx;
658 struct cvmx_ipd_1st_next_ptr_back_s cn63xxp1;
659 struct cvmx_ipd_1st_next_ptr_back_s cn66xx;
660 struct cvmx_ipd_1st_next_ptr_back_s cn68xx;
661 struct cvmx_ipd_1st_next_ptr_back_s cn68xxp1;
662 struct cvmx_ipd_1st_next_ptr_back_s cnf71xx;
664 typedef union cvmx_ipd_1st_next_ptr_back cvmx_ipd_1st_next_ptr_back_t;
667 * cvmx_ipd_2nd_next_ptr_back
669 * IPD_2nd_NEXT_PTR_BACK = IPD Second Next Pointer Back Value
671 * Contains the Back Field for use in creating the Next Pointer Header for the First MBUF
673 union cvmx_ipd_2nd_next_ptr_back {
675 struct cvmx_ipd_2nd_next_ptr_back_s {
676 #ifdef __BIG_ENDIAN_BITFIELD
677 uint64_t reserved_4_63 : 60;
678 uint64_t back : 4; /**< Used to find head of buffer from the nxt-hdr-ptr. */
681 uint64_t reserved_4_63 : 60;
684 struct cvmx_ipd_2nd_next_ptr_back_s cn30xx;
685 struct cvmx_ipd_2nd_next_ptr_back_s cn31xx;
686 struct cvmx_ipd_2nd_next_ptr_back_s cn38xx;
687 struct cvmx_ipd_2nd_next_ptr_back_s cn38xxp2;
688 struct cvmx_ipd_2nd_next_ptr_back_s cn50xx;
689 struct cvmx_ipd_2nd_next_ptr_back_s cn52xx;
690 struct cvmx_ipd_2nd_next_ptr_back_s cn52xxp1;
691 struct cvmx_ipd_2nd_next_ptr_back_s cn56xx;
692 struct cvmx_ipd_2nd_next_ptr_back_s cn56xxp1;
693 struct cvmx_ipd_2nd_next_ptr_back_s cn58xx;
694 struct cvmx_ipd_2nd_next_ptr_back_s cn58xxp1;
695 struct cvmx_ipd_2nd_next_ptr_back_s cn61xx;
696 struct cvmx_ipd_2nd_next_ptr_back_s cn63xx;
697 struct cvmx_ipd_2nd_next_ptr_back_s cn63xxp1;
698 struct cvmx_ipd_2nd_next_ptr_back_s cn66xx;
699 struct cvmx_ipd_2nd_next_ptr_back_s cn68xx;
700 struct cvmx_ipd_2nd_next_ptr_back_s cn68xxp1;
701 struct cvmx_ipd_2nd_next_ptr_back_s cnf71xx;
703 typedef union cvmx_ipd_2nd_next_ptr_back cvmx_ipd_2nd_next_ptr_back_t;
706 * cvmx_ipd_bist_status
708 * IPD_BIST_STATUS = IPD BIST STATUS
710 * BIST Status for IPD's Memories.
712 union cvmx_ipd_bist_status {
714 struct cvmx_ipd_bist_status_s {
715 #ifdef __BIG_ENDIAN_BITFIELD
716 uint64_t reserved_23_63 : 41;
717 uint64_t iiwo1 : 1; /**< IPD IOB WQE Dataout MEM1 Bist Status. */
718 uint64_t iiwo0 : 1; /**< IPD IOB WQE Dataout MEM0 Bist Status. */
719 uint64_t iio1 : 1; /**< IPD IOB Dataout MEM1 Bist Status. */
720 uint64_t iio0 : 1; /**< IPD IOB Dataout MEM0 Bist Status. */
721 uint64_t pbm4 : 1; /**< PBM4Memory Bist Status. */
722 uint64_t csr_mem : 1; /**< CSR Register Memory Bist Status. */
723 uint64_t csr_ncmd : 1; /**< CSR NCB Commands Memory Bist Status. */
724 uint64_t pwq_wqed : 1; /**< PWQ PIP WQE DONE Memory Bist Status. */
725 uint64_t pwq_wp1 : 1; /**< PWQ WQE PAGE1 PTR Memory Bist Status. */
726 uint64_t pwq_pow : 1; /**< PWQ POW MEM Memory Bist Status. */
727 uint64_t ipq_pbe1 : 1; /**< IPQ PBE1 Memory Bist Status. */
728 uint64_t ipq_pbe0 : 1; /**< IPQ PBE0 Memory Bist Status. */
729 uint64_t pbm3 : 1; /**< PBM3 Memory Bist Status. */
730 uint64_t pbm2 : 1; /**< PBM2 Memory Bist Status. */
731 uint64_t pbm1 : 1; /**< PBM1 Memory Bist Status. */
732 uint64_t pbm0 : 1; /**< PBM0 Memory Bist Status. */
733 uint64_t pbm_word : 1; /**< PBM_WORD Memory Bist Status. */
734 uint64_t pwq1 : 1; /**< PWQ1 Memory Bist Status. */
735 uint64_t pwq0 : 1; /**< PWQ0 Memory Bist Status. */
736 uint64_t prc_off : 1; /**< PRC_OFF Memory Bist Status. */
737 uint64_t ipd_old : 1; /**< IPD_OLD Memory Bist Status. */
738 uint64_t ipd_new : 1; /**< IPD_NEW Memory Bist Status. */
739 uint64_t pwp : 1; /**< PWP Memory Bist Status. */
742 uint64_t ipd_new : 1;
743 uint64_t ipd_old : 1;
744 uint64_t prc_off : 1;
747 uint64_t pbm_word : 1;
752 uint64_t ipq_pbe0 : 1;
753 uint64_t ipq_pbe1 : 1;
754 uint64_t pwq_pow : 1;
755 uint64_t pwq_wp1 : 1;
756 uint64_t pwq_wqed : 1;
757 uint64_t csr_ncmd : 1;
758 uint64_t csr_mem : 1;
764 uint64_t reserved_23_63 : 41;
767 struct cvmx_ipd_bist_status_cn30xx {
768 #ifdef __BIG_ENDIAN_BITFIELD
769 uint64_t reserved_16_63 : 48;
770 uint64_t pwq_wqed : 1; /**< PWQ PIP WQE DONE Memory Bist Status. */
771 uint64_t pwq_wp1 : 1; /**< PWQ WQE PAGE1 PTR Memory Bist Status. */
772 uint64_t pwq_pow : 1; /**< PWQ POW MEM Memory Bist Status. */
773 uint64_t ipq_pbe1 : 1; /**< IPQ PBE1 Memory Bist Status. */
774 uint64_t ipq_pbe0 : 1; /**< IPQ PBE0 Memory Bist Status. */
775 uint64_t pbm3 : 1; /**< PBM3 Memory Bist Status. */
776 uint64_t pbm2 : 1; /**< PBM2 Memory Bist Status. */
777 uint64_t pbm1 : 1; /**< PBM1 Memory Bist Status. */
778 uint64_t pbm0 : 1; /**< PBM0 Memory Bist Status. */
779 uint64_t pbm_word : 1; /**< PBM_WORD Memory Bist Status. */
780 uint64_t pwq1 : 1; /**< PWQ1 Memory Bist Status. */
781 uint64_t pwq0 : 1; /**< PWQ0 Memory Bist Status. */
782 uint64_t prc_off : 1; /**< PRC_OFF Memory Bist Status. */
783 uint64_t ipd_old : 1; /**< IPD_OLD Memory Bist Status. */
784 uint64_t ipd_new : 1; /**< IPD_NEW Memory Bist Status. */
785 uint64_t pwp : 1; /**< PWP Memory Bist Status. */
788 uint64_t ipd_new : 1;
789 uint64_t ipd_old : 1;
790 uint64_t prc_off : 1;
793 uint64_t pbm_word : 1;
798 uint64_t ipq_pbe0 : 1;
799 uint64_t ipq_pbe1 : 1;
800 uint64_t pwq_pow : 1;
801 uint64_t pwq_wp1 : 1;
802 uint64_t pwq_wqed : 1;
803 uint64_t reserved_16_63 : 48;
806 struct cvmx_ipd_bist_status_cn30xx cn31xx;
807 struct cvmx_ipd_bist_status_cn30xx cn38xx;
808 struct cvmx_ipd_bist_status_cn30xx cn38xxp2;
809 struct cvmx_ipd_bist_status_cn30xx cn50xx;
810 struct cvmx_ipd_bist_status_cn52xx {
811 #ifdef __BIG_ENDIAN_BITFIELD
812 uint64_t reserved_18_63 : 46;
813 uint64_t csr_mem : 1; /**< CSR Register Memory Bist Status. */
814 uint64_t csr_ncmd : 1; /**< CSR NCB Commands Memory Bist Status. */
815 uint64_t pwq_wqed : 1; /**< PWQ PIP WQE DONE Memory Bist Status. */
816 uint64_t pwq_wp1 : 1; /**< PWQ WQE PAGE1 PTR Memory Bist Status. */
817 uint64_t pwq_pow : 1; /**< PWQ POW MEM Memory Bist Status. */
818 uint64_t ipq_pbe1 : 1; /**< IPQ PBE1 Memory Bist Status. */
819 uint64_t ipq_pbe0 : 1; /**< IPQ PBE0 Memory Bist Status. */
820 uint64_t pbm3 : 1; /**< PBM3 Memory Bist Status. */
821 uint64_t pbm2 : 1; /**< PBM2 Memory Bist Status. */
822 uint64_t pbm1 : 1; /**< PBM1 Memory Bist Status. */
823 uint64_t pbm0 : 1; /**< PBM0 Memory Bist Status. */
824 uint64_t pbm_word : 1; /**< PBM_WORD Memory Bist Status. */
825 uint64_t pwq1 : 1; /**< PWQ1 Memory Bist Status. */
826 uint64_t pwq0 : 1; /**< PWQ0 Memory Bist Status. */
827 uint64_t prc_off : 1; /**< PRC_OFF Memory Bist Status. */
828 uint64_t ipd_old : 1; /**< IPD_OLD Memory Bist Status. */
829 uint64_t ipd_new : 1; /**< IPD_NEW Memory Bist Status. */
830 uint64_t pwp : 1; /**< PWP Memory Bist Status. */
833 uint64_t ipd_new : 1;
834 uint64_t ipd_old : 1;
835 uint64_t prc_off : 1;
838 uint64_t pbm_word : 1;
843 uint64_t ipq_pbe0 : 1;
844 uint64_t ipq_pbe1 : 1;
845 uint64_t pwq_pow : 1;
846 uint64_t pwq_wp1 : 1;
847 uint64_t pwq_wqed : 1;
848 uint64_t csr_ncmd : 1;
849 uint64_t csr_mem : 1;
850 uint64_t reserved_18_63 : 46;
853 struct cvmx_ipd_bist_status_cn52xx cn52xxp1;
854 struct cvmx_ipd_bist_status_cn52xx cn56xx;
855 struct cvmx_ipd_bist_status_cn52xx cn56xxp1;
856 struct cvmx_ipd_bist_status_cn30xx cn58xx;
857 struct cvmx_ipd_bist_status_cn30xx cn58xxp1;
858 struct cvmx_ipd_bist_status_cn52xx cn61xx;
859 struct cvmx_ipd_bist_status_cn52xx cn63xx;
860 struct cvmx_ipd_bist_status_cn52xx cn63xxp1;
861 struct cvmx_ipd_bist_status_cn52xx cn66xx;
862 struct cvmx_ipd_bist_status_s cn68xx;
863 struct cvmx_ipd_bist_status_s cn68xxp1;
864 struct cvmx_ipd_bist_status_cn52xx cnf71xx;
866 typedef union cvmx_ipd_bist_status cvmx_ipd_bist_status_t;
869 * cvmx_ipd_bp_prt_red_end
871 * IPD_BP_PRT_RED_END = IPD Backpressure Port RED Enable
873 * When IPD applies backpressure to a PORT and the corresponding bit in this register is set,
874 * the RED Unit will drop packets for that port.
876 union cvmx_ipd_bp_prt_red_end {
878 struct cvmx_ipd_bp_prt_red_end_s {
879 #ifdef __BIG_ENDIAN_BITFIELD
880 uint64_t reserved_48_63 : 16;
881 uint64_t prt_enb : 48; /**< The port corresponding to the bit position in this
882 field will drop all NON-RAW packets to that port
883 when port level backpressure is applied to that
884 port. The applying of port-level backpressure for
885 this dropping does not take into consideration the
886 value of IPD_PORTX_BP_PAGE_CNT[BP_ENB], nor
887 IPD_RED_PORT_ENABLE[PRT_ENB]. */
889 uint64_t prt_enb : 48;
890 uint64_t reserved_48_63 : 16;
893 struct cvmx_ipd_bp_prt_red_end_cn30xx {
894 #ifdef __BIG_ENDIAN_BITFIELD
895 uint64_t reserved_36_63 : 28;
896 uint64_t prt_enb : 36; /**< The port corresponding to the bit position in this
897 field, will allow RED to drop back when port level
898 backpressure is applied to the port. The applying
899 of port-level backpressure for this RED dropping
900 does not take into consideration the value of
901 IPD_PORTX_BP_PAGE_CNT[BP_ENB]. */
903 uint64_t prt_enb : 36;
904 uint64_t reserved_36_63 : 28;
907 struct cvmx_ipd_bp_prt_red_end_cn30xx cn31xx;
908 struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xx;
909 struct cvmx_ipd_bp_prt_red_end_cn30xx cn38xxp2;
910 struct cvmx_ipd_bp_prt_red_end_cn30xx cn50xx;
911 struct cvmx_ipd_bp_prt_red_end_cn52xx {
912 #ifdef __BIG_ENDIAN_BITFIELD
913 uint64_t reserved_40_63 : 24;
914 uint64_t prt_enb : 40; /**< The port corresponding to the bit position in this
915 field, will allow RED to drop back when port level
916 backpressure is applied to the port. The applying
917 of port-level backpressure for this RED dropping
918 does not take into consideration the value of
919 IPD_PORTX_BP_PAGE_CNT[BP_ENB]. */
921 uint64_t prt_enb : 40;
922 uint64_t reserved_40_63 : 24;
925 struct cvmx_ipd_bp_prt_red_end_cn52xx cn52xxp1;
926 struct cvmx_ipd_bp_prt_red_end_cn52xx cn56xx;
927 struct cvmx_ipd_bp_prt_red_end_cn52xx cn56xxp1;
928 struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xx;
929 struct cvmx_ipd_bp_prt_red_end_cn30xx cn58xxp1;
930 struct cvmx_ipd_bp_prt_red_end_s cn61xx;
931 struct cvmx_ipd_bp_prt_red_end_cn63xx {
932 #ifdef __BIG_ENDIAN_BITFIELD
933 uint64_t reserved_44_63 : 20;
934 uint64_t prt_enb : 44; /**< The port corresponding to the bit position in this
935 field will drop all NON-RAW packets to that port
936 when port level backpressure is applied to that
937 port. The applying of port-level backpressure for
938 this dropping does not take into consideration the
939 value of IPD_PORTX_BP_PAGE_CNT[BP_ENB], nor
940 IPD_RED_PORT_ENABLE[PRT_ENB]. */
942 uint64_t prt_enb : 44;
943 uint64_t reserved_44_63 : 20;
946 struct cvmx_ipd_bp_prt_red_end_cn63xx cn63xxp1;
947 struct cvmx_ipd_bp_prt_red_end_s cn66xx;
948 struct cvmx_ipd_bp_prt_red_end_s cnf71xx;
950 typedef union cvmx_ipd_bp_prt_red_end cvmx_ipd_bp_prt_red_end_t;
953 * cvmx_ipd_bpid#_mbuf_th
957 * IPD_BPIDX_MBUF_TH = IPD BPID MBUFF Threshold
959 * The number of MBUFFs in use by the BPID, that when exceeded, backpressure will be applied to the BPID.
961 union cvmx_ipd_bpidx_mbuf_th {
963 struct cvmx_ipd_bpidx_mbuf_th_s {
964 #ifdef __BIG_ENDIAN_BITFIELD
965 uint64_t reserved_18_63 : 46;
966 uint64_t bp_enb : 1; /**< When set '1' BP will be applied, if '0' BP will
967 not be applied to bpid. */
968 uint64_t page_cnt : 17; /**< The number of page pointers assigned to
969 the BPID, that when exceeded will cause
970 back-pressure to be applied to the BPID.
971 This value is in 256 page-pointer increments,
972 (i.e. 0 = 0-page-ptrs, 1 = 256-page-ptrs,..) */
974 uint64_t page_cnt : 17;
976 uint64_t reserved_18_63 : 46;
979 struct cvmx_ipd_bpidx_mbuf_th_s cn68xx;
980 struct cvmx_ipd_bpidx_mbuf_th_s cn68xxp1;
982 typedef union cvmx_ipd_bpidx_mbuf_th cvmx_ipd_bpidx_mbuf_th_t;
985 * cvmx_ipd_bpid_bp_counter#
987 * RESERVE SPACE UPTO 0x2FFF
991 * IPD_BPID_BP_COUNTERX = MBUF BPID Counters used to generate Back Pressure Per BPID.
993 union cvmx_ipd_bpid_bp_counterx {
995 struct cvmx_ipd_bpid_bp_counterx_s {
996 #ifdef __BIG_ENDIAN_BITFIELD
997 uint64_t reserved_25_63 : 39;
998 uint64_t cnt_val : 25; /**< Number of MBUFs being used by data on this BPID. */
1000 uint64_t cnt_val : 25;
1001 uint64_t reserved_25_63 : 39;
1004 struct cvmx_ipd_bpid_bp_counterx_s cn68xx;
1005 struct cvmx_ipd_bpid_bp_counterx_s cn68xxp1;
1007 typedef union cvmx_ipd_bpid_bp_counterx cvmx_ipd_bpid_bp_counterx_t;
1010 * cvmx_ipd_clk_count
1012 * IPD_CLK_COUNT = IPD Clock Count
1014 * Counts the number of core clocks periods since the de-asserition of reset.
1016 union cvmx_ipd_clk_count {
1018 struct cvmx_ipd_clk_count_s {
1019 #ifdef __BIG_ENDIAN_BITFIELD
1020 uint64_t clk_cnt : 64; /**< This counter will be zeroed when reset is applied
1021 and will increment every rising edge of the
1024 uint64_t clk_cnt : 64;
1027 struct cvmx_ipd_clk_count_s cn30xx;
1028 struct cvmx_ipd_clk_count_s cn31xx;
1029 struct cvmx_ipd_clk_count_s cn38xx;
1030 struct cvmx_ipd_clk_count_s cn38xxp2;
1031 struct cvmx_ipd_clk_count_s cn50xx;
1032 struct cvmx_ipd_clk_count_s cn52xx;
1033 struct cvmx_ipd_clk_count_s cn52xxp1;
1034 struct cvmx_ipd_clk_count_s cn56xx;
1035 struct cvmx_ipd_clk_count_s cn56xxp1;
1036 struct cvmx_ipd_clk_count_s cn58xx;
1037 struct cvmx_ipd_clk_count_s cn58xxp1;
1038 struct cvmx_ipd_clk_count_s cn61xx;
1039 struct cvmx_ipd_clk_count_s cn63xx;
1040 struct cvmx_ipd_clk_count_s cn63xxp1;
1041 struct cvmx_ipd_clk_count_s cn66xx;
1042 struct cvmx_ipd_clk_count_s cn68xx;
1043 struct cvmx_ipd_clk_count_s cn68xxp1;
1044 struct cvmx_ipd_clk_count_s cnf71xx;
1046 typedef union cvmx_ipd_clk_count cvmx_ipd_clk_count_t;
1051 * IPD_CREDITS = IPD Credits
1053 * The credits allowed for IPD.
1055 union cvmx_ipd_credits {
1057 struct cvmx_ipd_credits_s {
1058 #ifdef __BIG_ENDIAN_BITFIELD
1059 uint64_t reserved_16_63 : 48;
1060 uint64_t iob_wrc : 8; /**< The present number of credits available for
1061 stores to the IOB. */
1062 uint64_t iob_wr : 8; /**< The number of command credits the IPD has to send
1063 stores to the IOB. Legal values for this field
1064 are 1-8 (a value of 0 will be treated as a 1 and
1065 a value greater than 8 will be treated as an 8. */
1067 uint64_t iob_wr : 8;
1068 uint64_t iob_wrc : 8;
1069 uint64_t reserved_16_63 : 48;
1072 struct cvmx_ipd_credits_s cn68xx;
1073 struct cvmx_ipd_credits_s cn68xxp1;
1075 typedef union cvmx_ipd_credits cvmx_ipd_credits_t;
1078 * cvmx_ipd_ctl_status
1080 * IPD_CTL_STATUS = IPD's Control Status Register
1082 * The number of words in a MBUFF used for packet data store.
1084 union cvmx_ipd_ctl_status {
1086 struct cvmx_ipd_ctl_status_s {
1087 #ifdef __BIG_ENDIAN_BITFIELD
1088 uint64_t reserved_18_63 : 46;
1089 uint64_t use_sop : 1; /**< When '1' the SOP sent by the MAC will be used in
1090 place of the SOP generated by the IPD. */
1091 uint64_t rst_done : 1; /**< When '0' IPD has finished reset. No access
1092 except the reading of this bit should occur to the
1093 IPD until this is asserted. Or a 1000 core clock
1094 cycles has passed after the de-assertion of reset. */
1095 uint64_t clken : 1; /**< Controls the conditional clocking within IPD
1096 0=Allow HW to control the clocks
1097 1=Force the clocks to be always on */
1098 uint64_t no_wptr : 1; /**< When set '1' the WQE pointers will not be used and
1099 the WQE will be located at the front of the packet.
1101 - IPD_WQE_FPA_QUEUE[WQE_QUE] is not used
1102 - IPD_1ST_MBUFF_SKIP[SKIP_SZ] must be at least 16
1103 - If 16 <= IPD_1ST_MBUFF_SKIP[SKIP_SZ] <= 31 then
1104 the WQE will be written into the first 128B
1105 cache block in the first buffer that contains
1107 - If IPD_1ST_MBUFF_SKIP[SKIP_SZ] == 32 then
1108 the WQE will be written into the second 128B
1109 cache block in the first buffer that contains
1111 uint64_t pq_apkt : 1; /**< When set IPD_PORT_QOS_X_CNT WILL be incremented
1112 by one for every work queue entry that is sent to
1114 uint64_t pq_nabuf : 1; /**< When set IPD_PORT_QOS_X_CNT WILL NOT be
1115 incremented when IPD allocates a buffer for a
1117 uint64_t ipd_full : 1; /**< When clear '0' the IPD acts normaly.
1118 When set '1' the IPD drive the IPD_BUFF_FULL line to
1119 the IOB-arbiter, telling it to not give grants to
1120 NCB devices sending packet data. */
1121 uint64_t pkt_off : 1; /**< When clear '0' the IPD working normaly,
1122 buffering the received packet data. When set '1'
1123 the IPD will not buffer the received packet data. */
1124 uint64_t len_m8 : 1; /**< Setting of this bit will subtract 8 from the
1125 data-length field in the header written to the
1126 POW and the top of a MBUFF.
1127 OCTEAN generates a length that includes the
1128 length of the data + 8 for the header-field. By
1129 setting this bit the 8 for the instr-field will
1130 not be included in the length field of the header.
1131 NOTE: IPD is compliant with the spec when this
1133 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1135 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1136 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL],
1137 IPD_PORT_BP_COUNTERS2_PAIR(port)[CNT_VAL] and
1138 IPD_PORT_BP_COUNTERS3_PAIR(port)[CNT_VAL]
1139 WILL be incremented by one for every work
1140 queue entry that is sent to POW. */
1141 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1142 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL],
1143 IPD_PORT_BP_COUNTERS2_PAIR(port)[CNT_VAL] and
1144 IPD_PORT_BP_COUNTERS3_PAIR(port)[CNT_VAL]
1145 WILL NOT be incremented when IPD allocates a
1146 buffer for a packet on the port. */
1147 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1148 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1149 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1150 the sending of port level backpressure to the
1151 Octane input-ports. The application should NOT
1152 de-assert this bit after asserting it. The
1153 receivers of this bit may have been put into
1154 backpressure mode and can only be released by
1155 IPD informing them that the backpressure has
1157 GMXX_INF_MODE[EN] must be set to '1' for each
1158 packet interface which requires port back pressure
1159 prior to setting PBP_EN to '1'. */
1160 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1161 is written through to memory.
1162 1 ==> All packet data (and next buffer pointers) is
1163 written into the cache.
1164 2 ==> The first aligned cache block holding the
1165 packet data (and initial next buffer pointer) is
1166 written to the L2 cache, all remaining cache blocks
1167 are not written to the L2 cache.
1168 3 ==> The first two aligned cache blocks holding
1169 the packet data (and initial next buffer pointer)
1170 are written to the L2 cache, all remaining cache
1171 blocks are not written to the L2 cache. */
1172 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD.
1173 When clear '0', the IPD will appear to the
1174 IOB-arbiter to be applying backpressure, this
1175 causes the IOB-Arbiter to not send grants to NCB
1176 devices requesting to send packet data to the IPD. */
1178 uint64_t ipd_en : 1;
1179 cvmx_ipd_mode_t opc_mode : 2;
1180 uint64_t pbp_en : 1;
1181 uint64_t wqe_lend : 1;
1182 uint64_t pkt_lend : 1;
1183 uint64_t naddbuf : 1;
1184 uint64_t addpkt : 1;
1186 uint64_t len_m8 : 1;
1187 uint64_t pkt_off : 1;
1188 uint64_t ipd_full : 1;
1189 uint64_t pq_nabuf : 1;
1190 uint64_t pq_apkt : 1;
1191 uint64_t no_wptr : 1;
1193 uint64_t rst_done : 1;
1194 uint64_t use_sop : 1;
1195 uint64_t reserved_18_63 : 46;
1198 struct cvmx_ipd_ctl_status_cn30xx {
1199 #ifdef __BIG_ENDIAN_BITFIELD
1200 uint64_t reserved_10_63 : 54;
1201 uint64_t len_m8 : 1; /**< Setting of this bit will subtract 8 from the
1202 data-length field in the header written wo the
1203 POW and the top of a MBUFF.
1204 OCTEAN generates a length that includes the
1205 length of the data + 8 for the header-field. By
1206 setting this bit the 8 for the instr-field will
1207 not be included in the length field of the header.
1208 NOTE: IPD is compliant with the spec when this
1210 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1212 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1213 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1214 WILL be incremented by one for every work
1215 queue entry that is sent to POW. */
1216 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1217 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1218 WILL NOT be incremented when IPD allocates a
1219 buffer for a packet on the port. */
1220 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1221 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1222 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1223 the sending of port level backpressure to the
1224 Octane input-ports. Once enabled the sending of
1225 port-level-backpressure can not be disabled by
1226 changing the value of this bit.
1227 GMXX_INF_MODE[EN] must be set to '1' for each
1228 packet interface which requires port back pressure
1229 prior to setting PBP_EN to '1'. */
1230 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1231 is written through to memory.
1232 1 ==> All packet data (and next buffer pointers) is
1233 written into the cache.
1234 2 ==> The first aligned cache block holding the
1235 packet data (and initial next buffer pointer) is
1236 written to the L2 cache, all remaining cache blocks
1237 are not written to the L2 cache.
1238 3 ==> The first two aligned cache blocks holding
1239 the packet data (and initial next buffer pointer)
1240 are written to the L2 cache, all remaining cache
1241 blocks are not written to the L2 cache. */
1242 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD. */
1244 uint64_t ipd_en : 1;
1245 cvmx_ipd_mode_t opc_mode : 2;
1246 uint64_t pbp_en : 1;
1247 uint64_t wqe_lend : 1;
1248 uint64_t pkt_lend : 1;
1249 uint64_t naddbuf : 1;
1250 uint64_t addpkt : 1;
1252 uint64_t len_m8 : 1;
1253 uint64_t reserved_10_63 : 54;
1256 struct cvmx_ipd_ctl_status_cn30xx cn31xx;
1257 struct cvmx_ipd_ctl_status_cn30xx cn38xx;
1258 struct cvmx_ipd_ctl_status_cn38xxp2 {
1259 #ifdef __BIG_ENDIAN_BITFIELD
1260 uint64_t reserved_9_63 : 55;
1261 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1263 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1264 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1265 WILL be incremented by one for every work
1266 queue entry that is sent to POW.
1268 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1269 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1270 WILL NOT be incremented when IPD allocates a
1271 buffer for a packet on the port.
1273 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1274 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1275 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1276 the sending of port level backpressure to the
1277 Octane input-ports. Once enabled the sending of
1278 port-level-backpressure can not be disabled by
1279 changing the value of this bit. */
1280 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1281 is written through to memory.
1282 1 ==> All packet data (and next buffer pointers) is
1283 written into the cache.
1284 2 ==> The first aligned cache block holding the
1285 packet data (and initial next buffer pointer) is
1286 written to the L2 cache, all remaining cache blocks
1287 are not written to the L2 cache.
1288 3 ==> The first two aligned cache blocks holding
1289 the packet data (and initial next buffer pointer)
1290 are written to the L2 cache, all remaining cache
1291 blocks are not written to the L2 cache. */
1292 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD. */
1294 uint64_t ipd_en : 1;
1295 cvmx_ipd_mode_t opc_mode : 2;
1296 uint64_t pbp_en : 1;
1297 uint64_t wqe_lend : 1;
1298 uint64_t pkt_lend : 1;
1299 uint64_t naddbuf : 1;
1300 uint64_t addpkt : 1;
1302 uint64_t reserved_9_63 : 55;
1305 struct cvmx_ipd_ctl_status_cn50xx {
1306 #ifdef __BIG_ENDIAN_BITFIELD
1307 uint64_t reserved_15_63 : 49;
1308 uint64_t no_wptr : 1; /**< When set '1' the WQE pointers will not be used and
1309 the WQE will be located at the front of the packet. */
1310 uint64_t pq_apkt : 1; /**< Reserved. */
1311 uint64_t pq_nabuf : 1; /**< Reserved. */
1312 uint64_t ipd_full : 1; /**< When clear '0' the IPD acts normaly.
1313 When set '1' the IPD drive the IPD_BUFF_FULL line to
1314 the IOB-arbiter, telling it to not give grants to
1315 NCB devices sending packet data. */
1316 uint64_t pkt_off : 1; /**< When clear '0' the IPD working normaly,
1317 buffering the received packet data. When set '1'
1318 the IPD will not buffer the received packet data. */
1319 uint64_t len_m8 : 1; /**< Setting of this bit will subtract 8 from the
1320 data-length field in the header written wo the
1321 POW and the top of a MBUFF.
1322 OCTEAN generates a length that includes the
1323 length of the data + 8 for the header-field. By
1324 setting this bit the 8 for the instr-field will
1325 not be included in the length field of the header.
1326 NOTE: IPD is compliant with the spec when this
1328 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1330 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1331 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1332 WILL be incremented by one for every work
1333 queue entry that is sent to POW. */
1334 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1335 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1336 WILL NOT be incremented when IPD allocates a
1337 buffer for a packet on the port. */
1338 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1339 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1340 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1341 the sending of port level backpressure to the
1342 Octane input-ports. Once enabled the sending of
1343 port-level-backpressure can not be disabled by
1344 changing the value of this bit.
1345 GMXX_INF_MODE[EN] must be set to '1' for each
1346 packet interface which requires port back pressure
1347 prior to setting PBP_EN to '1'. */
1348 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1349 is written through to memory.
1350 1 ==> All packet data (and next buffer pointers) is
1351 written into the cache.
1352 2 ==> The first aligned cache block holding the
1353 packet data (and initial next buffer pointer) is
1354 written to the L2 cache, all remaining cache blocks
1355 are not written to the L2 cache.
1356 3 ==> The first two aligned cache blocks holding
1357 the packet data (and initial next buffer pointer)
1358 are written to the L2 cache, all remaining cache
1359 blocks are not written to the L2 cache. */
1360 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD.
1361 When clear '0', the IPD will appear to the
1362 IOB-arbiter to be applying backpressure, this
1363 causes the IOB-Arbiter to not send grants to NCB
1364 devices requesting to send packet data to the IPD. */
1366 uint64_t ipd_en : 1;
1367 cvmx_ipd_mode_t opc_mode : 2;
1368 uint64_t pbp_en : 1;
1369 uint64_t wqe_lend : 1;
1370 uint64_t pkt_lend : 1;
1371 uint64_t naddbuf : 1;
1372 uint64_t addpkt : 1;
1374 uint64_t len_m8 : 1;
1375 uint64_t pkt_off : 1;
1376 uint64_t ipd_full : 1;
1377 uint64_t pq_nabuf : 1;
1378 uint64_t pq_apkt : 1;
1379 uint64_t no_wptr : 1;
1380 uint64_t reserved_15_63 : 49;
1383 struct cvmx_ipd_ctl_status_cn50xx cn52xx;
1384 struct cvmx_ipd_ctl_status_cn50xx cn52xxp1;
1385 struct cvmx_ipd_ctl_status_cn50xx cn56xx;
1386 struct cvmx_ipd_ctl_status_cn50xx cn56xxp1;
1387 struct cvmx_ipd_ctl_status_cn58xx {
1388 #ifdef __BIG_ENDIAN_BITFIELD
1389 uint64_t reserved_12_63 : 52;
1390 uint64_t ipd_full : 1; /**< When clear '0' the IPD acts normaly.
1391 When set '1' the IPD drive the IPD_BUFF_FULL line to
1392 the IOB-arbiter, telling it to not give grants to
1393 NCB devices sending packet data. */
1394 uint64_t pkt_off : 1; /**< When clear '0' the IPD working normaly,
1395 buffering the received packet data. When set '1'
1396 the IPD will not buffer the received packet data. */
1397 uint64_t len_m8 : 1; /**< Setting of this bit will subtract 8 from the
1398 data-length field in the header written wo the
1399 POW and the top of a MBUFF.
1400 OCTEAN PASS2 generates a length that includes the
1401 length of the data + 8 for the header-field. By
1402 setting this bit the 8 for the instr-field will
1403 not be included in the length field of the header.
1404 NOTE: IPD is compliant with the spec when this
1406 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1408 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1409 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1410 WILL be incremented by one for every work
1411 queue entry that is sent to POW.
1413 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1414 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL]
1415 WILL NOT be incremented when IPD allocates a
1416 buffer for a packet on the port.
1418 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1419 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1420 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1421 the sending of port level backpressure to the
1422 Octane input-ports. Once enabled the sending of
1423 port-level-backpressure can not be disabled by
1424 changing the value of this bit. */
1425 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1426 is written through to memory.
1427 1 ==> All packet data (and next buffer pointers) is
1428 written into the cache.
1429 2 ==> The first aligned cache block holding the
1430 packet data (and initial next buffer pointer) is
1431 written to the L2 cache, all remaining cache blocks
1432 are not written to the L2 cache.
1433 3 ==> The first two aligned cache blocks holding
1434 the packet data (and initial next buffer pointer)
1435 are written to the L2 cache, all remaining cache
1436 blocks are not written to the L2 cache. */
1437 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD.
1438 When clear '0', the IPD will appear to the
1439 IOB-arbiter to be applying backpressure, this
1440 causes the IOB-Arbiter to not send grants to NCB
1441 devices requesting to send packet data to the IPD. */
1443 uint64_t ipd_en : 1;
1444 cvmx_ipd_mode_t opc_mode : 2;
1445 uint64_t pbp_en : 1;
1446 uint64_t wqe_lend : 1;
1447 uint64_t pkt_lend : 1;
1448 uint64_t naddbuf : 1;
1449 uint64_t addpkt : 1;
1451 uint64_t len_m8 : 1;
1452 uint64_t pkt_off : 1;
1453 uint64_t ipd_full : 1;
1454 uint64_t reserved_12_63 : 52;
1457 struct cvmx_ipd_ctl_status_cn58xx cn58xxp1;
1458 struct cvmx_ipd_ctl_status_s cn61xx;
1459 struct cvmx_ipd_ctl_status_s cn63xx;
1460 struct cvmx_ipd_ctl_status_cn63xxp1 {
1461 #ifdef __BIG_ENDIAN_BITFIELD
1462 uint64_t reserved_16_63 : 48;
1463 uint64_t clken : 1; /**< Controls the conditional clocking within IPD
1464 0=Allow HW to control the clocks
1465 1=Force the clocks to be always on */
1466 uint64_t no_wptr : 1; /**< When set '1' the WQE pointers will not be used and
1467 the WQE will be located at the front of the packet.
1469 - IPD_WQE_FPA_QUEUE[WQE_QUE] is not used
1470 - IPD_1ST_MBUFF_SKIP[SKIP_SZ] must be at least 16
1471 - If 16 <= IPD_1ST_MBUFF_SKIP[SKIP_SZ] <= 31 then
1472 the WQE will be written into the first 128B
1473 cache block in the first buffer that contains
1475 - If IPD_1ST_MBUFF_SKIP[SKIP_SZ] == 32 then
1476 the WQE will be written into the second 128B
1477 cache block in the first buffer that contains
1479 uint64_t pq_apkt : 1; /**< When set IPD_PORT_QOS_X_CNT WILL be incremented
1480 by one for every work queue entry that is sent to
1482 uint64_t pq_nabuf : 1; /**< When set IPD_PORT_QOS_X_CNT WILL NOT be
1483 incremented when IPD allocates a buffer for a
1485 uint64_t ipd_full : 1; /**< When clear '0' the IPD acts normaly.
1486 When set '1' the IPD drive the IPD_BUFF_FULL line to
1487 the IOB-arbiter, telling it to not give grants to
1488 NCB devices sending packet data. */
1489 uint64_t pkt_off : 1; /**< When clear '0' the IPD working normaly,
1490 buffering the received packet data. When set '1'
1491 the IPD will not buffer the received packet data. */
1492 uint64_t len_m8 : 1; /**< Setting of this bit will subtract 8 from the
1493 data-length field in the header written to the
1494 POW and the top of a MBUFF.
1495 OCTEAN generates a length that includes the
1496 length of the data + 8 for the header-field. By
1497 setting this bit the 8 for the instr-field will
1498 not be included in the length field of the header.
1499 NOTE: IPD is compliant with the spec when this
1501 uint64_t reset : 1; /**< When set '1' causes a reset of the IPD, except
1503 uint64_t addpkt : 1; /**< When IPD_CTL_STATUS[ADDPKT] is set,
1504 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL],
1505 IPD_PORT_BP_COUNTERS2_PAIR(port)[CNT_VAL] and
1506 IPD_PORT_BP_COUNTERS3_PAIR(port)[CNT_VAL]
1507 WILL be incremented by one for every work
1508 queue entry that is sent to POW. */
1509 uint64_t naddbuf : 1; /**< When IPD_CTL_STATUS[NADDBUF] is set,
1510 IPD_PORT_BP_COUNTERS_PAIR(port)[CNT_VAL],
1511 IPD_PORT_BP_COUNTERS2_PAIR(port)[CNT_VAL] and
1512 IPD_PORT_BP_COUNTERS3_PAIR(port)[CNT_VAL]
1513 WILL NOT be incremented when IPD allocates a
1514 buffer for a packet on the port. */
1515 uint64_t pkt_lend : 1; /**< Changes PKT to little endian writes to L2C */
1516 uint64_t wqe_lend : 1; /**< Changes WQE to little endian writes to L2C */
1517 uint64_t pbp_en : 1; /**< Port back pressure enable. When set '1' enables
1518 the sending of port level backpressure to the
1519 Octane input-ports. The application should NOT
1520 de-assert this bit after asserting it. The
1521 receivers of this bit may have been put into
1522 backpressure mode and can only be released by
1523 IPD informing them that the backpressure has
1525 GMXX_INF_MODE[EN] must be set to '1' for each
1526 packet interface which requires port back pressure
1527 prior to setting PBP_EN to '1'. */
1528 cvmx_ipd_mode_t opc_mode : 2; /**< 0 ==> All packet data (and next buffer pointers)
1529 is written through to memory.
1530 1 ==> All packet data (and next buffer pointers) is
1531 written into the cache.
1532 2 ==> The first aligned cache block holding the
1533 packet data (and initial next buffer pointer) is
1534 written to the L2 cache, all remaining cache blocks
1535 are not written to the L2 cache.
1536 3 ==> The first two aligned cache blocks holding
1537 the packet data (and initial next buffer pointer)
1538 are written to the L2 cache, all remaining cache
1539 blocks are not written to the L2 cache. */
1540 uint64_t ipd_en : 1; /**< When set '1' enable the operation of the IPD.
1541 When clear '0', the IPD will appear to the
1542 IOB-arbiter to be applying backpressure, this
1543 causes the IOB-Arbiter to not send grants to NCB
1544 devices requesting to send packet data to the IPD. */
1546 uint64_t ipd_en : 1;
1547 cvmx_ipd_mode_t opc_mode : 2;
1548 uint64_t pbp_en : 1;
1549 uint64_t wqe_lend : 1;
1550 uint64_t pkt_lend : 1;
1551 uint64_t naddbuf : 1;
1552 uint64_t addpkt : 1;
1554 uint64_t len_m8 : 1;
1555 uint64_t pkt_off : 1;
1556 uint64_t ipd_full : 1;
1557 uint64_t pq_nabuf : 1;
1558 uint64_t pq_apkt : 1;
1559 uint64_t no_wptr : 1;
1561 uint64_t reserved_16_63 : 48;
1564 struct cvmx_ipd_ctl_status_s cn66xx;
1565 struct cvmx_ipd_ctl_status_s cn68xx;
1566 struct cvmx_ipd_ctl_status_s cn68xxp1;
1567 struct cvmx_ipd_ctl_status_s cnf71xx;
1569 typedef union cvmx_ipd_ctl_status cvmx_ipd_ctl_status_t;
1574 * IPD_ECC_CTL = IPD ECC Control
1576 * Allows inserting ECC errors for testing.
1578 union cvmx_ipd_ecc_ctl {
1580 struct cvmx_ipd_ecc_ctl_s {
1581 #ifdef __BIG_ENDIAN_BITFIELD
1582 uint64_t reserved_8_63 : 56;
1583 uint64_t pm3_syn : 2; /**< Flip the syndrom to generate 1-bit/2-bits error
1584 for testing of Packet Memory 3.
1585 2'b00 : No Error Generation
1586 2'b10, 2'b01: Flip 1 bit
1587 2'b11 : Flip 2 bits */
1588 uint64_t pm2_syn : 2; /**< Flip the syndrom to generate 1-bit/2-bits error
1589 for testing of Packet Memory 2.
1590 2'b00 : No Error Generation
1591 2'b10, 2'b01: Flip 1 bit
1592 2'b11 : Flip 2 bits */
1593 uint64_t pm1_syn : 2; /**< Flip the syndrom to generate 1-bit/2-bits error
1594 for testing of Packet Memory 1.
1595 2'b00 : No Error Generation
1596 2'b10, 2'b01: Flip 1 bit
1597 2'b11 : Flip 2 bits */
1598 uint64_t pm0_syn : 2; /**< Flip the syndrom to generate 1-bit/2-bits error
1599 for testing of Packet Memory 0.
1600 2'b00 : No Error Generation
1601 2'b10, 2'b01: Flip 1 bit
1602 2'b11 : Flip 2 bits */
1604 uint64_t pm0_syn : 2;
1605 uint64_t pm1_syn : 2;
1606 uint64_t pm2_syn : 2;
1607 uint64_t pm3_syn : 2;
1608 uint64_t reserved_8_63 : 56;
1611 struct cvmx_ipd_ecc_ctl_s cn68xx;
1612 struct cvmx_ipd_ecc_ctl_s cn68xxp1;
1614 typedef union cvmx_ipd_ecc_ctl cvmx_ipd_ecc_ctl_t;
1617 * cvmx_ipd_free_ptr_fifo_ctl
1619 * IPD_FREE_PTR_FIFO_CTL = IPD's FREE Pointer FIFO Control
1621 * Allows reading of the Page-Pointers stored in the IPD's FREE Fifo.
1622 * See also the IPD_FREE_PTR_VALUE
1624 union cvmx_ipd_free_ptr_fifo_ctl {
1626 struct cvmx_ipd_free_ptr_fifo_ctl_s {
1627 #ifdef __BIG_ENDIAN_BITFIELD
1628 uint64_t reserved_32_63 : 32;
1629 uint64_t max_cnts : 7; /**< Maximum number of Packet-Pointers or WQE-Pointers
1630 that COULD be in the FIFO.
1631 When IPD_CTL_STATUS[NO_WPTR] is set '1' this field
1632 only represents the Max number of Packet-Pointers,
1633 WQE-Pointers are not used in this mode. */
1634 uint64_t wraddr : 8; /**< Present FIFO WQE Read address. */
1635 uint64_t praddr : 8; /**< Present FIFO Packet Read address. */
1636 uint64_t cena : 1; /**< Active low Chip Enable to the read the
1637 pwp_fifo. This bit also controls the MUX-select
1638 that steers [RADDR] to the pwp_fifo.
1639 *WARNING - Setting this field to '0' will allow
1640 reading of the memories thorugh the PTR field,
1641 but will cause unpredictable operation of the IPD
1642 under normal operation. */
1643 uint64_t raddr : 8; /**< Sets the address to read from in the pwp_fifo.
1644 Addresses 0 through 63 contain Packet-Pointers and
1645 addresses 64 through 127 contain WQE-Pointers.
1646 When IPD_CTL_STATUS[NO_WPTR] is set '1' addresses
1647 64 through 127 are not valid. */
1651 uint64_t praddr : 8;
1652 uint64_t wraddr : 8;
1653 uint64_t max_cnts : 7;
1654 uint64_t reserved_32_63 : 32;
1657 struct cvmx_ipd_free_ptr_fifo_ctl_s cn68xx;
1658 struct cvmx_ipd_free_ptr_fifo_ctl_s cn68xxp1;
1660 typedef union cvmx_ipd_free_ptr_fifo_ctl cvmx_ipd_free_ptr_fifo_ctl_t;
1663 * cvmx_ipd_free_ptr_value
1665 * IPD_FREE_PTR_VALUE = IPD's FREE Pointer Value
1667 * The value of the pointer selected through the IPD_FREE_PTR_FIFO_CTL
1669 union cvmx_ipd_free_ptr_value {
1671 struct cvmx_ipd_free_ptr_value_s {
1672 #ifdef __BIG_ENDIAN_BITFIELD
1673 uint64_t reserved_33_63 : 31;
1674 uint64_t ptr : 33; /**< The output of the pwp_fifo. */
1677 uint64_t reserved_33_63 : 31;
1680 struct cvmx_ipd_free_ptr_value_s cn68xx;
1681 struct cvmx_ipd_free_ptr_value_s cn68xxp1;
1683 typedef union cvmx_ipd_free_ptr_value cvmx_ipd_free_ptr_value_t;
1686 * cvmx_ipd_hold_ptr_fifo_ctl
1688 * IPD_HOLD_PTR_FIFO_CTL = IPD's Holding Pointer FIFO Control
1690 * Allows reading of the Page-Pointers stored in the IPD's Holding Fifo.
1692 union cvmx_ipd_hold_ptr_fifo_ctl {
1694 struct cvmx_ipd_hold_ptr_fifo_ctl_s {
1695 #ifdef __BIG_ENDIAN_BITFIELD
1696 uint64_t reserved_43_63 : 21;
1697 uint64_t ptr : 33; /**< The output of the holding-fifo. */
1698 uint64_t max_pkt : 3; /**< Maximum number of Packet-Pointers that COULD be
1700 uint64_t praddr : 3; /**< Present Packet-Pointer read address. */
1701 uint64_t cena : 1; /**< Active low Chip Enable that controls the
1702 MUX-select that steers [RADDR] to the fifo.
1703 *WARNING - Setting this field to '0' will allow
1704 reading of the memories thorugh the PTR field,
1705 but will cause unpredictable operation of the IPD
1706 under normal operation. */
1707 uint64_t raddr : 3; /**< Sets the address to read from in the holding.
1708 fifo in the IPD. This FIFO holds Packet-Pointers
1709 to be used for packet data storage. */
1713 uint64_t praddr : 3;
1714 uint64_t max_pkt : 3;
1716 uint64_t reserved_43_63 : 21;
1719 struct cvmx_ipd_hold_ptr_fifo_ctl_s cn68xx;
1720 struct cvmx_ipd_hold_ptr_fifo_ctl_s cn68xxp1;
1722 typedef union cvmx_ipd_hold_ptr_fifo_ctl cvmx_ipd_hold_ptr_fifo_ctl_t;
1727 * IPD_INTERRUPT_ENB = IPD Interrupt Enable Register
1729 * Used to enable the various interrupting conditions of IPD
1731 union cvmx_ipd_int_enb {
1733 struct cvmx_ipd_int_enb_s {
1734 #ifdef __BIG_ENDIAN_BITFIELD
1735 uint64_t reserved_23_63 : 41;
1736 uint64_t pw3_dbe : 1; /**< Allows an interrupt to be sent when the
1737 corresponding bit in the IPD_INT_SUM is set. */
1738 uint64_t pw3_sbe : 1; /**< Allows an interrupt to be sent when the
1739 corresponding bit in the IPD_INT_SUM is set. */
1740 uint64_t pw2_dbe : 1; /**< Allows an interrupt to be sent when the
1741 corresponding bit in the IPD_INT_SUM is set. */
1742 uint64_t pw2_sbe : 1; /**< Allows an interrupt to be sent when the
1743 corresponding bit in the IPD_INT_SUM is set. */
1744 uint64_t pw1_dbe : 1; /**< Allows an interrupt to be sent when the
1745 corresponding bit in the IPD_INT_SUM is set. */
1746 uint64_t pw1_sbe : 1; /**< Allows an interrupt to be sent when the
1747 corresponding bit in the IPD_INT_SUM is set. */
1748 uint64_t pw0_dbe : 1; /**< Allows an interrupt to be sent when the
1749 corresponding bit in the IPD_INT_SUM is set. */
1750 uint64_t pw0_sbe : 1; /**< Allows an interrupt to be sent when the
1751 corresponding bit in the IPD_INT_SUM is set. */
1752 uint64_t dat : 1; /**< Allows an interrupt to be sent when the
1753 corresponding bit in the IPD_INT_SUM is set. */
1754 uint64_t eop : 1; /**< Allows an interrupt to be sent when the
1755 corresponding bit in the IPD_INT_SUM is set. */
1756 uint64_t sop : 1; /**< Allows an interrupt to be sent when the
1757 corresponding bit in the IPD_INT_SUM is set. */
1758 uint64_t pq_sub : 1; /**< Allows an interrupt to be sent when the
1759 corresponding bit in the IPD_INT_SUM is set. */
1760 uint64_t pq_add : 1; /**< Allows an interrupt to be sent when the
1761 corresponding bit in the IPD_INT_SUM is set. */
1762 uint64_t bc_ovr : 1; /**< Allows an interrupt to be sent when the
1763 corresponding bit in the IPD_INT_SUM is set. */
1764 uint64_t d_coll : 1; /**< Allows an interrupt to be sent when the
1765 corresponding bit in the IPD_INT_SUM is set. */
1766 uint64_t c_coll : 1; /**< Allows an interrupt to be sent when the
1767 corresponding bit in the IPD_INT_SUM is set. */
1768 uint64_t cc_ovr : 1; /**< Allows an interrupt to be sent when the
1769 corresponding bit in the IPD_INT_SUM is set. */
1770 uint64_t dc_ovr : 1; /**< Allows an interrupt to be sent when the
1771 corresponding bit in the IPD_INT_SUM is set. */
1772 uint64_t bp_sub : 1; /**< Enables interrupts when a backpressure subtract
1773 has an illegal value. */
1774 uint64_t prc_par3 : 1; /**< Enable parity error interrupts for bits
1775 [127:96] of the PBM memory. */
1776 uint64_t prc_par2 : 1; /**< Enable parity error interrupts for bits
1777 [95:64] of the PBM memory. */
1778 uint64_t prc_par1 : 1; /**< Enable parity error interrupts for bits
1779 [63:32] of the PBM memory. */
1780 uint64_t prc_par0 : 1; /**< Enable parity error interrupts for bits
1781 [31:0] of the PBM memory. */
1783 uint64_t prc_par0 : 1;
1784 uint64_t prc_par1 : 1;
1785 uint64_t prc_par2 : 1;
1786 uint64_t prc_par3 : 1;
1787 uint64_t bp_sub : 1;
1788 uint64_t dc_ovr : 1;
1789 uint64_t cc_ovr : 1;
1790 uint64_t c_coll : 1;
1791 uint64_t d_coll : 1;
1792 uint64_t bc_ovr : 1;
1793 uint64_t pq_add : 1;
1794 uint64_t pq_sub : 1;
1798 uint64_t pw0_sbe : 1;
1799 uint64_t pw0_dbe : 1;
1800 uint64_t pw1_sbe : 1;
1801 uint64_t pw1_dbe : 1;
1802 uint64_t pw2_sbe : 1;
1803 uint64_t pw2_dbe : 1;
1804 uint64_t pw3_sbe : 1;
1805 uint64_t pw3_dbe : 1;
1806 uint64_t reserved_23_63 : 41;
1809 struct cvmx_ipd_int_enb_cn30xx {
1810 #ifdef __BIG_ENDIAN_BITFIELD
1811 uint64_t reserved_5_63 : 59;
1812 uint64_t bp_sub : 1; /**< Enables interrupts when a backpressure subtract
1813 has an illegal value. */
1814 uint64_t prc_par3 : 1; /**< Enable parity error interrupts for bits
1815 [127:96] of the PBM memory. */
1816 uint64_t prc_par2 : 1; /**< Enable parity error interrupts for bits
1817 [95:64] of the PBM memory. */
1818 uint64_t prc_par1 : 1; /**< Enable parity error interrupts for bits
1819 [63:32] of the PBM memory. */
1820 uint64_t prc_par0 : 1; /**< Enable parity error interrupts for bits
1821 [31:0] of the PBM memory. */
1823 uint64_t prc_par0 : 1;
1824 uint64_t prc_par1 : 1;
1825 uint64_t prc_par2 : 1;
1826 uint64_t prc_par3 : 1;
1827 uint64_t bp_sub : 1;
1828 uint64_t reserved_5_63 : 59;
1831 struct cvmx_ipd_int_enb_cn30xx cn31xx;
1832 struct cvmx_ipd_int_enb_cn38xx {
1833 #ifdef __BIG_ENDIAN_BITFIELD
1834 uint64_t reserved_10_63 : 54;
1835 uint64_t bc_ovr : 1; /**< Allows an interrupt to be sent when the
1836 corresponding bit in the IPD_INT_SUM is set.
1837 This is a PASS-3 Field. */
1838 uint64_t d_coll : 1; /**< Allows an interrupt to be sent when the
1839 corresponding bit in the IPD_INT_SUM is set.
1840 This is a PASS-3 Field. */
1841 uint64_t c_coll : 1; /**< Allows an interrupt to be sent when the
1842 corresponding bit in the IPD_INT_SUM is set.
1843 This is a PASS-3 Field. */
1844 uint64_t cc_ovr : 1; /**< Allows an interrupt to be sent when the
1845 corresponding bit in the IPD_INT_SUM is set.
1846 This is a PASS-3 Field. */
1847 uint64_t dc_ovr : 1; /**< Allows an interrupt to be sent when the
1848 corresponding bit in the IPD_INT_SUM is set.
1849 This is a PASS-3 Field. */
1850 uint64_t bp_sub : 1; /**< Enables interrupts when a backpressure subtract
1851 has an illegal value. */
1852 uint64_t prc_par3 : 1; /**< Enable parity error interrupts for bits
1853 [127:96] of the PBM memory. */
1854 uint64_t prc_par2 : 1; /**< Enable parity error interrupts for bits
1855 [95:64] of the PBM memory. */
1856 uint64_t prc_par1 : 1; /**< Enable parity error interrupts for bits
1857 [63:32] of the PBM memory. */
1858 uint64_t prc_par0 : 1; /**< Enable parity error interrupts for bits
1859 [31:0] of the PBM memory. */
1861 uint64_t prc_par0 : 1;
1862 uint64_t prc_par1 : 1;
1863 uint64_t prc_par2 : 1;
1864 uint64_t prc_par3 : 1;
1865 uint64_t bp_sub : 1;
1866 uint64_t dc_ovr : 1;
1867 uint64_t cc_ovr : 1;
1868 uint64_t c_coll : 1;
1869 uint64_t d_coll : 1;
1870 uint64_t bc_ovr : 1;
1871 uint64_t reserved_10_63 : 54;
1874 struct cvmx_ipd_int_enb_cn30xx cn38xxp2;
1875 struct cvmx_ipd_int_enb_cn38xx cn50xx;
1876 struct cvmx_ipd_int_enb_cn52xx {
1877 #ifdef __BIG_ENDIAN_BITFIELD
1878 uint64_t reserved_12_63 : 52;
1879 uint64_t pq_sub : 1; /**< Allows an interrupt to be sent when the
1880 corresponding bit in the IPD_INT_SUM is set. */
1881 uint64_t pq_add : 1; /**< Allows an interrupt to be sent when the
1882 corresponding bit in the IPD_INT_SUM is set. */
1883 uint64_t bc_ovr : 1; /**< Allows an interrupt to be sent when the
1884 corresponding bit in the IPD_INT_SUM is set. */
1885 uint64_t d_coll : 1; /**< Allows an interrupt to be sent when the
1886 corresponding bit in the IPD_INT_SUM is set. */
1887 uint64_t c_coll : 1; /**< Allows an interrupt to be sent when the
1888 corresponding bit in the IPD_INT_SUM is set. */
1889 uint64_t cc_ovr : 1; /**< Allows an interrupt to be sent when the
1890 corresponding bit in the IPD_INT_SUM is set. */
1891 uint64_t dc_ovr : 1; /**< Allows an interrupt to be sent when the
1892 corresponding bit in the IPD_INT_SUM is set. */
1893 uint64_t bp_sub : 1; /**< Enables interrupts when a backpressure subtract
1894 has an illegal value. */
1895 uint64_t prc_par3 : 1; /**< Enable parity error interrupts for bits
1896 [127:96] of the PBM memory. */
1897 uint64_t prc_par2 : 1; /**< Enable parity error interrupts for bits
1898 [95:64] of the PBM memory. */
1899 uint64_t prc_par1 : 1; /**< Enable parity error interrupts for bits
1900 [63:32] of the PBM memory. */
1901 uint64_t prc_par0 : 1; /**< Enable parity error interrupts for bits
1902 [31:0] of the PBM memory. */
1904 uint64_t prc_par0 : 1;
1905 uint64_t prc_par1 : 1;
1906 uint64_t prc_par2 : 1;
1907 uint64_t prc_par3 : 1;
1908 uint64_t bp_sub : 1;
1909 uint64_t dc_ovr : 1;
1910 uint64_t cc_ovr : 1;
1911 uint64_t c_coll : 1;
1912 uint64_t d_coll : 1;
1913 uint64_t bc_ovr : 1;
1914 uint64_t pq_add : 1;
1915 uint64_t pq_sub : 1;
1916 uint64_t reserved_12_63 : 52;
1919 struct cvmx_ipd_int_enb_cn52xx cn52xxp1;
1920 struct cvmx_ipd_int_enb_cn52xx cn56xx;
1921 struct cvmx_ipd_int_enb_cn52xx cn56xxp1;
1922 struct cvmx_ipd_int_enb_cn38xx cn58xx;
1923 struct cvmx_ipd_int_enb_cn38xx cn58xxp1;
1924 struct cvmx_ipd_int_enb_cn52xx cn61xx;
1925 struct cvmx_ipd_int_enb_cn52xx cn63xx;
1926 struct cvmx_ipd_int_enb_cn52xx cn63xxp1;
1927 struct cvmx_ipd_int_enb_cn52xx cn66xx;
1928 struct cvmx_ipd_int_enb_s cn68xx;
1929 struct cvmx_ipd_int_enb_s cn68xxp1;
1930 struct cvmx_ipd_int_enb_cn52xx cnf71xx;
1932 typedef union cvmx_ipd_int_enb cvmx_ipd_int_enb_t;
1937 * IPD_INTERRUPT_SUM = IPD Interrupt Summary Register
1939 * Set when an interrupt condition occurs, write '1' to clear.
1941 union cvmx_ipd_int_sum {
1943 struct cvmx_ipd_int_sum_s {
1944 #ifdef __BIG_ENDIAN_BITFIELD
1945 uint64_t reserved_23_63 : 41;
1946 uint64_t pw3_dbe : 1; /**< Packet memory 3 had ECC DBE. */
1947 uint64_t pw3_sbe : 1; /**< Packet memory 3 had ECC SBE. */
1948 uint64_t pw2_dbe : 1; /**< Packet memory 2 had ECC DBE. */
1949 uint64_t pw2_sbe : 1; /**< Packet memory 2 had ECC SBE. */
1950 uint64_t pw1_dbe : 1; /**< Packet memory 1 had ECC DBE. */
1951 uint64_t pw1_sbe : 1; /**< Packet memory 1 had ECC SBE. */
1952 uint64_t pw0_dbe : 1; /**< Packet memory 0 had ECC DBE. */
1953 uint64_t pw0_sbe : 1; /**< Packet memory 0 had ECC SBE. */
1954 uint64_t dat : 1; /**< Set when a data arrives before a SOP for the same
1955 reasm-id for a packet.
1956 The first detected error associated with bits [14:12]
1957 of this register will only be set here. A new bit
1958 can be set when the previous reported bit is cleared.
1959 Also see IPD_PKT_ERR. */
1960 uint64_t eop : 1; /**< Set when a EOP is followed by an EOP for the same
1961 reasm-id for a packet.
1962 The first detected error associated with bits [14:12]
1963 of this register will only be set here. A new bit
1964 can be set when the previous reported bit is cleared.
1965 Also see IPD_PKT_ERR. */
1966 uint64_t sop : 1; /**< Set when a SOP is followed by an SOP for the same
1967 reasm-id for a packet.
1968 The first detected error associated with bits [14:12]
1969 of this register will only be set here. A new bit
1970 can be set when the previous reported bit is cleared.
1971 Also see IPD_PKT_ERR. */
1972 uint64_t pq_sub : 1; /**< Set when a port-qos does an sub to the count
1973 that causes the counter to wrap. */
1974 uint64_t pq_add : 1; /**< Set when a port-qos does an add to the count
1975 that causes the counter to wrap. */
1976 uint64_t bc_ovr : 1; /**< Set when the byte-count to send to IOB overflows. */
1977 uint64_t d_coll : 1; /**< Set when the packet/WQE data to be sent to IOB
1979 uint64_t c_coll : 1; /**< Set when the packet/WQE commands to be sent to IOB
1981 uint64_t cc_ovr : 1; /**< Set when the command credits to the IOB overflow. */
1982 uint64_t dc_ovr : 1; /**< Set when the data credits to the IOB overflow. */
1983 uint64_t bp_sub : 1; /**< Set when a backpressure subtract is done with a
1984 supplied illegal value. */
1985 uint64_t prc_par3 : 1; /**< Set when a parity error is dected for bits
1986 [127:96] of the PBM memory. */
1987 uint64_t prc_par2 : 1; /**< Set when a parity error is dected for bits
1988 [95:64] of the PBM memory. */
1989 uint64_t prc_par1 : 1; /**< Set when a parity error is dected for bits
1990 [63:32] of the PBM memory. */
1991 uint64_t prc_par0 : 1; /**< Set when a parity error is dected for bits
1992 [31:0] of the PBM memory. */
1994 uint64_t prc_par0 : 1;
1995 uint64_t prc_par1 : 1;
1996 uint64_t prc_par2 : 1;
1997 uint64_t prc_par3 : 1;
1998 uint64_t bp_sub : 1;
1999 uint64_t dc_ovr : 1;
2000 uint64_t cc_ovr : 1;
2001 uint64_t c_coll : 1;
2002 uint64_t d_coll : 1;
2003 uint64_t bc_ovr : 1;
2004 uint64_t pq_add : 1;
2005 uint64_t pq_sub : 1;
2009 uint64_t pw0_sbe : 1;
2010 uint64_t pw0_dbe : 1;
2011 uint64_t pw1_sbe : 1;
2012 uint64_t pw1_dbe : 1;
2013 uint64_t pw2_sbe : 1;
2014 uint64_t pw2_dbe : 1;
2015 uint64_t pw3_sbe : 1;
2016 uint64_t pw3_dbe : 1;
2017 uint64_t reserved_23_63 : 41;
2020 struct cvmx_ipd_int_sum_cn30xx {
2021 #ifdef __BIG_ENDIAN_BITFIELD
2022 uint64_t reserved_5_63 : 59;
2023 uint64_t bp_sub : 1; /**< Set when a backpressure subtract is done with a
2024 supplied illegal value. */
2025 uint64_t prc_par3 : 1; /**< Set when a parity error is dected for bits
2026 [127:96] of the PBM memory. */
2027 uint64_t prc_par2 : 1; /**< Set when a parity error is dected for bits
2028 [95:64] of the PBM memory. */
2029 uint64_t prc_par1 : 1; /**< Set when a parity error is dected for bits
2030 [63:32] of the PBM memory. */
2031 uint64_t prc_par0 : 1; /**< Set when a parity error is dected for bits
2032 [31:0] of the PBM memory. */
2034 uint64_t prc_par0 : 1;
2035 uint64_t prc_par1 : 1;
2036 uint64_t prc_par2 : 1;
2037 uint64_t prc_par3 : 1;
2038 uint64_t bp_sub : 1;
2039 uint64_t reserved_5_63 : 59;
2042 struct cvmx_ipd_int_sum_cn30xx cn31xx;
2043 struct cvmx_ipd_int_sum_cn38xx {
2044 #ifdef __BIG_ENDIAN_BITFIELD
2045 uint64_t reserved_10_63 : 54;
2046 uint64_t bc_ovr : 1; /**< Set when the byte-count to send to IOB overflows.
2047 This is a PASS-3 Field. */
2048 uint64_t d_coll : 1; /**< Set when the packet/WQE data to be sent to IOB
2050 This is a PASS-3 Field. */
2051 uint64_t c_coll : 1; /**< Set when the packet/WQE commands to be sent to IOB
2053 This is a PASS-3 Field. */
2054 uint64_t cc_ovr : 1; /**< Set when the command credits to the IOB overflow.
2055 This is a PASS-3 Field. */
2056 uint64_t dc_ovr : 1; /**< Set when the data credits to the IOB overflow.
2057 This is a PASS-3 Field. */
2058 uint64_t bp_sub : 1; /**< Set when a backpressure subtract is done with a
2059 supplied illegal value. */
2060 uint64_t prc_par3 : 1; /**< Set when a parity error is dected for bits
2061 [127:96] of the PBM memory. */
2062 uint64_t prc_par2 : 1; /**< Set when a parity error is dected for bits
2063 [95:64] of the PBM memory. */
2064 uint64_t prc_par1 : 1; /**< Set when a parity error is dected for bits
2065 [63:32] of the PBM memory. */
2066 uint64_t prc_par0 : 1; /**< Set when a parity error is dected for bits
2067 [31:0] of the PBM memory. */
2069 uint64_t prc_par0 : 1;
2070 uint64_t prc_par1 : 1;
2071 uint64_t prc_par2 : 1;
2072 uint64_t prc_par3 : 1;
2073 uint64_t bp_sub : 1;
2074 uint64_t dc_ovr : 1;
2075 uint64_t cc_ovr : 1;
2076 uint64_t c_coll : 1;
2077 uint64_t d_coll : 1;
2078 uint64_t bc_ovr : 1;
2079 uint64_t reserved_10_63 : 54;
2082 struct cvmx_ipd_int_sum_cn30xx cn38xxp2;
2083 struct cvmx_ipd_int_sum_cn38xx cn50xx;
2084 struct cvmx_ipd_int_sum_cn52xx {
2085 #ifdef __BIG_ENDIAN_BITFIELD
2086 uint64_t reserved_12_63 : 52;
2087 uint64_t pq_sub : 1; /**< Set when a port-qos does an sub to the count
2088 that causes the counter to wrap. */
2089 uint64_t pq_add : 1; /**< Set when a port-qos does an add to the count
2090 that causes the counter to wrap. */
2091 uint64_t bc_ovr : 1; /**< Set when the byte-count to send to IOB overflows. */
2092 uint64_t d_coll : 1; /**< Set when the packet/WQE data to be sent to IOB
2094 uint64_t c_coll : 1; /**< Set when the packet/WQE commands to be sent to IOB
2096 uint64_t cc_ovr : 1; /**< Set when the command credits to the IOB overflow. */
2097 uint64_t dc_ovr : 1; /**< Set when the data credits to the IOB overflow. */
2098 uint64_t bp_sub : 1; /**< Set when a backpressure subtract is done with a
2099 supplied illegal value. */
2100 uint64_t prc_par3 : 1; /**< Set when a parity error is dected for bits
2101 [127:96] of the PBM memory. */
2102 uint64_t prc_par2 : 1; /**< Set when a parity error is dected for bits
2103 [95:64] of the PBM memory. */
2104 uint64_t prc_par1 : 1; /**< Set when a parity error is dected for bits
2105 [63:32] of the PBM memory. */
2106 uint64_t prc_par0 : 1; /**< Set when a parity error is dected for bits
2107 [31:0] of the PBM memory. */
2109 uint64_t prc_par0 : 1;
2110 uint64_t prc_par1 : 1;
2111 uint64_t prc_par2 : 1;
2112 uint64_t prc_par3 : 1;
2113 uint64_t bp_sub : 1;
2114 uint64_t dc_ovr : 1;
2115 uint64_t cc_ovr : 1;
2116 uint64_t c_coll : 1;
2117 uint64_t d_coll : 1;
2118 uint64_t bc_ovr : 1;
2119 uint64_t pq_add : 1;
2120 uint64_t pq_sub : 1;
2121 uint64_t reserved_12_63 : 52;
2124 struct cvmx_ipd_int_sum_cn52xx cn52xxp1;
2125 struct cvmx_ipd_int_sum_cn52xx cn56xx;
2126 struct cvmx_ipd_int_sum_cn52xx cn56xxp1;
2127 struct cvmx_ipd_int_sum_cn38xx cn58xx;
2128 struct cvmx_ipd_int_sum_cn38xx cn58xxp1;
2129 struct cvmx_ipd_int_sum_cn52xx cn61xx;
2130 struct cvmx_ipd_int_sum_cn52xx cn63xx;
2131 struct cvmx_ipd_int_sum_cn52xx cn63xxp1;
2132 struct cvmx_ipd_int_sum_cn52xx cn66xx;
2133 struct cvmx_ipd_int_sum_s cn68xx;
2134 struct cvmx_ipd_int_sum_s cn68xxp1;
2135 struct cvmx_ipd_int_sum_cn52xx cnf71xx;
2137 typedef union cvmx_ipd_int_sum cvmx_ipd_int_sum_t;
2140 * cvmx_ipd_next_pkt_ptr
2142 * IPD_NEXT_PKT_PTR = IPD's Next Packet Pointer
2144 * The value of the packet-pointer fetched and in the valid register.
2146 union cvmx_ipd_next_pkt_ptr {
2148 struct cvmx_ipd_next_pkt_ptr_s {
2149 #ifdef __BIG_ENDIAN_BITFIELD
2150 uint64_t reserved_33_63 : 31;
2151 uint64_t ptr : 33; /**< Pointer value. */
2154 uint64_t reserved_33_63 : 31;
2157 struct cvmx_ipd_next_pkt_ptr_s cn68xx;
2158 struct cvmx_ipd_next_pkt_ptr_s cn68xxp1;
2160 typedef union cvmx_ipd_next_pkt_ptr cvmx_ipd_next_pkt_ptr_t;
2163 * cvmx_ipd_next_wqe_ptr
2165 * IPD_NEXT_WQE_PTR = IPD's NEXT_WQE Pointer
2167 * The value of the WQE-pointer fetched and in the valid register.
2169 union cvmx_ipd_next_wqe_ptr {
2171 struct cvmx_ipd_next_wqe_ptr_s {
2172 #ifdef __BIG_ENDIAN_BITFIELD
2173 uint64_t reserved_33_63 : 31;
2174 uint64_t ptr : 33; /**< Pointer value.
2175 When IPD_CTL_STATUS[NO_WPTR] is set '1' this field
2176 represents a Packet-Pointer NOT a WQE pointer. */
2179 uint64_t reserved_33_63 : 31;
2182 struct cvmx_ipd_next_wqe_ptr_s cn68xx;
2183 struct cvmx_ipd_next_wqe_ptr_s cn68xxp1;
2185 typedef union cvmx_ipd_next_wqe_ptr cvmx_ipd_next_wqe_ptr_t;
2188 * cvmx_ipd_not_1st_mbuff_skip
2190 * IPD_NOT_1ST_MBUFF_SKIP = IPD Not First MBUFF Word Skip Size
2192 * The number of words that the IPD will skip when writing any MBUFF that is not the first.
2194 union cvmx_ipd_not_1st_mbuff_skip {
2196 struct cvmx_ipd_not_1st_mbuff_skip_s {
2197 #ifdef __BIG_ENDIAN_BITFIELD
2198 uint64_t reserved_6_63 : 58;
2199 uint64_t skip_sz : 6; /**< The number of 8-byte words from the top of any
2200 MBUFF, that is not the 1st MBUFF, that the IPD
2201 will write the next-pointer.
2202 Legal values are 0 to 32, where the MAX value
2204 IPD_PACKET_MBUFF_SIZE[MB_SIZE] - 16. */
2206 uint64_t skip_sz : 6;
2207 uint64_t reserved_6_63 : 58;
2210 struct cvmx_ipd_not_1st_mbuff_skip_s cn30xx;
2211 struct cvmx_ipd_not_1st_mbuff_skip_s cn31xx;
2212 struct cvmx_ipd_not_1st_mbuff_skip_s cn38xx;
2213 struct cvmx_ipd_not_1st_mbuff_skip_s cn38xxp2;
2214 struct cvmx_ipd_not_1st_mbuff_skip_s cn50xx;
2215 struct cvmx_ipd_not_1st_mbuff_skip_s cn52xx;
2216 struct cvmx_ipd_not_1st_mbuff_skip_s cn52xxp1;
2217 struct cvmx_ipd_not_1st_mbuff_skip_s cn56xx;
2218 struct cvmx_ipd_not_1st_mbuff_skip_s cn56xxp1;
2219 struct cvmx_ipd_not_1st_mbuff_skip_s cn58xx;
2220 struct cvmx_ipd_not_1st_mbuff_skip_s cn58xxp1;
2221 struct cvmx_ipd_not_1st_mbuff_skip_s cn61xx;
2222 struct cvmx_ipd_not_1st_mbuff_skip_s cn63xx;
2223 struct cvmx_ipd_not_1st_mbuff_skip_s cn63xxp1;
2224 struct cvmx_ipd_not_1st_mbuff_skip_s cn66xx;
2225 struct cvmx_ipd_not_1st_mbuff_skip_s cn68xx;
2226 struct cvmx_ipd_not_1st_mbuff_skip_s cn68xxp1;
2227 struct cvmx_ipd_not_1st_mbuff_skip_s cnf71xx;
2229 typedef union cvmx_ipd_not_1st_mbuff_skip cvmx_ipd_not_1st_mbuff_skip_t;
2232 * cvmx_ipd_on_bp_drop_pkt#
2234 * RESERVE SPACE UPTO 0x3FFF
2237 * RESERVED FOR FORMER IPD_SUB_PKIND_FCS - MOVED TO PIP
2239 * RESERVE 4008 - 40FF
2242 * IPD_ON_BP_DROP_PKT = IPD On Backpressure Drop Packet
2244 * When IPD applies backpressure to a BPID and the corresponding bit in this register is set,
2245 * then previously received packets will be dropped when processed.
2247 union cvmx_ipd_on_bp_drop_pktx {
2249 struct cvmx_ipd_on_bp_drop_pktx_s {
2250 #ifdef __BIG_ENDIAN_BITFIELD
2251 uint64_t prt_enb : 64; /**< The BPID corresponding to the bit position in this
2252 field will drop all NON-RAW packets to that BPID
2253 when BPID level backpressure is applied to that
2254 BPID. The applying of BPID-level backpressure for
2255 this dropping does not take into consideration the
2256 value of IPD_BPIDX_MBUF_TH[BP_ENB], nor
2257 IPD_RED_BPID_ENABLE[PRT_ENB]. */
2259 uint64_t prt_enb : 64;
2262 struct cvmx_ipd_on_bp_drop_pktx_s cn68xx;
2263 struct cvmx_ipd_on_bp_drop_pktx_s cn68xxp1;
2265 typedef union cvmx_ipd_on_bp_drop_pktx cvmx_ipd_on_bp_drop_pktx_t;
2268 * cvmx_ipd_packet_mbuff_size
2270 * IPD_PACKET_MBUFF_SIZE = IPD's PACKET MUBUF Size In Words
2272 * The number of words in a MBUFF used for packet data store.
2274 union cvmx_ipd_packet_mbuff_size {
2276 struct cvmx_ipd_packet_mbuff_size_s {
2277 #ifdef __BIG_ENDIAN_BITFIELD
2278 uint64_t reserved_12_63 : 52;
2279 uint64_t mb_size : 12; /**< The number of 8-byte words in a MBUF.
2280 This must be a number in the range of 32 to
2282 This is also the size of the FPA's
2283 Queue-0 Free-Page. */
2285 uint64_t mb_size : 12;
2286 uint64_t reserved_12_63 : 52;
2289 struct cvmx_ipd_packet_mbuff_size_s cn30xx;
2290 struct cvmx_ipd_packet_mbuff_size_s cn31xx;
2291 struct cvmx_ipd_packet_mbuff_size_s cn38xx;
2292 struct cvmx_ipd_packet_mbuff_size_s cn38xxp2;
2293 struct cvmx_ipd_packet_mbuff_size_s cn50xx;
2294 struct cvmx_ipd_packet_mbuff_size_s cn52xx;
2295 struct cvmx_ipd_packet_mbuff_size_s cn52xxp1;
2296 struct cvmx_ipd_packet_mbuff_size_s cn56xx;
2297 struct cvmx_ipd_packet_mbuff_size_s cn56xxp1;
2298 struct cvmx_ipd_packet_mbuff_size_s cn58xx;
2299 struct cvmx_ipd_packet_mbuff_size_s cn58xxp1;
2300 struct cvmx_ipd_packet_mbuff_size_s cn61xx;
2301 struct cvmx_ipd_packet_mbuff_size_s cn63xx;
2302 struct cvmx_ipd_packet_mbuff_size_s cn63xxp1;
2303 struct cvmx_ipd_packet_mbuff_size_s cn66xx;
2304 struct cvmx_ipd_packet_mbuff_size_s cn68xx;
2305 struct cvmx_ipd_packet_mbuff_size_s cn68xxp1;
2306 struct cvmx_ipd_packet_mbuff_size_s cnf71xx;
2308 typedef union cvmx_ipd_packet_mbuff_size cvmx_ipd_packet_mbuff_size_t;
2313 * IPD_PKT_ERR = IPD Packet Error Register
2315 * Provides status about the failing packet recevie error.
2317 union cvmx_ipd_pkt_err {
2319 struct cvmx_ipd_pkt_err_s {
2320 #ifdef __BIG_ENDIAN_BITFIELD
2321 uint64_t reserved_6_63 : 58;
2322 uint64_t reasm : 6; /**< When IPD_INT_SUM[14:12] bit is set, this field
2323 latches the failing reasm number associated with
2324 the IPD_INT_SUM[14:12] bit set.
2325 Values 0-62 can be seen here, reasm-id 63 is not
2329 uint64_t reserved_6_63 : 58;
2332 struct cvmx_ipd_pkt_err_s cn68xx;
2333 struct cvmx_ipd_pkt_err_s cn68xxp1;
2335 typedef union cvmx_ipd_pkt_err cvmx_ipd_pkt_err_t;
2338 * cvmx_ipd_pkt_ptr_valid
2340 * IPD_PKT_PTR_VALID = IPD's Packet Pointer Valid
2342 * The value of the packet-pointer fetched and in the valid register.
2344 union cvmx_ipd_pkt_ptr_valid {
2346 struct cvmx_ipd_pkt_ptr_valid_s {
2347 #ifdef __BIG_ENDIAN_BITFIELD
2348 uint64_t reserved_29_63 : 35;
2349 uint64_t ptr : 29; /**< Pointer value. */
2352 uint64_t reserved_29_63 : 35;
2355 struct cvmx_ipd_pkt_ptr_valid_s cn30xx;
2356 struct cvmx_ipd_pkt_ptr_valid_s cn31xx;
2357 struct cvmx_ipd_pkt_ptr_valid_s cn38xx;
2358 struct cvmx_ipd_pkt_ptr_valid_s cn50xx;
2359 struct cvmx_ipd_pkt_ptr_valid_s cn52xx;
2360 struct cvmx_ipd_pkt_ptr_valid_s cn52xxp1;
2361 struct cvmx_ipd_pkt_ptr_valid_s cn56xx;
2362 struct cvmx_ipd_pkt_ptr_valid_s cn56xxp1;
2363 struct cvmx_ipd_pkt_ptr_valid_s cn58xx;
2364 struct cvmx_ipd_pkt_ptr_valid_s cn58xxp1;
2365 struct cvmx_ipd_pkt_ptr_valid_s cn61xx;
2366 struct cvmx_ipd_pkt_ptr_valid_s cn63xx;
2367 struct cvmx_ipd_pkt_ptr_valid_s cn63xxp1;
2368 struct cvmx_ipd_pkt_ptr_valid_s cn66xx;
2369 struct cvmx_ipd_pkt_ptr_valid_s cnf71xx;
2371 typedef union cvmx_ipd_pkt_ptr_valid cvmx_ipd_pkt_ptr_valid_t;
2374 * cvmx_ipd_port#_bp_page_cnt
2376 * IPD_PORTX_BP_PAGE_CNT = IPD Port Backpressure Page Count
2378 * The number of pages in use by the port that when exceeded, backpressure will be applied to the port.
2379 * See also IPD_PORTX_BP_PAGE_CNT2
2380 * See also IPD_PORTX_BP_PAGE_CNT3
2382 union cvmx_ipd_portx_bp_page_cnt {
2384 struct cvmx_ipd_portx_bp_page_cnt_s {
2385 #ifdef __BIG_ENDIAN_BITFIELD
2386 uint64_t reserved_18_63 : 46;
2387 uint64_t bp_enb : 1; /**< When set '1' BP will be applied, if '0' BP will
2388 not be applied to port. */
2389 uint64_t page_cnt : 17; /**< The number of page pointers assigned to
2390 the port, that when exceeded will cause
2391 back-pressure to be applied to the port.
2392 This value is in 256 page-pointer increments,
2393 (i.e. 0 = 0-page-ptrs, 1 = 256-page-ptrs,..) */
2395 uint64_t page_cnt : 17;
2396 uint64_t bp_enb : 1;
2397 uint64_t reserved_18_63 : 46;
2400 struct cvmx_ipd_portx_bp_page_cnt_s cn30xx;
2401 struct cvmx_ipd_portx_bp_page_cnt_s cn31xx;
2402 struct cvmx_ipd_portx_bp_page_cnt_s cn38xx;
2403 struct cvmx_ipd_portx_bp_page_cnt_s cn38xxp2;
2404 struct cvmx_ipd_portx_bp_page_cnt_s cn50xx;
2405 struct cvmx_ipd_portx_bp_page_cnt_s cn52xx;
2406 struct cvmx_ipd_portx_bp_page_cnt_s cn52xxp1;
2407 struct cvmx_ipd_portx_bp_page_cnt_s cn56xx;
2408 struct cvmx_ipd_portx_bp_page_cnt_s cn56xxp1;
2409 struct cvmx_ipd_portx_bp_page_cnt_s cn58xx;
2410 struct cvmx_ipd_portx_bp_page_cnt_s cn58xxp1;
2411 struct cvmx_ipd_portx_bp_page_cnt_s cn61xx;
2412 struct cvmx_ipd_portx_bp_page_cnt_s cn63xx;
2413 struct cvmx_ipd_portx_bp_page_cnt_s cn63xxp1;
2414 struct cvmx_ipd_portx_bp_page_cnt_s cn66xx;
2415 struct cvmx_ipd_portx_bp_page_cnt_s cnf71xx;
2417 typedef union cvmx_ipd_portx_bp_page_cnt cvmx_ipd_portx_bp_page_cnt_t;
2420 * cvmx_ipd_port#_bp_page_cnt2
2422 * IPD_PORTX_BP_PAGE_CNT2 = IPD Port Backpressure Page Count
2424 * The number of pages in use by the port that when exceeded, backpressure will be applied to the port.
2425 * See also IPD_PORTX_BP_PAGE_CNT
2426 * See also IPD_PORTX_BP_PAGE_CNT3
2429 union cvmx_ipd_portx_bp_page_cnt2 {
2431 struct cvmx_ipd_portx_bp_page_cnt2_s {
2432 #ifdef __BIG_ENDIAN_BITFIELD
2433 uint64_t reserved_18_63 : 46;
2434 uint64_t bp_enb : 1; /**< When set '1' BP will be applied, if '0' BP will
2435 not be applied to port. */
2436 uint64_t page_cnt : 17; /**< The number of page pointers assigned to
2437 the port, that when exceeded will cause
2438 back-pressure to be applied to the port.
2439 This value is in 256 page-pointer increments,
2440 (i.e. 0 = 0-page-ptrs, 1 = 256-page-ptrs,..) */
2442 uint64_t page_cnt : 17;
2443 uint64_t bp_enb : 1;
2444 uint64_t reserved_18_63 : 46;
2447 struct cvmx_ipd_portx_bp_page_cnt2_s cn52xx;
2448 struct cvmx_ipd_portx_bp_page_cnt2_s cn52xxp1;
2449 struct cvmx_ipd_portx_bp_page_cnt2_s cn56xx;
2450 struct cvmx_ipd_portx_bp_page_cnt2_s cn56xxp1;
2451 struct cvmx_ipd_portx_bp_page_cnt2_s cn61xx;
2452 struct cvmx_ipd_portx_bp_page_cnt2_s cn63xx;
2453 struct cvmx_ipd_portx_bp_page_cnt2_s cn63xxp1;
2454 struct cvmx_ipd_portx_bp_page_cnt2_s cn66xx;
2455 struct cvmx_ipd_portx_bp_page_cnt2_s cnf71xx;
2457 typedef union cvmx_ipd_portx_bp_page_cnt2 cvmx_ipd_portx_bp_page_cnt2_t;
2460 * cvmx_ipd_port#_bp_page_cnt3
2462 * IPD_PORTX_BP_PAGE_CNT3 = IPD Port Backpressure Page Count
2464 * The number of pages in use by the port that when exceeded, backpressure will be applied to the port.
2465 * See also IPD_PORTX_BP_PAGE_CNT
2466 * See also IPD_PORTX_BP_PAGE_CNT2
2469 union cvmx_ipd_portx_bp_page_cnt3 {
2471 struct cvmx_ipd_portx_bp_page_cnt3_s {
2472 #ifdef __BIG_ENDIAN_BITFIELD
2473 uint64_t reserved_18_63 : 46;
2474 uint64_t bp_enb : 1; /**< When set '1' BP will be applied, if '0' BP will
2475 not be applied to port. */
2476 uint64_t page_cnt : 17; /**< The number of page pointers assigned to
2477 the port, that when exceeded will cause
2478 back-pressure to be applied to the port.
2479 This value is in 256 page-pointer increments,
2480 (i.e. 0 = 0-page-ptrs, 1 = 256-page-ptrs,..) */
2482 uint64_t page_cnt : 17;
2483 uint64_t bp_enb : 1;
2484 uint64_t reserved_18_63 : 46;
2487 struct cvmx_ipd_portx_bp_page_cnt3_s cn61xx;
2488 struct cvmx_ipd_portx_bp_page_cnt3_s cn63xx;
2489 struct cvmx_ipd_portx_bp_page_cnt3_s cn63xxp1;
2490 struct cvmx_ipd_portx_bp_page_cnt3_s cn66xx;
2491 struct cvmx_ipd_portx_bp_page_cnt3_s cnf71xx;
2493 typedef union cvmx_ipd_portx_bp_page_cnt3 cvmx_ipd_portx_bp_page_cnt3_t;
2496 * cvmx_ipd_port_bp_counters2_pair#
2498 * IPD_PORT_BP_COUNTERS2_PAIRX = MBUF Counters port Ports used to generate Back Pressure Per Port.
2499 * See also IPD_PORT_BP_COUNTERS_PAIRX
2500 * See also IPD_PORT_BP_COUNTERS3_PAIRX
2503 union cvmx_ipd_port_bp_counters2_pairx {
2505 struct cvmx_ipd_port_bp_counters2_pairx_s {
2506 #ifdef __BIG_ENDIAN_BITFIELD
2507 uint64_t reserved_25_63 : 39;
2508 uint64_t cnt_val : 25; /**< Number of MBUFs being used by data on this port. */
2510 uint64_t cnt_val : 25;
2511 uint64_t reserved_25_63 : 39;
2514 struct cvmx_ipd_port_bp_counters2_pairx_s cn52xx;
2515 struct cvmx_ipd_port_bp_counters2_pairx_s cn52xxp1;
2516 struct cvmx_ipd_port_bp_counters2_pairx_s cn56xx;
2517 struct cvmx_ipd_port_bp_counters2_pairx_s cn56xxp1;
2518 struct cvmx_ipd_port_bp_counters2_pairx_s cn61xx;
2519 struct cvmx_ipd_port_bp_counters2_pairx_s cn63xx;
2520 struct cvmx_ipd_port_bp_counters2_pairx_s cn63xxp1;
2521 struct cvmx_ipd_port_bp_counters2_pairx_s cn66xx;
2522 struct cvmx_ipd_port_bp_counters2_pairx_s cnf71xx;
2524 typedef union cvmx_ipd_port_bp_counters2_pairx cvmx_ipd_port_bp_counters2_pairx_t;
2527 * cvmx_ipd_port_bp_counters3_pair#
2529 * IPD_PORT_BP_COUNTERS3_PAIRX = MBUF Counters port Ports used to generate Back Pressure Per Port.
2530 * See also IPD_PORT_BP_COUNTERS_PAIRX
2531 * See also IPD_PORT_BP_COUNTERS2_PAIRX
2534 union cvmx_ipd_port_bp_counters3_pairx {
2536 struct cvmx_ipd_port_bp_counters3_pairx_s {
2537 #ifdef __BIG_ENDIAN_BITFIELD
2538 uint64_t reserved_25_63 : 39;
2539 uint64_t cnt_val : 25; /**< Number of MBUFs being used by data on this port. */
2541 uint64_t cnt_val : 25;
2542 uint64_t reserved_25_63 : 39;
2545 struct cvmx_ipd_port_bp_counters3_pairx_s cn61xx;
2546 struct cvmx_ipd_port_bp_counters3_pairx_s cn63xx;
2547 struct cvmx_ipd_port_bp_counters3_pairx_s cn63xxp1;
2548 struct cvmx_ipd_port_bp_counters3_pairx_s cn66xx;
2549 struct cvmx_ipd_port_bp_counters3_pairx_s cnf71xx;
2551 typedef union cvmx_ipd_port_bp_counters3_pairx cvmx_ipd_port_bp_counters3_pairx_t;
2554 * cvmx_ipd_port_bp_counters4_pair#
2556 * IPD_PORT_BP_COUNTERS4_PAIRX = MBUF Counters port Ports used to generate Back Pressure Per Port.
2557 * See also IPD_PORT_BP_COUNTERS_PAIRX
2558 * See also IPD_PORT_BP_COUNTERS2_PAIRX
2561 union cvmx_ipd_port_bp_counters4_pairx {
2563 struct cvmx_ipd_port_bp_counters4_pairx_s {
2564 #ifdef __BIG_ENDIAN_BITFIELD
2565 uint64_t reserved_25_63 : 39;
2566 uint64_t cnt_val : 25; /**< Number of MBUFs being used by data on this port. */
2568 uint64_t cnt_val : 25;
2569 uint64_t reserved_25_63 : 39;
2572 struct cvmx_ipd_port_bp_counters4_pairx_s cn61xx;
2573 struct cvmx_ipd_port_bp_counters4_pairx_s cn66xx;
2574 struct cvmx_ipd_port_bp_counters4_pairx_s cnf71xx;
2576 typedef union cvmx_ipd_port_bp_counters4_pairx cvmx_ipd_port_bp_counters4_pairx_t;
2579 * cvmx_ipd_port_bp_counters_pair#
2581 * IPD_PORT_BP_COUNTERS_PAIRX = MBUF Counters port Ports used to generate Back Pressure Per Port.
2582 * See also IPD_PORT_BP_COUNTERS2_PAIRX
2583 * See also IPD_PORT_BP_COUNTERS3_PAIRX
2586 union cvmx_ipd_port_bp_counters_pairx {
2588 struct cvmx_ipd_port_bp_counters_pairx_s {
2589 #ifdef __BIG_ENDIAN_BITFIELD
2590 uint64_t reserved_25_63 : 39;
2591 uint64_t cnt_val : 25; /**< Number of MBUFs being used by data on this port. */
2593 uint64_t cnt_val : 25;
2594 uint64_t reserved_25_63 : 39;
2597 struct cvmx_ipd_port_bp_counters_pairx_s cn30xx;
2598 struct cvmx_ipd_port_bp_counters_pairx_s cn31xx;
2599 struct cvmx_ipd_port_bp_counters_pairx_s cn38xx;
2600 struct cvmx_ipd_port_bp_counters_pairx_s cn38xxp2;
2601 struct cvmx_ipd_port_bp_counters_pairx_s cn50xx;
2602 struct cvmx_ipd_port_bp_counters_pairx_s cn52xx;
2603 struct cvmx_ipd_port_bp_counters_pairx_s cn52xxp1;
2604 struct cvmx_ipd_port_bp_counters_pairx_s cn56xx;
2605 struct cvmx_ipd_port_bp_counters_pairx_s cn56xxp1;
2606 struct cvmx_ipd_port_bp_counters_pairx_s cn58xx;
2607 struct cvmx_ipd_port_bp_counters_pairx_s cn58xxp1;
2608 struct cvmx_ipd_port_bp_counters_pairx_s cn61xx;
2609 struct cvmx_ipd_port_bp_counters_pairx_s cn63xx;
2610 struct cvmx_ipd_port_bp_counters_pairx_s cn63xxp1;
2611 struct cvmx_ipd_port_bp_counters_pairx_s cn66xx;
2612 struct cvmx_ipd_port_bp_counters_pairx_s cnf71xx;
2614 typedef union cvmx_ipd_port_bp_counters_pairx cvmx_ipd_port_bp_counters_pairx_t;
2617 * cvmx_ipd_port_ptr_fifo_ctl
2619 * IPD_PORT_PTR_FIFO_CTL = IPD's Reasm-Id Pointer FIFO Control
2621 * Allows reading of the Page-Pointers stored in the IPD's Reasm-Id Fifo.
2623 union cvmx_ipd_port_ptr_fifo_ctl {
2625 struct cvmx_ipd_port_ptr_fifo_ctl_s {
2626 #ifdef __BIG_ENDIAN_BITFIELD
2627 uint64_t reserved_48_63 : 16;
2628 uint64_t ptr : 33; /**< The output of the reasm-id-ptr-fifo. */
2629 uint64_t max_pkt : 7; /**< Maximum number of Packet-Pointers that are in
2631 uint64_t cena : 1; /**< Active low Chip Enable to the read the
2632 pwp_fifo. This bit also controls the MUX-select
2633 that steers [RADDR] to the pwp_fifo.
2634 *WARNING - Setting this field to '0' will allow
2635 reading of the memories thorugh the PTR field,
2636 but will cause unpredictable operation of the IPD
2637 under normal operation. */
2638 uint64_t raddr : 7; /**< Sets the address to read from in the reasm-id
2639 fifo in the IPD. This FIFO holds Packet-Pointers
2640 to be used for packet data storage. */
2644 uint64_t max_pkt : 7;
2646 uint64_t reserved_48_63 : 16;
2649 struct cvmx_ipd_port_ptr_fifo_ctl_s cn68xx;
2650 struct cvmx_ipd_port_ptr_fifo_ctl_s cn68xxp1;
2652 typedef union cvmx_ipd_port_ptr_fifo_ctl cvmx_ipd_port_ptr_fifo_ctl_t;
2655 * cvmx_ipd_port_qos_#_cnt
2657 * IPD_PORT_QOS_X_CNT = IPD PortX QOS-0 Count
2659 * A counter per port/qos. Counter are originzed in sequence where the first 8 counter (0-7) belong to Port-0
2660 * QOS 0-7 respectively followed by port 1 at (8-15), etc
2663 union cvmx_ipd_port_qos_x_cnt {
2665 struct cvmx_ipd_port_qos_x_cnt_s {
2666 #ifdef __BIG_ENDIAN_BITFIELD
2667 uint64_t wmark : 32; /**< When the field CNT after being modified is equal to
2668 or crosses this value (i.e. value was greater than
2669 then becomes less then, or value was less than and
2670 becomes greater than) the corresponding bit in
2671 IPD_PORT_QOS_INTX is set. */
2672 uint64_t cnt : 32; /**< The packet related count that is incremented as
2673 specified by IPD_SUB_PORT_QOS_CNT. */
2676 uint64_t wmark : 32;
2679 struct cvmx_ipd_port_qos_x_cnt_s cn52xx;
2680 struct cvmx_ipd_port_qos_x_cnt_s cn52xxp1;
2681 struct cvmx_ipd_port_qos_x_cnt_s cn56xx;
2682 struct cvmx_ipd_port_qos_x_cnt_s cn56xxp1;
2683 struct cvmx_ipd_port_qos_x_cnt_s cn61xx;
2684 struct cvmx_ipd_port_qos_x_cnt_s cn63xx;
2685 struct cvmx_ipd_port_qos_x_cnt_s cn63xxp1;
2686 struct cvmx_ipd_port_qos_x_cnt_s cn66xx;
2687 struct cvmx_ipd_port_qos_x_cnt_s cn68xx;
2688 struct cvmx_ipd_port_qos_x_cnt_s cn68xxp1;
2689 struct cvmx_ipd_port_qos_x_cnt_s cnf71xx;
2691 typedef union cvmx_ipd_port_qos_x_cnt cvmx_ipd_port_qos_x_cnt_t;
2694 * cvmx_ipd_port_qos_int#
2696 * IPD_PORT_QOS_INTX = IPD PORT-QOS Interrupt
2698 * See the description for IPD_PORT_QOS_X_CNT
2700 * 0=P0-7; 1=P8-15; 2=P16-23; 3=P24-31; 4=P32-39; 5=P40-47; 6=P48-55; 7=P56-63
2702 * Only ports used are: P0-3, P32-39, and P40-47. Therefore only IPD_PORT_QOS_INT0, IPD_PORT_QOS_INT4,
2703 * and IPD_PORT_QOS_INT5 exist and, furthermore: <63:32> of IPD_PORT_QOS_INT0,
2706 union cvmx_ipd_port_qos_intx {
2708 struct cvmx_ipd_port_qos_intx_s {
2709 #ifdef __BIG_ENDIAN_BITFIELD
2710 uint64_t intr : 64; /**< Interrupt bits. */
2715 struct cvmx_ipd_port_qos_intx_s cn52xx;
2716 struct cvmx_ipd_port_qos_intx_s cn52xxp1;
2717 struct cvmx_ipd_port_qos_intx_s cn56xx;
2718 struct cvmx_ipd_port_qos_intx_s cn56xxp1;
2719 struct cvmx_ipd_port_qos_intx_s cn61xx;
2720 struct cvmx_ipd_port_qos_intx_s cn63xx;
2721 struct cvmx_ipd_port_qos_intx_s cn63xxp1;
2722 struct cvmx_ipd_port_qos_intx_s cn66xx;
2723 struct cvmx_ipd_port_qos_intx_s cn68xx;
2724 struct cvmx_ipd_port_qos_intx_s cn68xxp1;
2725 struct cvmx_ipd_port_qos_intx_s cnf71xx;
2727 typedef union cvmx_ipd_port_qos_intx cvmx_ipd_port_qos_intx_t;
2730 * cvmx_ipd_port_qos_int_enb#
2732 * IPD_PORT_QOS_INT_ENBX = IPD PORT-QOS Interrupt Enable
2734 * When the IPD_PORT_QOS_INTX[\#] is '1' and IPD_PORT_QOS_INT_ENBX[\#] is '1' a interrupt will be generated.
2736 union cvmx_ipd_port_qos_int_enbx {
2738 struct cvmx_ipd_port_qos_int_enbx_s {
2739 #ifdef __BIG_ENDIAN_BITFIELD
2740 uint64_t enb : 64; /**< Enable bits. */
2745 struct cvmx_ipd_port_qos_int_enbx_s cn52xx;
2746 struct cvmx_ipd_port_qos_int_enbx_s cn52xxp1;
2747 struct cvmx_ipd_port_qos_int_enbx_s cn56xx;
2748 struct cvmx_ipd_port_qos_int_enbx_s cn56xxp1;
2749 struct cvmx_ipd_port_qos_int_enbx_s cn61xx;
2750 struct cvmx_ipd_port_qos_int_enbx_s cn63xx;
2751 struct cvmx_ipd_port_qos_int_enbx_s cn63xxp1;
2752 struct cvmx_ipd_port_qos_int_enbx_s cn66xx;
2753 struct cvmx_ipd_port_qos_int_enbx_s cn68xx;
2754 struct cvmx_ipd_port_qos_int_enbx_s cn68xxp1;
2755 struct cvmx_ipd_port_qos_int_enbx_s cnf71xx;
2757 typedef union cvmx_ipd_port_qos_int_enbx cvmx_ipd_port_qos_int_enbx_t;
2760 * cvmx_ipd_port_sop#
2762 * IPD_PORT_SOP = IPD Reasm-Id SOP
2764 * Set when a SOP is detected on a reasm-num. Where the reasm-num value set the bit vector of this register.
2766 union cvmx_ipd_port_sopx {
2768 struct cvmx_ipd_port_sopx_s {
2769 #ifdef __BIG_ENDIAN_BITFIELD
2770 uint64_t sop : 64; /**< When set '1' a SOP was detected on a reasm-num,
2771 When clear '0' no SOP was yet received or an EOP
2772 was received on the reasm-num.
2773 IPD only supports 63 reasm-nums, so bit [63]
2774 should never be set. */
2779 struct cvmx_ipd_port_sopx_s cn68xx;
2780 struct cvmx_ipd_port_sopx_s cn68xxp1;
2782 typedef union cvmx_ipd_port_sopx cvmx_ipd_port_sopx_t;
2785 * cvmx_ipd_prc_hold_ptr_fifo_ctl
2787 * IPD_PRC_HOLD_PTR_FIFO_CTL = IPD's PRC Holding Pointer FIFO Control
2789 * Allows reading of the Page-Pointers stored in the IPD's PRC Holding Fifo.
2791 union cvmx_ipd_prc_hold_ptr_fifo_ctl {
2793 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s {
2794 #ifdef __BIG_ENDIAN_BITFIELD
2795 uint64_t reserved_39_63 : 25;
2796 uint64_t max_pkt : 3; /**< Maximum number of Packet-Pointers that COULD be
2798 uint64_t praddr : 3; /**< Present Packet-Pointer read address. */
2799 uint64_t ptr : 29; /**< The output of the prc-holding-fifo. */
2800 uint64_t cena : 1; /**< Active low Chip Enable that controls the
2801 MUX-select that steers [RADDR] to the fifo.
2802 *WARNING - Setting this field to '0' will allow
2803 reading of the memories thorugh the PTR field,
2804 but will cause unpredictable operation of the IPD
2805 under normal operation. */
2806 uint64_t raddr : 3; /**< Sets the address to read from in the holding.
2807 fifo in the PRC. This FIFO holds Packet-Pointers
2808 to be used for packet data storage. */
2813 uint64_t praddr : 3;
2814 uint64_t max_pkt : 3;
2815 uint64_t reserved_39_63 : 25;
2818 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn30xx;
2819 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn31xx;
2820 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn38xx;
2821 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn50xx;
2822 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xx;
2823 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn52xxp1;
2824 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xx;
2825 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn56xxp1;
2826 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xx;
2827 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn58xxp1;
2828 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn61xx;
2829 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn63xx;
2830 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn63xxp1;
2831 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cn66xx;
2832 struct cvmx_ipd_prc_hold_ptr_fifo_ctl_s cnf71xx;
2834 typedef union cvmx_ipd_prc_hold_ptr_fifo_ctl cvmx_ipd_prc_hold_ptr_fifo_ctl_t;
2837 * cvmx_ipd_prc_port_ptr_fifo_ctl
2839 * IPD_PRC_PORT_PTR_FIFO_CTL = IPD's PRC PORT Pointer FIFO Control
2841 * Allows reading of the Page-Pointers stored in the IPD's PRC PORT Fifo.
2843 union cvmx_ipd_prc_port_ptr_fifo_ctl {
2845 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s {
2846 #ifdef __BIG_ENDIAN_BITFIELD
2847 uint64_t reserved_44_63 : 20;
2848 uint64_t max_pkt : 7; /**< Maximum number of Packet-Pointers that are in
2850 uint64_t ptr : 29; /**< The output of the prc-port-ptr-fifo. */
2851 uint64_t cena : 1; /**< Active low Chip Enable to the read port of the
2852 pwp_fifo. This bit also controls the MUX-select
2853 that steers [RADDR] to the pwp_fifo.
2854 *WARNING - Setting this field to '0' will allow
2855 reading of the memories thorugh the PTR field,
2856 but will cause unpredictable operation of the IPD
2857 under normal operation. */
2858 uint64_t raddr : 7; /**< Sets the address to read from in the port
2859 fifo in the PRC. This FIFO holds Packet-Pointers
2860 to be used for packet data storage. */
2865 uint64_t max_pkt : 7;
2866 uint64_t reserved_44_63 : 20;
2869 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn30xx;
2870 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn31xx;
2871 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn38xx;
2872 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn50xx;
2873 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xx;
2874 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn52xxp1;
2875 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xx;
2876 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn56xxp1;
2877 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xx;
2878 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn58xxp1;
2879 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn61xx;
2880 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn63xx;
2881 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn63xxp1;
2882 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cn66xx;
2883 struct cvmx_ipd_prc_port_ptr_fifo_ctl_s cnf71xx;
2885 typedef union cvmx_ipd_prc_port_ptr_fifo_ctl cvmx_ipd_prc_port_ptr_fifo_ctl_t;
2888 * cvmx_ipd_ptr_count
2890 * IPD_PTR_COUNT = IPD Page Pointer Count
2892 * Shows the number of WQE and Packet Page Pointers stored in the IPD.
2894 union cvmx_ipd_ptr_count {
2896 struct cvmx_ipd_ptr_count_s {
2897 #ifdef __BIG_ENDIAN_BITFIELD
2898 uint64_t reserved_19_63 : 45;
2899 uint64_t pktv_cnt : 1; /**< PKT Ptr Valid. */
2900 uint64_t wqev_cnt : 1; /**< WQE Ptr Valid. This value is '1' when a WQE
2901 is being for use by the IPD. The value of this
2902 field should be added to tha value of the
2903 WQE_PCNT field, of this register, for a total
2904 count of the WQE Page Pointers being held by IPD.
2905 When IPD_CTL_STATUS[NO_WPTR] is set '1' this field
2906 represents a Packet-Pointer NOT a WQE pointer. */
2907 uint64_t pfif_cnt : 3; /**< See PKT_PCNT. */
2908 uint64_t pkt_pcnt : 7; /**< This value plus PFIF_CNT plus
2909 IPD_PRC_PORT_PTR_FIFO_CTL[MAX_PKT] is the number
2910 of PKT Page Pointers in IPD. */
2911 uint64_t wqe_pcnt : 7; /**< Number of page pointers for WQE storage that are
2912 buffered in the IPD. The total count is the value
2913 of this buffer plus the field [WQEV_CNT]. For
2914 PASS-1 (which does not have the WQEV_CNT field)
2915 when the value of this register is '0' there still
2916 may be 1 pointer being held by IPD. */
2918 uint64_t wqe_pcnt : 7;
2919 uint64_t pkt_pcnt : 7;
2920 uint64_t pfif_cnt : 3;
2921 uint64_t wqev_cnt : 1;
2922 uint64_t pktv_cnt : 1;
2923 uint64_t reserved_19_63 : 45;
2926 struct cvmx_ipd_ptr_count_s cn30xx;
2927 struct cvmx_ipd_ptr_count_s cn31xx;
2928 struct cvmx_ipd_ptr_count_s cn38xx;
2929 struct cvmx_ipd_ptr_count_s cn38xxp2;
2930 struct cvmx_ipd_ptr_count_s cn50xx;
2931 struct cvmx_ipd_ptr_count_s cn52xx;
2932 struct cvmx_ipd_ptr_count_s cn52xxp1;
2933 struct cvmx_ipd_ptr_count_s cn56xx;
2934 struct cvmx_ipd_ptr_count_s cn56xxp1;
2935 struct cvmx_ipd_ptr_count_s cn58xx;
2936 struct cvmx_ipd_ptr_count_s cn58xxp1;
2937 struct cvmx_ipd_ptr_count_s cn61xx;
2938 struct cvmx_ipd_ptr_count_s cn63xx;
2939 struct cvmx_ipd_ptr_count_s cn63xxp1;
2940 struct cvmx_ipd_ptr_count_s cn66xx;
2941 struct cvmx_ipd_ptr_count_s cn68xx;
2942 struct cvmx_ipd_ptr_count_s cn68xxp1;
2943 struct cvmx_ipd_ptr_count_s cnf71xx;
2945 typedef union cvmx_ipd_ptr_count cvmx_ipd_ptr_count_t;
2948 * cvmx_ipd_pwp_ptr_fifo_ctl
2950 * IPD_PWP_PTR_FIFO_CTL = IPD's PWP Pointer FIFO Control
2952 * Allows reading of the Page-Pointers stored in the IPD's PWP Fifo.
2954 union cvmx_ipd_pwp_ptr_fifo_ctl {
2956 struct cvmx_ipd_pwp_ptr_fifo_ctl_s {
2957 #ifdef __BIG_ENDIAN_BITFIELD
2958 uint64_t reserved_61_63 : 3;
2959 uint64_t max_cnts : 7; /**< Maximum number of Packet-Pointers or WQE-Pointers
2960 that COULD be in the FIFO.
2961 When IPD_CTL_STATUS[NO_WPTR] is set '1' this field
2962 only represents the Max number of Packet-Pointers,
2963 WQE-Pointers are not used in this mode. */
2964 uint64_t wraddr : 8; /**< Present FIFO WQE Read address. */
2965 uint64_t praddr : 8; /**< Present FIFO Packet Read address. */
2966 uint64_t ptr : 29; /**< The output of the pwp_fifo. */
2967 uint64_t cena : 1; /**< Active low Chip Enable to the read port of the
2968 pwp_fifo. This bit also controls the MUX-select
2969 that steers [RADDR] to the pwp_fifo.
2970 *WARNING - Setting this field to '0' will allow
2971 reading of the memories thorugh the PTR field,
2972 but will cause unpredictable operation of the IPD
2973 under normal operation. */
2974 uint64_t raddr : 8; /**< Sets the address to read from in the pwp_fifo.
2975 Addresses 0 through 63 contain Packet-Pointers and
2976 addresses 64 through 127 contain WQE-Pointers.
2977 When IPD_CTL_STATUS[NO_WPTR] is set '1' addresses
2978 64 through 127 are not valid. */
2983 uint64_t praddr : 8;
2984 uint64_t wraddr : 8;
2985 uint64_t max_cnts : 7;
2986 uint64_t reserved_61_63 : 3;
2989 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn30xx;
2990 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn31xx;
2991 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn38xx;
2992 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn50xx;
2993 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xx;
2994 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn52xxp1;
2995 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xx;
2996 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn56xxp1;
2997 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xx;
2998 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn58xxp1;
2999 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn61xx;
3000 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn63xx;
3001 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn63xxp1;
3002 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cn66xx;
3003 struct cvmx_ipd_pwp_ptr_fifo_ctl_s cnf71xx;
3005 typedef union cvmx_ipd_pwp_ptr_fifo_ctl cvmx_ipd_pwp_ptr_fifo_ctl_t;
3008 * cvmx_ipd_qos#_red_marks
3010 * IPD_QOS0_RED_MARKS = IPD QOS 0 Marks Red High Low
3012 * Set the pass-drop marks for qos level.
3014 union cvmx_ipd_qosx_red_marks {
3016 struct cvmx_ipd_qosx_red_marks_s {
3017 #ifdef __BIG_ENDIAN_BITFIELD
3018 uint64_t drop : 32; /**< Packets will be dropped when the average value of
3019 IPD_QUE0_FREE_PAGE_CNT is equal to or less than
3021 uint64_t pass : 32; /**< Packets will be passed when the average value of
3022 IPD_QUE0_FREE_PAGE_CNT is larger than this value. */
3028 struct cvmx_ipd_qosx_red_marks_s cn30xx;
3029 struct cvmx_ipd_qosx_red_marks_s cn31xx;
3030 struct cvmx_ipd_qosx_red_marks_s cn38xx;
3031 struct cvmx_ipd_qosx_red_marks_s cn38xxp2;
3032 struct cvmx_ipd_qosx_red_marks_s cn50xx;
3033 struct cvmx_ipd_qosx_red_marks_s cn52xx;
3034 struct cvmx_ipd_qosx_red_marks_s cn52xxp1;
3035 struct cvmx_ipd_qosx_red_marks_s cn56xx;
3036 struct cvmx_ipd_qosx_red_marks_s cn56xxp1;
3037 struct cvmx_ipd_qosx_red_marks_s cn58xx;
3038 struct cvmx_ipd_qosx_red_marks_s cn58xxp1;
3039 struct cvmx_ipd_qosx_red_marks_s cn61xx;
3040 struct cvmx_ipd_qosx_red_marks_s cn63xx;
3041 struct cvmx_ipd_qosx_red_marks_s cn63xxp1;
3042 struct cvmx_ipd_qosx_red_marks_s cn66xx;
3043 struct cvmx_ipd_qosx_red_marks_s cn68xx;
3044 struct cvmx_ipd_qosx_red_marks_s cn68xxp1;
3045 struct cvmx_ipd_qosx_red_marks_s cnf71xx;
3047 typedef union cvmx_ipd_qosx_red_marks cvmx_ipd_qosx_red_marks_t;
3050 * cvmx_ipd_que0_free_page_cnt
3052 * IPD_QUE0_FREE_PAGE_CNT = IPD Queue0 Free Page Count
3054 * Number of Free-Page Pointer that are available for use in the FPA for Queue-0.
3056 union cvmx_ipd_que0_free_page_cnt {
3058 struct cvmx_ipd_que0_free_page_cnt_s {
3059 #ifdef __BIG_ENDIAN_BITFIELD
3060 uint64_t reserved_32_63 : 32;
3061 uint64_t q0_pcnt : 32; /**< Number of Queue-0 Page Pointers Available. */
3063 uint64_t q0_pcnt : 32;
3064 uint64_t reserved_32_63 : 32;
3067 struct cvmx_ipd_que0_free_page_cnt_s cn30xx;
3068 struct cvmx_ipd_que0_free_page_cnt_s cn31xx;
3069 struct cvmx_ipd_que0_free_page_cnt_s cn38xx;
3070 struct cvmx_ipd_que0_free_page_cnt_s cn38xxp2;
3071 struct cvmx_ipd_que0_free_page_cnt_s cn50xx;
3072 struct cvmx_ipd_que0_free_page_cnt_s cn52xx;
3073 struct cvmx_ipd_que0_free_page_cnt_s cn52xxp1;
3074 struct cvmx_ipd_que0_free_page_cnt_s cn56xx;
3075 struct cvmx_ipd_que0_free_page_cnt_s cn56xxp1;
3076 struct cvmx_ipd_que0_free_page_cnt_s cn58xx;
3077 struct cvmx_ipd_que0_free_page_cnt_s cn58xxp1;
3078 struct cvmx_ipd_que0_free_page_cnt_s cn61xx;
3079 struct cvmx_ipd_que0_free_page_cnt_s cn63xx;
3080 struct cvmx_ipd_que0_free_page_cnt_s cn63xxp1;
3081 struct cvmx_ipd_que0_free_page_cnt_s cn66xx;
3082 struct cvmx_ipd_que0_free_page_cnt_s cn68xx;
3083 struct cvmx_ipd_que0_free_page_cnt_s cn68xxp1;
3084 struct cvmx_ipd_que0_free_page_cnt_s cnf71xx;
3086 typedef union cvmx_ipd_que0_free_page_cnt cvmx_ipd_que0_free_page_cnt_t;
3089 * cvmx_ipd_red_bpid_enable#
3091 * IPD_RED_BPID_ENABLE = IPD RED BPID Enable
3093 * Set the pass-drop marks for qos level.
3095 union cvmx_ipd_red_bpid_enablex {
3097 struct cvmx_ipd_red_bpid_enablex_s {
3098 #ifdef __BIG_ENDIAN_BITFIELD
3099 uint64_t prt_enb : 64; /**< The bit position will enable the corresponding
3100 BPIDs ability to have packets dropped by RED
3103 uint64_t prt_enb : 64;
3106 struct cvmx_ipd_red_bpid_enablex_s cn68xx;
3107 struct cvmx_ipd_red_bpid_enablex_s cn68xxp1;
3109 typedef union cvmx_ipd_red_bpid_enablex cvmx_ipd_red_bpid_enablex_t;
3112 * cvmx_ipd_red_delay
3114 * IPD_RED_DELAY = IPD RED BPID Enable
3116 * Set the pass-drop marks for qos level.
3118 union cvmx_ipd_red_delay {
3120 struct cvmx_ipd_red_delay_s {
3121 #ifdef __BIG_ENDIAN_BITFIELD
3122 uint64_t reserved_28_63 : 36;
3123 uint64_t prb_dly : 14; /**< Number (core clocks periods + 68) * 8 to wait
3124 before calculating the new packet drop
3125 probability for each QOS level. */
3126 uint64_t avg_dly : 14; /**< Number (core clocks periods + 10) * 8 to wait
3127 before calculating the moving average for each
3129 Larger AVG_DLY values cause the moving averages
3130 of ALL QOS levels to track changes in the actual
3131 free space more slowly. Smaller NEW_CON (and
3132 larger AVG_CON) values can have a similar effect,
3133 but only affect an individual QOS level, rather
3136 uint64_t avg_dly : 14;
3137 uint64_t prb_dly : 14;
3138 uint64_t reserved_28_63 : 36;
3141 struct cvmx_ipd_red_delay_s cn68xx;
3142 struct cvmx_ipd_red_delay_s cn68xxp1;
3144 typedef union cvmx_ipd_red_delay cvmx_ipd_red_delay_t;
3147 * cvmx_ipd_red_port_enable
3149 * IPD_RED_PORT_ENABLE = IPD RED Port Enable
3151 * Set the pass-drop marks for qos level.
3153 union cvmx_ipd_red_port_enable {
3155 struct cvmx_ipd_red_port_enable_s {
3156 #ifdef __BIG_ENDIAN_BITFIELD
3157 uint64_t prb_dly : 14; /**< Number (core clocks periods + 68) * 8 to wait
3158 before calculating the new packet drop
3159 probability for each QOS level. */
3160 uint64_t avg_dly : 14; /**< Number (core clocks periods + 10) * 8 to wait
3161 before calculating the moving average for each
3163 Larger AVG_DLY values cause the moving averages
3164 of ALL QOS levels to track changes in the actual
3165 free space more slowly. Smaller NEW_CON (and
3166 larger AVG_CON) values can have a similar effect,
3167 but only affect an individual QOS level, rather
3169 uint64_t prt_enb : 36; /**< The bit position will enable the corresponding
3170 Ports ability to have packets dropped by RED
3173 uint64_t prt_enb : 36;
3174 uint64_t avg_dly : 14;
3175 uint64_t prb_dly : 14;
3178 struct cvmx_ipd_red_port_enable_s cn30xx;
3179 struct cvmx_ipd_red_port_enable_s cn31xx;
3180 struct cvmx_ipd_red_port_enable_s cn38xx;
3181 struct cvmx_ipd_red_port_enable_s cn38xxp2;
3182 struct cvmx_ipd_red_port_enable_s cn50xx;
3183 struct cvmx_ipd_red_port_enable_s cn52xx;
3184 struct cvmx_ipd_red_port_enable_s cn52xxp1;
3185 struct cvmx_ipd_red_port_enable_s cn56xx;
3186 struct cvmx_ipd_red_port_enable_s cn56xxp1;
3187 struct cvmx_ipd_red_port_enable_s cn58xx;
3188 struct cvmx_ipd_red_port_enable_s cn58xxp1;
3189 struct cvmx_ipd_red_port_enable_s cn61xx;
3190 struct cvmx_ipd_red_port_enable_s cn63xx;
3191 struct cvmx_ipd_red_port_enable_s cn63xxp1;
3192 struct cvmx_ipd_red_port_enable_s cn66xx;
3193 struct cvmx_ipd_red_port_enable_s cnf71xx;
3195 typedef union cvmx_ipd_red_port_enable cvmx_ipd_red_port_enable_t;
3198 * cvmx_ipd_red_port_enable2
3200 * IPD_RED_PORT_ENABLE2 = IPD RED Port Enable2
3202 * Set the pass-drop marks for qos level.
3204 union cvmx_ipd_red_port_enable2 {
3206 struct cvmx_ipd_red_port_enable2_s {
3207 #ifdef __BIG_ENDIAN_BITFIELD
3208 uint64_t reserved_12_63 : 52;
3209 uint64_t prt_enb : 12; /**< Bits 11-0 corresponds to ports 47-36. These bits
3210 have the same meaning as the PRT_ENB field of
3211 IPD_RED_PORT_ENABLE. */
3213 uint64_t prt_enb : 12;
3214 uint64_t reserved_12_63 : 52;
3217 struct cvmx_ipd_red_port_enable2_cn52xx {
3218 #ifdef __BIG_ENDIAN_BITFIELD
3219 uint64_t reserved_4_63 : 60;
3220 uint64_t prt_enb : 4; /**< Bits 3-0 cooresponds to ports 39-36. These bits
3221 have the same meaning as the PRT_ENB field of
3222 IPD_RED_PORT_ENABLE. */
3224 uint64_t prt_enb : 4;
3225 uint64_t reserved_4_63 : 60;
3228 struct cvmx_ipd_red_port_enable2_cn52xx cn52xxp1;
3229 struct cvmx_ipd_red_port_enable2_cn52xx cn56xx;
3230 struct cvmx_ipd_red_port_enable2_cn52xx cn56xxp1;
3231 struct cvmx_ipd_red_port_enable2_s cn61xx;
3232 struct cvmx_ipd_red_port_enable2_cn63xx {
3233 #ifdef __BIG_ENDIAN_BITFIELD
3234 uint64_t reserved_8_63 : 56;
3235 uint64_t prt_enb : 8; /**< Bits 7-0 corresponds to ports 43-36. These bits
3236 have the same meaning as the PRT_ENB field of
3237 IPD_RED_PORT_ENABLE. */
3239 uint64_t prt_enb : 8;
3240 uint64_t reserved_8_63 : 56;
3243 struct cvmx_ipd_red_port_enable2_cn63xx cn63xxp1;
3244 struct cvmx_ipd_red_port_enable2_s cn66xx;
3245 struct cvmx_ipd_red_port_enable2_s cnf71xx;
3247 typedef union cvmx_ipd_red_port_enable2 cvmx_ipd_red_port_enable2_t;
3250 * cvmx_ipd_red_que#_param
3252 * IPD_RED_QUE0_PARAM = IPD RED Queue-0 Parameters
3254 * Value control the Passing and Dropping of packets by the red engine for QOS Level-0.
3256 union cvmx_ipd_red_quex_param {
3258 struct cvmx_ipd_red_quex_param_s {
3259 #ifdef __BIG_ENDIAN_BITFIELD
3260 uint64_t reserved_49_63 : 15;
3261 uint64_t use_pcnt : 1; /**< When set '1' red will use the actual Packet-Page
3262 Count in place of the Average for RED calculations. */
3263 uint64_t new_con : 8; /**< This value is used control how much of the present
3264 Actual Queue Size is used to calculate the new
3265 Average Queue Size. The value is a number from 0
3266 256, which represents NEW_CON/256 of the Actual
3267 Queue Size that will be used in the calculation.
3268 The number in this field plus the value of
3269 AVG_CON must be equal to 256.
3270 Larger AVG_DLY values cause the moving averages
3271 of ALL QOS levels to track changes in the actual
3272 free space more slowly. Smaller NEW_CON (and
3273 larger AVG_CON) values can have a similar effect,
3274 but only affect an individual QOS level, rather
3276 uint64_t avg_con : 8; /**< This value is used control how much of the present
3277 Average Queue Size is used to calculate the new
3278 Average Queue Size. The value is a number from 0
3279 256, which represents AVG_CON/256 of the Average
3280 Queue Size that will be used in the calculation.
3281 The number in this field plus the value of
3282 NEW_CON must be equal to 256.
3283 Larger AVG_DLY values cause the moving averages
3284 of ALL QOS levels to track changes in the actual
3285 free space more slowly. Smaller NEW_CON (and
3286 larger AVG_CON) values can have a similar effect,
3287 but only affect an individual QOS level, rather
3289 uint64_t prb_con : 32; /**< Used in computing the probability of a packet being
3290 passed or drop by the WRED engine. The field is
3291 calculated to be (255 * 2^24)/(PASS-DROP). Where
3292 PASS and DROP are the field from the
3293 IPD_QOS0_RED_MARKS CSR. */
3295 uint64_t prb_con : 32;
3296 uint64_t avg_con : 8;
3297 uint64_t new_con : 8;
3298 uint64_t use_pcnt : 1;
3299 uint64_t reserved_49_63 : 15;
3302 struct cvmx_ipd_red_quex_param_s cn30xx;
3303 struct cvmx_ipd_red_quex_param_s cn31xx;
3304 struct cvmx_ipd_red_quex_param_s cn38xx;
3305 struct cvmx_ipd_red_quex_param_s cn38xxp2;
3306 struct cvmx_ipd_red_quex_param_s cn50xx;
3307 struct cvmx_ipd_red_quex_param_s cn52xx;
3308 struct cvmx_ipd_red_quex_param_s cn52xxp1;
3309 struct cvmx_ipd_red_quex_param_s cn56xx;
3310 struct cvmx_ipd_red_quex_param_s cn56xxp1;
3311 struct cvmx_ipd_red_quex_param_s cn58xx;
3312 struct cvmx_ipd_red_quex_param_s cn58xxp1;
3313 struct cvmx_ipd_red_quex_param_s cn61xx;
3314 struct cvmx_ipd_red_quex_param_s cn63xx;
3315 struct cvmx_ipd_red_quex_param_s cn63xxp1;
3316 struct cvmx_ipd_red_quex_param_s cn66xx;
3317 struct cvmx_ipd_red_quex_param_s cn68xx;
3318 struct cvmx_ipd_red_quex_param_s cn68xxp1;
3319 struct cvmx_ipd_red_quex_param_s cnf71xx;
3321 typedef union cvmx_ipd_red_quex_param cvmx_ipd_red_quex_param_t;
3326 * IPD_REQ_WGT = IPD REQ weights
3328 * There are 8 devices that can request to send packet traffic to the IPD. These weights are used for the Weighted Round Robin
3329 * grant generated by the IPD to requestors.
3331 union cvmx_ipd_req_wgt {
3333 struct cvmx_ipd_req_wgt_s {
3334 #ifdef __BIG_ENDIAN_BITFIELD
3335 uint64_t wgt7 : 8; /**< Weight for ILK REQ */
3336 uint64_t wgt6 : 8; /**< Weight for PKO REQ */
3337 uint64_t wgt5 : 8; /**< Weight for DPI REQ */
3338 uint64_t wgt4 : 8; /**< Weight for AGX4 REQ */
3339 uint64_t wgt3 : 8; /**< Weight for AGX3 REQ */
3340 uint64_t wgt2 : 8; /**< Weight for AGX2 REQ */
3341 uint64_t wgt1 : 8; /**< Weight for AGX1 REQ */
3342 uint64_t wgt0 : 8; /**< Weight for AGX0 REQ */
3354 struct cvmx_ipd_req_wgt_s cn68xx;
3356 typedef union cvmx_ipd_req_wgt cvmx_ipd_req_wgt_t;
3359 * cvmx_ipd_sub_port_bp_page_cnt
3361 * IPD_SUB_PORT_BP_PAGE_CNT = IPD Subtract Port Backpressure Page Count
3363 * Will add the value to the indicated port count register, the number of pages supplied. The value added should
3364 * be the 2's complement of the value that needs to be subtracted. Users add 2's complement values to the
3365 * port-mbuf-count register to return (lower the count) mbufs to the counter in order to avoid port-level
3366 * backpressure being applied to the port. Backpressure is applied when the MBUF used count of a port exceeds the
3367 * value in the IPD_PORTX_BP_PAGE_CNT, IPD_PORTX_BP_PAGE_CNT2, and IPD_PORTX_BP_PAGE_CNT3.
3369 * This register can't be written from the PCI via a window write.
3371 union cvmx_ipd_sub_port_bp_page_cnt {
3373 struct cvmx_ipd_sub_port_bp_page_cnt_s {
3374 #ifdef __BIG_ENDIAN_BITFIELD
3375 uint64_t reserved_31_63 : 33;
3376 uint64_t port : 6; /**< The port to add the PAGE_CNT field to. */
3377 uint64_t page_cnt : 25; /**< The number of page pointers to add to
3378 the port counter pointed to by the
3381 uint64_t page_cnt : 25;
3383 uint64_t reserved_31_63 : 33;
3386 struct cvmx_ipd_sub_port_bp_page_cnt_s cn30xx;
3387 struct cvmx_ipd_sub_port_bp_page_cnt_s cn31xx;
3388 struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xx;
3389 struct cvmx_ipd_sub_port_bp_page_cnt_s cn38xxp2;
3390 struct cvmx_ipd_sub_port_bp_page_cnt_s cn50xx;
3391 struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xx;
3392 struct cvmx_ipd_sub_port_bp_page_cnt_s cn52xxp1;
3393 struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xx;
3394 struct cvmx_ipd_sub_port_bp_page_cnt_s cn56xxp1;
3395 struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xx;
3396 struct cvmx_ipd_sub_port_bp_page_cnt_s cn58xxp1;
3397 struct cvmx_ipd_sub_port_bp_page_cnt_s cn61xx;
3398 struct cvmx_ipd_sub_port_bp_page_cnt_s cn63xx;
3399 struct cvmx_ipd_sub_port_bp_page_cnt_s cn63xxp1;
3400 struct cvmx_ipd_sub_port_bp_page_cnt_s cn66xx;
3401 struct cvmx_ipd_sub_port_bp_page_cnt_s cn68xx;
3402 struct cvmx_ipd_sub_port_bp_page_cnt_s cn68xxp1;
3403 struct cvmx_ipd_sub_port_bp_page_cnt_s cnf71xx;
3405 typedef union cvmx_ipd_sub_port_bp_page_cnt cvmx_ipd_sub_port_bp_page_cnt_t;
3408 * cvmx_ipd_sub_port_fcs
3410 * IPD_SUB_PORT_FCS = IPD Subtract Ports FCS Register
3412 * When set '1' the port corresponding to the bit set will subtract 4 bytes from the end of
3415 union cvmx_ipd_sub_port_fcs {
3417 struct cvmx_ipd_sub_port_fcs_s {
3418 #ifdef __BIG_ENDIAN_BITFIELD
3419 uint64_t reserved_40_63 : 24;
3420 uint64_t port_bit2 : 4; /**< When set '1', the port corresponding to the bit
3421 position set, will subtract the FCS for packets
3423 uint64_t reserved_32_35 : 4;
3424 uint64_t port_bit : 32; /**< When set '1', the port corresponding to the bit
3425 position set, will subtract the FCS for packets
3428 uint64_t port_bit : 32;
3429 uint64_t reserved_32_35 : 4;
3430 uint64_t port_bit2 : 4;
3431 uint64_t reserved_40_63 : 24;
3434 struct cvmx_ipd_sub_port_fcs_cn30xx {
3435 #ifdef __BIG_ENDIAN_BITFIELD
3436 uint64_t reserved_3_63 : 61;
3437 uint64_t port_bit : 3; /**< When set '1', the port corresponding to the bit
3438 position set, will subtract the FCS for packets
3441 uint64_t port_bit : 3;
3442 uint64_t reserved_3_63 : 61;
3445 struct cvmx_ipd_sub_port_fcs_cn30xx cn31xx;
3446 struct cvmx_ipd_sub_port_fcs_cn38xx {
3447 #ifdef __BIG_ENDIAN_BITFIELD
3448 uint64_t reserved_32_63 : 32;
3449 uint64_t port_bit : 32; /**< When set '1', the port corresponding to the bit
3450 position set, will subtract the FCS for packets
3453 uint64_t port_bit : 32;
3454 uint64_t reserved_32_63 : 32;
3457 struct cvmx_ipd_sub_port_fcs_cn38xx cn38xxp2;
3458 struct cvmx_ipd_sub_port_fcs_cn30xx cn50xx;
3459 struct cvmx_ipd_sub_port_fcs_s cn52xx;
3460 struct cvmx_ipd_sub_port_fcs_s cn52xxp1;
3461 struct cvmx_ipd_sub_port_fcs_s cn56xx;
3462 struct cvmx_ipd_sub_port_fcs_s cn56xxp1;
3463 struct cvmx_ipd_sub_port_fcs_cn38xx cn58xx;
3464 struct cvmx_ipd_sub_port_fcs_cn38xx cn58xxp1;
3465 struct cvmx_ipd_sub_port_fcs_s cn61xx;
3466 struct cvmx_ipd_sub_port_fcs_s cn63xx;
3467 struct cvmx_ipd_sub_port_fcs_s cn63xxp1;
3468 struct cvmx_ipd_sub_port_fcs_s cn66xx;
3469 struct cvmx_ipd_sub_port_fcs_s cnf71xx;
3471 typedef union cvmx_ipd_sub_port_fcs cvmx_ipd_sub_port_fcs_t;
3474 * cvmx_ipd_sub_port_qos_cnt
3476 * IPD_SUB_PORT_QOS_CNT = IPD Subtract Port QOS Count
3478 * Will add the value (CNT) to the indicated Port-QOS register (PORT_QOS). The value added must be
3479 * be the 2's complement of the value that needs to be subtracted.
3481 union cvmx_ipd_sub_port_qos_cnt {
3483 struct cvmx_ipd_sub_port_qos_cnt_s {
3484 #ifdef __BIG_ENDIAN_BITFIELD
3485 uint64_t reserved_41_63 : 23;
3486 uint64_t port_qos : 9; /**< The port to add the CNT field to. */
3487 uint64_t cnt : 32; /**< The value to be added to the register selected
3488 in the PORT_QOS field. */
3491 uint64_t port_qos : 9;
3492 uint64_t reserved_41_63 : 23;
3495 struct cvmx_ipd_sub_port_qos_cnt_s cn52xx;
3496 struct cvmx_ipd_sub_port_qos_cnt_s cn52xxp1;
3497 struct cvmx_ipd_sub_port_qos_cnt_s cn56xx;
3498 struct cvmx_ipd_sub_port_qos_cnt_s cn56xxp1;
3499 struct cvmx_ipd_sub_port_qos_cnt_s cn61xx;
3500 struct cvmx_ipd_sub_port_qos_cnt_s cn63xx;
3501 struct cvmx_ipd_sub_port_qos_cnt_s cn63xxp1;
3502 struct cvmx_ipd_sub_port_qos_cnt_s cn66xx;
3503 struct cvmx_ipd_sub_port_qos_cnt_s cn68xx;
3504 struct cvmx_ipd_sub_port_qos_cnt_s cn68xxp1;
3505 struct cvmx_ipd_sub_port_qos_cnt_s cnf71xx;
3507 typedef union cvmx_ipd_sub_port_qos_cnt cvmx_ipd_sub_port_qos_cnt_t;
3510 * cvmx_ipd_wqe_fpa_queue
3512 * IPD_WQE_FPA_QUEUE = IPD Work-Queue-Entry FPA Page Size
3514 * Which FPA Queue (0-7) to fetch page-pointers from for WQE's
3516 union cvmx_ipd_wqe_fpa_queue {
3518 struct cvmx_ipd_wqe_fpa_queue_s {
3519 #ifdef __BIG_ENDIAN_BITFIELD
3520 uint64_t reserved_3_63 : 61;
3521 uint64_t wqe_pool : 3; /**< Which FPA Queue to fetch page-pointers
3523 Not used when IPD_CTL_STATUS[NO_WPTR] is set. */
3525 uint64_t wqe_pool : 3;
3526 uint64_t reserved_3_63 : 61;
3529 struct cvmx_ipd_wqe_fpa_queue_s cn30xx;
3530 struct cvmx_ipd_wqe_fpa_queue_s cn31xx;
3531 struct cvmx_ipd_wqe_fpa_queue_s cn38xx;
3532 struct cvmx_ipd_wqe_fpa_queue_s cn38xxp2;
3533 struct cvmx_ipd_wqe_fpa_queue_s cn50xx;
3534 struct cvmx_ipd_wqe_fpa_queue_s cn52xx;
3535 struct cvmx_ipd_wqe_fpa_queue_s cn52xxp1;
3536 struct cvmx_ipd_wqe_fpa_queue_s cn56xx;
3537 struct cvmx_ipd_wqe_fpa_queue_s cn56xxp1;
3538 struct cvmx_ipd_wqe_fpa_queue_s cn58xx;
3539 struct cvmx_ipd_wqe_fpa_queue_s cn58xxp1;
3540 struct cvmx_ipd_wqe_fpa_queue_s cn61xx;
3541 struct cvmx_ipd_wqe_fpa_queue_s cn63xx;
3542 struct cvmx_ipd_wqe_fpa_queue_s cn63xxp1;
3543 struct cvmx_ipd_wqe_fpa_queue_s cn66xx;
3544 struct cvmx_ipd_wqe_fpa_queue_s cn68xx;
3545 struct cvmx_ipd_wqe_fpa_queue_s cn68xxp1;
3546 struct cvmx_ipd_wqe_fpa_queue_s cnf71xx;
3548 typedef union cvmx_ipd_wqe_fpa_queue cvmx_ipd_wqe_fpa_queue_t;
3551 * cvmx_ipd_wqe_ptr_valid
3553 * IPD_WQE_PTR_VALID = IPD's WQE Pointer Valid
3555 * The value of the WQE-pointer fetched and in the valid register.
3557 union cvmx_ipd_wqe_ptr_valid {
3559 struct cvmx_ipd_wqe_ptr_valid_s {
3560 #ifdef __BIG_ENDIAN_BITFIELD
3561 uint64_t reserved_29_63 : 35;
3562 uint64_t ptr : 29; /**< Pointer value.
3563 When IPD_CTL_STATUS[NO_WPTR] is set '1' this field
3564 represents a Packet-Pointer NOT a WQE pointer. */
3567 uint64_t reserved_29_63 : 35;
3570 struct cvmx_ipd_wqe_ptr_valid_s cn30xx;
3571 struct cvmx_ipd_wqe_ptr_valid_s cn31xx;
3572 struct cvmx_ipd_wqe_ptr_valid_s cn38xx;
3573 struct cvmx_ipd_wqe_ptr_valid_s cn50xx;
3574 struct cvmx_ipd_wqe_ptr_valid_s cn52xx;
3575 struct cvmx_ipd_wqe_ptr_valid_s cn52xxp1;
3576 struct cvmx_ipd_wqe_ptr_valid_s cn56xx;
3577 struct cvmx_ipd_wqe_ptr_valid_s cn56xxp1;
3578 struct cvmx_ipd_wqe_ptr_valid_s cn58xx;
3579 struct cvmx_ipd_wqe_ptr_valid_s cn58xxp1;
3580 struct cvmx_ipd_wqe_ptr_valid_s cn61xx;
3581 struct cvmx_ipd_wqe_ptr_valid_s cn63xx;
3582 struct cvmx_ipd_wqe_ptr_valid_s cn63xxp1;
3583 struct cvmx_ipd_wqe_ptr_valid_s cn66xx;
3584 struct cvmx_ipd_wqe_ptr_valid_s cnf71xx;
3586 typedef union cvmx_ipd_wqe_ptr_valid cvmx_ipd_wqe_ptr_valid_t;