xref: /netbsd-src/sys/arch/mips/cavium/dev/octeon_ipdreg.h (revision 13d5e9b5fa08db7d5b049affd78f108a76f66704)
1*13d5e9b5Ssimonb /*	$NetBSD: octeon_ipdreg.h,v 1.3 2020/06/22 03:05:07 simonb Exp $	*/
2f693c922Shikaru 
3f693c922Shikaru /*
4f693c922Shikaru  * Copyright (c) 2007 Internet Initiative Japan, Inc.
5f693c922Shikaru  * All rights reserved.
6f693c922Shikaru  *
7f693c922Shikaru  * Redistribution and use in source and binary forms, with or without
8f693c922Shikaru  * modification, are permitted provided that the following conditions
9f693c922Shikaru  * are met:
10f693c922Shikaru  * 1. Redistributions of source code must retain the above copyright
11f693c922Shikaru  *    notice, this list of conditions and the following disclaimer.
12f693c922Shikaru  * 2. Redistributions in binary form must reproduce the above copyright
13f693c922Shikaru  *    notice, this list of conditions and the following disclaimer in the
14f693c922Shikaru  *    documentation and/or other materials provided with the distribution.
15f693c922Shikaru  *
16f693c922Shikaru  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17f693c922Shikaru  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18f693c922Shikaru  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19f693c922Shikaru  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20f693c922Shikaru  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21f693c922Shikaru  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22f693c922Shikaru  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23f693c922Shikaru  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24f693c922Shikaru  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25f693c922Shikaru  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26f693c922Shikaru  * SUCH DAMAGE.
27f693c922Shikaru  */
28f693c922Shikaru 
29f693c922Shikaru /*
30f693c922Shikaru  * IPD Registers
31f693c922Shikaru  */
32f693c922Shikaru 
33f693c922Shikaru #ifndef _OCTEON_IPDREG_H_
34f693c922Shikaru #define _OCTEON_IPDREG_H_
35f693c922Shikaru 
36f693c922Shikaru #define	IPD_1ST_MBUFF_SKIP		0x00014f0000000000ULL
37f693c922Shikaru #define	IPD_NOT_1ST_MBUFF_SKIP		0x00014f0000000008ULL
38f693c922Shikaru #define	IPD_PACKET_MBUFF_SIZE		0x00014f0000000010ULL
39f693c922Shikaru #define	IPD_CTL_STATUS			0x00014f0000000018ULL
40f693c922Shikaru #define	IPD_WQE_FPA_QUEUE		0x00014f0000000020ULL
41f693c922Shikaru #define	IPD_PORT0_BP_PAGE_CNT		0x00014f0000000028ULL
42f693c922Shikaru #define	IPD_PORT1_BP_PAGE_CNT		0x00014f0000000030ULL
43f693c922Shikaru #define	IPD_PORT2_BP_PAGE_CNT		0x00014f0000000038ULL
44f693c922Shikaru #define	IPD_PORT32_BP_PAGE_CNT		0x00014f0000000128ULL
45f693c922Shikaru #define	IPD_SUB_PORT_BP_PAGE_CNT	0x00014f0000000148ULL
46f693c922Shikaru #define	IPD_1ST_NEXT_PTR_BACK		0x00014f0000000150ULL
47f693c922Shikaru #define	IPD_2ND_NEXT_PTR_BACK		0x00014f0000000158ULL
48f693c922Shikaru #define	IPD_INT_ENB			0x00014f0000000160ULL
49f693c922Shikaru #define	IPD_INT_SUM			0x00014f0000000168ULL
50f693c922Shikaru #define	IPD_SUB_PORT_FCS		0x00014f0000000170ULL
51f693c922Shikaru #define	IPD_QOS0_RED_MARKS		0x00014f0000000178ULL
52f693c922Shikaru #define	IPD_QOS1_RED_MARKS		0x00014f0000000180ULL
53f693c922Shikaru #define	IPD_QOS2_RED_MARKS		0x00014f0000000188ULL
54f693c922Shikaru #define	IPD_QOS3_RED_MARKS		0x00014f0000000190ULL
55f693c922Shikaru #define	IPD_QOS4_RED_MARKS		0x00014f0000000198ULL
56f693c922Shikaru #define	IPD_QOS5_RED_MARKS		0x00014f00000001a0ULL
57f693c922Shikaru #define	IPD_QOS6_RED_MARKS		0x00014f00000001a8ULL
58f693c922Shikaru #define	IPD_QOS7_RED_MARKS		0x00014f00000001b0ULL
59f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR0	0x00014f00000001b8ULL
60f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR1	0x00014f00000001c0ULL
61f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR2	0x00014f00000001c8ULL
62f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR32	0x00014f00000002b8ULL
63f693c922Shikaru #define	IPD_RED_PORT_ENABLE		0x00014f00000002d8ULL
64f693c922Shikaru #define	IPD_RED_QUE0_PARAM		0x00014f00000002e0ULL
65f693c922Shikaru #define	IPD_RED_QUE1_PARAM		0x00014f00000002e8ULL
66f693c922Shikaru #define	IPD_RED_QUE2_PARAM		0x00014f00000002f0ULL
67f693c922Shikaru #define	IPD_RED_QUE3_PARAM		0x00014f00000002f8ULL
68f693c922Shikaru #define	IPD_RED_QUE4_PARAM		0x00014f0000000300ULL
69f693c922Shikaru #define	IPD_RED_QUE5_PARAM		0x00014f0000000308ULL
70f693c922Shikaru #define	IPD_RED_QUE6_PARAM		0x00014f0000000310ULL
71f693c922Shikaru #define	IPD_RED_QUE7_PARAM		0x00014f0000000318ULL
72f693c922Shikaru #define	IPD_PTR_COUNT			0x00014f0000000320ULL
73f693c922Shikaru #define	IPD_BP_PRT_RED_END		0x00014f0000000328ULL
74f693c922Shikaru #define	IPD_QUE0_FREE_PAGE_CNT		0x00014f0000000330ULL
75f693c922Shikaru #define	IPD_CLK_COUNT			0x00014f0000000338ULL
76f693c922Shikaru #define	IPD_PWP_PTR_FIFO_CTL		0x00014f0000000340ULL
77f693c922Shikaru #define	IPD_PRC_HOLD_PTR_FIFO_CTL	0x00014f0000000348ULL
78f693c922Shikaru #define	IPD_PRC_PORT_PTR_FIFO_CTL	0x00014f0000000350ULL
79f693c922Shikaru #define	IPD_PKT_PTR_VALID		0x00014f0000000358ULL
80f693c922Shikaru #define	IPD_WQE_PTR_VALID		0x00014f0000000360ULL
81f693c922Shikaru #define	IPD_BIST_STATUS			0x00014f00000007f8ULL
82f693c922Shikaru 
83f693c922Shikaru #define	IPD_BASE			0x00014f0000000000ULL
84f693c922Shikaru #define	IPD_SIZE			0x800ULL
85f693c922Shikaru 
86f693c922Shikaru #define	IPD_1ST_MBUFF_SKIP_OFFSET		0x0ULL
87f693c922Shikaru #define	IPD_NOT_1ST_MBUFF_SKIP_OFFSET		0x8ULL
88f693c922Shikaru #define	IPD_PACKET_MBUFF_SIZE_OFFSET		0x10ULL
89f693c922Shikaru #define	IPD_CTL_STATUS_OFFSET			0x18ULL
90f693c922Shikaru #define	IPD_WQE_FPA_QUEUE_OFFSET		0x20ULL
91f693c922Shikaru #define	IPD_PORT0_BP_PAGE_CNT_OFFSET		0x28ULL
92f693c922Shikaru #define	IPD_PORT1_BP_PAGE_CNT_OFFSET		0x30ULL
93f693c922Shikaru #define	IPD_PORT2_BP_PAGE_CNT_OFFSET		0x38ULL
94f693c922Shikaru #define	IPD_PORT32_BP_PAGE_CNT_OFFSET		0x128ULL
95f693c922Shikaru #define	IPD_SUB_PORT_BP_PAGE_CNT_OFFSET		0x148ULL
96f693c922Shikaru #define	IPD_1ST_NEXT_PTR_BACK_OFFSET		0x150ULL
97f693c922Shikaru #define	IPD_2ND_NEXT_PTR_BACK_OFFSET		0x158ULL
98f693c922Shikaru #define	IPD_INT_ENB_OFFSET			0x160ULL
99f693c922Shikaru #define	IPD_INT_SUM_OFFSET			0x168ULL
100f693c922Shikaru #define	IPD_SUB_PORT_FCS_OFFSET			0x170ULL
101f693c922Shikaru #define	IPD_QOS0_RED_MARKS_OFFSET		0x178ULL
102f693c922Shikaru #define	IPD_QOS1_RED_MARKS_OFFSET		0x180ULL
103f693c922Shikaru #define	IPD_QOS2_RED_MARKS_OFFSET		0x188ULL
104f693c922Shikaru #define	IPD_QOS3_RED_MARKS_OFFSET		0x190ULL
105f693c922Shikaru #define	IPD_QOS4_RED_MARKS_OFFSET		0x198ULL
106f693c922Shikaru #define	IPD_QOS5_RED_MARKS_OFFSET		0x1a0ULL
107f693c922Shikaru #define	IPD_QOS6_RED_MARKS_OFFSET		0x1a8ULL
108f693c922Shikaru #define	IPD_QOS7_RED_MARKS_OFFSET		0x1b0ULL
109f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR0_OFFSET	0x1b8ULL
110f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR1_OFFSET	0x1c0ULL
111f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR2_OFFSET	0x1c8ULL
112f693c922Shikaru #define	IPD_PORT_BP_COUNTERS_PAIR32_OFFSET	0x2b8ULL
113f693c922Shikaru #define	IPD_RED_PORT_ENABLE_OFFSET		0x2d8ULL
114f693c922Shikaru #define	IPD_RED_QUE0_PARAM_OFFSET		0x2e0ULL
115f693c922Shikaru #define	IPD_RED_QUE1_PARAM_OFFSET		0x2e8ULL
116f693c922Shikaru #define	IPD_RED_QUE2_PARAM_OFFSET		0x2f0ULL
117f693c922Shikaru #define	IPD_RED_QUE3_PARAM_OFFSET		0x2f8ULL
118f693c922Shikaru #define	IPD_RED_QUE4_PARAM_OFFSET		0x300ULL
119f693c922Shikaru #define	IPD_RED_QUE5_PARAM_OFFSET		0x308ULL
120f693c922Shikaru #define	IPD_RED_QUE6_PARAM_OFFSET		0x310ULL
121f693c922Shikaru #define	IPD_RED_QUE7_PARAM_OFFSET		0x318ULL
122f693c922Shikaru #define	IPD_PTR_COUNT_OFFSET			0x320ULL
123f693c922Shikaru #define	IPD_BP_PRT_RED_END_OFFSET		0x328ULL
124f693c922Shikaru #define	IPD_QUE0_FREE_PAGE_CNT_OFFSET		0x330ULL
125f693c922Shikaru #define	IPD_CLK_COUNT_OFFSET			0x338ULL
126f693c922Shikaru #define	IPD_PWP_PTR_FIFO_CTL_OFFSET		0x340ULL
127f693c922Shikaru #define	IPD_PRC_HOLD_PTR_FIFO_CTL_OFFSET	0x348ULL
128f693c922Shikaru #define	IPD_PRC_PORT_PTR_FIFO_CTL_OFFSET	0x350ULL
129f693c922Shikaru #define	IPD_PKT_PTR_VALID_OFFSET		0x358ULL
130f693c922Shikaru #define	IPD_WQE_PTR_VALID_OFFSET		0x360ULL
131f693c922Shikaru #define	IPD_BIST_STATUS_OFFSET			0x7f8ULL
132f693c922Shikaru 
133f693c922Shikaru /* ----- */
134f693c922Shikaru /*
135f693c922Shikaru  * Work Queue Entry Format (for input packet)
136f693c922Shikaru  */
137f693c922Shikaru 
138f693c922Shikaru /*
139f693c922Shikaru  * word 2
140f693c922Shikaru  * Work-Queue Entry format; Word2 Cases
141f693c922Shikaru  */
142f693c922Shikaru /* RAWFULL */
143f693c922Shikaru #define IPD_WQE_WORD2_RAW_BUFS		UINT64_C(0xff00000000000000)
144f693c922Shikaru #define IPD_WQE_WORD2_RAW_WORD		UINT64_C(0x00ffffffffffffff)
145f693c922Shikaru 
146f693c922Shikaru /* is IP */
147f693c922Shikaru #define IPD_WQE_WORD2_IP_BUFS		UINT64_C(0xff00000000000000)
148f693c922Shikaru #define IPD_WQE_WORD2_IP_IPOFF		UINT64_C(0x00ff000000000000)
149f693c922Shikaru #define IPD_WQE_WORD2_IP_VV		UINT64_C(0x0000800000000000)
150f693c922Shikaru #define IPD_WQE_WORD2_IP_VS		UINT64_C(0x0000400000000000)
151f693c922Shikaru #define IPD_WQE_WORD2_IP_45		UINT64_C(0x0000200000000000)
152f693c922Shikaru #define IPD_WQE_WORD2_IP_VC		UINT64_C(0x0000100000000000)
153f693c922Shikaru #define IPD_WQE_WORD2_IP_VLANID		UINT64_C(0x00000fff00000000)
154f693c922Shikaru #define IPD_WQE_WORD2_IP_31_20		UINT64_C(0x00000000fff00000)
155f693c922Shikaru #define IPD_WQE_WORD2_IP_CO		UINT64_C(0x0000000000080000)
156f693c922Shikaru #define IPD_WQE_WORD2_IP_TU		UINT64_C(0x0000000000040000)
157f693c922Shikaru #define IPD_WQE_WORD2_IP_SE		UINT64_C(0x0000000000020000)
158f693c922Shikaru #define IPD_WQE_WORD2_IP_V6		UINT64_C(0x0000000000010000)
159f693c922Shikaru #define IPD_WQE_WORD2_IP_15		UINT64_C(0x0000000000008000)
160f693c922Shikaru #define IPD_WQE_WORD2_IP_LE		UINT64_C(0x0000000000004000)
161f693c922Shikaru #define IPD_WQE_WORD2_IP_FR		UINT64_C(0x0000000000002000)
162f693c922Shikaru #define IPD_WQE_WORD2_IP_IE		UINT64_C(0x0000000000001000)
163f693c922Shikaru #define IPD_WQE_WORD2_IP_B		UINT64_C(0x0000000000000800)
164f693c922Shikaru #define IPD_WQE_WORD2_IP_M		UINT64_C(0x0000000000000400)
165f693c922Shikaru #define IPD_WQE_WORD2_IP_NI		UINT64_C(0x0000000000000200)
166f693c922Shikaru #define IPD_WQE_WORD2_IP_RE		UINT64_C(0x0000000000000100)
167f693c922Shikaru #define IPD_WQE_WORD2_IP_OPCODE		UINT64_C(0x00000000000000ff)
168f693c922Shikaru 
169f693c922Shikaru /* All other */
170f693c922Shikaru #define IPD_WQE_WORD2_OTH_BUFS		UINT64_C(0xff00000000000000)
171f693c922Shikaru #define IPD_WQE_WORD2_OTH_55_48		UINT64_C(0x00ff000000000000)
172f693c922Shikaru #define IPD_WQE_WORD2_OTH_VV		UINT64_C(0x0000800000000000)
173f693c922Shikaru #define IPD_WQE_WORD2_OTH_VS		UINT64_C(0x0000400000000000)
174f693c922Shikaru #define IPD_WQE_WORD2_OTH_45		UINT64_C(0x0000200000000000)
175f693c922Shikaru #define IPD_WQE_WORD2_OTH_VC		UINT64_C(0x0000100000000000)
176f693c922Shikaru #define IPD_WQE_WORD2_OTH_VLANID	UINT64_C(0x00000fff00000000)
177f693c922Shikaru #define IPD_WQE_WORD2_OTH_31_14		UINT64_C(0x00000000ffffc000)
178f693c922Shikaru #define IPD_WQE_WORD2_OTH_IR		UINT64_C(0x0000000000002000)
179f693c922Shikaru #define IPD_WQE_WORD2_OTH_IA		UINT64_C(0x0000000000001000)
180f693c922Shikaru #define IPD_WQE_WORD2_OTH_B		UINT64_C(0x0000000000000800)
181f693c922Shikaru #define IPD_WQE_WORD2_OTH_M		UINT64_C(0x0000000000000400)
182f693c922Shikaru #define IPD_WQE_WORD2_OTH_NI		UINT64_C(0x0000000000000200)
183f693c922Shikaru #define IPD_WQE_WORD2_OTH_RE		UINT64_C(0x0000000000000100)
184f693c922Shikaru #define IPD_WQE_WORD2_OTH_OPCODE	UINT64_C(0x00000000000000ff)
185f693c922Shikaru 
186f693c922Shikaru /*
187f693c922Shikaru  * word 3
188f693c922Shikaru  */
189f693c922Shikaru #define IPD_WQE_WORD3_63		UINT64_C(0x8000000000000000)
190f693c922Shikaru #define IPD_WQE_WORD3_BACK		UINT64_C(0x7800000000000000)
191f693c922Shikaru #define IPD_WQE_WORD3_58_56		UINT64_C(0x0700000000000000)
192f693c922Shikaru #define IPD_WQE_WORD3_SIZE		UINT64_C(0x00ffff0000000000)
193f693c922Shikaru #define IPD_WQE_WORD3_ADDR		UINT64_C(0x000000ffffffffff)
194f693c922Shikaru 
195f693c922Shikaru /*
196f693c922Shikaru  * IPD_1ST_MBUFF_SKIP
197f693c922Shikaru  */
198f693c922Shikaru #define IPD_1ST_MBUFF_SKIP_63_6		UINT64_C(0xffffffffffffffc0)
199f693c922Shikaru #define IPD_1ST_MBUFF_SKIP_SZ		UINT64_C(0x000000000000003f)
200f693c922Shikaru 
201f693c922Shikaru /*
202f693c922Shikaru  * IPD_NOT_1ST_MBUFF_SKIP
203f693c922Shikaru  */
204f693c922Shikaru #define IPD_NOT_1ST_MBUFF_SKIP_63_6	UINT64_C(0xffffffffffffffc0)
205f693c922Shikaru #define IPD_NOT_1ST_MBUFF_SKIP_SZ	UINT64_C(0x000000000000003f)
206f693c922Shikaru 
207f693c922Shikaru /*
208f693c922Shikaru  * IPD_PACKET_MBUFF_SIZE
209f693c922Shikaru  */
210f693c922Shikaru #define IPD_PACKET_MBUFF_SIZE_63_12	UINT64_C(0xfffffffffffff000)
211f693c922Shikaru #define IPD_PACKET_MBUFF_SIZE_MB_SIZE	UINT64_C(0x0000000000000fff)
212f693c922Shikaru 
213f693c922Shikaru /*
214f693c922Shikaru  * IPD_CTL_STATUS
215f693c922Shikaru  */
216f693c922Shikaru #define IPD_CTL_STATUS_63_10		UINT64_C(0xfffffffffffffc00)
217f693c922Shikaru #define IPD_CTL_STATUS_LEN_M8		UINT64_C(0x0000000000000200)
218f693c922Shikaru #define IPD_CTL_STATUS_RESET		UINT64_C(0x0000000000000100)
219f693c922Shikaru #define IPD_CTL_STATUS_ADDPKT		UINT64_C(0x0000000000000080)
220f693c922Shikaru #define IPD_CTL_STATUS_NADDBUF		UINT64_C(0x0000000000000040)
221f693c922Shikaru #define IPD_CTL_STATUS_PKT_LEND		UINT64_C(0x0000000000000020)
222f693c922Shikaru #define IPD_CTL_STATUS_WQE_LEND		UINT64_C(0x0000000000000010)
223f693c922Shikaru #define IPD_CTL_STATUS_PBP_EN		UINT64_C(0x0000000000000008)
224f693c922Shikaru #define IPD_CTL_STATUS_OPC_MODE		UINT64_C(0x0000000000000006)
225b9fcd28bSsimonb #define   IPD_CTL_STATUS_OPC_MODE_NONE	  0
226b9fcd28bSsimonb #define   IPD_CTL_STATUS_OPC_MODE_ALL	  1
227b9fcd28bSsimonb #define   IPD_CTL_STATUS_OPC_MODE_ONE	  2
228b9fcd28bSsimonb #define   IPD_CTL_STATUS_OPC_MODE_TWO	  3
229f693c922Shikaru #define IPD_CTL_STATUS_IPD_EN		UINT64_C(0x0000000000000001)
230f693c922Shikaru 
231f693c922Shikaru /*
232f693c922Shikaru  * IPD_WQE_FPA_QUEUE
233f693c922Shikaru  */
234f693c922Shikaru #define IPD_WQE_FPA_QUEUE_63_3		UINT64_C(0xfffffffffffffff8)
235f693c922Shikaru #define IPD_WQE_FPA_QUEUE_WQE_QUE	UINT64_C(0x0000000000000007)
236f693c922Shikaru 
237f693c922Shikaru /*
238f693c922Shikaru  * IPD_PORTN_BP_PAGE_CNT
239f693c922Shikaru  */
240f693c922Shikaru #define IPD_PORTN_BP_PAGE_CNT_63_18	UINT64_C(0xfffffffffffc0000)
241f693c922Shikaru #define IPD_PORTN_BP_PAGE_CNT_BP_ENB	UINT64_C(0x0000000000020000)
242f693c922Shikaru #define IPD_PORTN_BP_PAGE_CNT_PAGE_CNT	UINT64_C(0x000000000001ffff)
243f693c922Shikaru 
244f693c922Shikaru /*
245f693c922Shikaru  * IPD_SUB_PORT_BP_PAGE_CNT
246f693c922Shikaru  */
247f693c922Shikaru #define IPD_SUB_PORT_BP_PAGE_CNT_63_18		UINT64_C(0xffffffff80000000)
248f693c922Shikaru #define IPD_SUB_PORT_BP_PAGE_CNT_PORT		UINT64_C(0x000000007e000000)
249f693c922Shikaru #define IPD_SUB_PORT_BP_PAGE_CNT_PAGE_CNT	UINT64_C(0x0000000001ffffff)
250f693c922Shikaru 
251f693c922Shikaru /*
252f693c922Shikaru  * IPD_1ST_NEXT_PTR_BACK
253f693c922Shikaru  */
254f693c922Shikaru #define IPD_1ST_NEXT_PTR_BACK_63_4		UINT64_C(0xfffffffffffffff0)
255f693c922Shikaru #define IPD_1ST_NEXT_PTR_BACK_BACK		UINT64_C(0x000000000000000f)
256f693c922Shikaru 
257f693c922Shikaru /*
258f693c922Shikaru  * IPD_2ND_NEXT_PTR_BACK
259f693c922Shikaru  */
260f693c922Shikaru #define IPD_2ND_NEXT_PTR_BACK_63_4		UINT64_C(0xfffffffffffffff0)
261f693c922Shikaru #define IPD_2ND_NEXT_PTR_BACK_BACK		UINT64_C(0x000000000000000f)
262f693c922Shikaru 
263f693c922Shikaru /*
264f693c922Shikaru  * IPD_INT_ENB
265f693c922Shikaru  */
266f693c922Shikaru #define IPD_INT_ENB_63_4		UINT64_C(0xffffffffffffffe0)
267f693c922Shikaru #define IPD_INT_ENB_BP_SUB		UINT64_C(0x0000000000000010)
268f693c922Shikaru #define IPD_INT_ENB_PRC_PAR3		UINT64_C(0x0000000000000008)
269f693c922Shikaru #define IPD_INT_ENB_PRC_PAR2		UINT64_C(0x0000000000000004)
270f693c922Shikaru #define IPD_INT_ENB_PRC_PAR1		UINT64_C(0x0000000000000002)
271f693c922Shikaru #define IPD_INT_ENB_PRC_PAR0		UINT64_C(0x0000000000000001)
272f693c922Shikaru 
273f693c922Shikaru /*
274f693c922Shikaru  * IPD_INT_SUM
275f693c922Shikaru  */
276f693c922Shikaru #define IPD_INT_SUM_63_4		UINT64_C(0xffffffffffffffe0)
277f693c922Shikaru #define IPD_INT_SUM_BP_SUB		UINT64_C(0x0000000000000010)
278f693c922Shikaru #define IPD_INT_SUM_PRC_PAR3		UINT64_C(0x0000000000000008)
279f693c922Shikaru #define IPD_INT_SUM_PRC_PAR2		UINT64_C(0x0000000000000004)
280f693c922Shikaru #define IPD_INT_SUM_PRC_PAR1		UINT64_C(0x0000000000000002)
281f693c922Shikaru #define IPD_INT_SUM_PRC_PAR0		UINT64_C(0x0000000000000001)
282f693c922Shikaru 
283f693c922Shikaru /*
284f693c922Shikaru  * IPD_SUB_PORT_FCS
285f693c922Shikaru  */
286f693c922Shikaru #define IPD_SUB_PORT_FCS_63_3		UINT64_C(0xfffffffffffffff8)
287f693c922Shikaru #define IPD_SUB_PORT_FCS_PORT_BIT	UINT64_C(0x0000000000000007)
288f693c922Shikaru 
289f693c922Shikaru /*
290f693c922Shikaru  * IPD_QOSN_RED_MARKS
291f693c922Shikaru  */
292f693c922Shikaru #define IPD_QOSN_READ_MARKS_DROP	UINT64_C(0xffffffff00000000)
293f693c922Shikaru #define IPD_QOSN_READ_MARKS_PASS	UINT64_C(0x00000000ffffffff)
294f693c922Shikaru 
295f693c922Shikaru /*
296f693c922Shikaru  * IPD_PORT_BP_COUNTERS_PAIRN
297f693c922Shikaru  */
298f693c922Shikaru #define IPD_PORT_BP_COUNTERS_PAIRN_63_25	UINT64_C(0xfffffffffe000000)
299f693c922Shikaru #define IPD_PORT_BP_COUNTERS_PAIRN_CNT_VAL	UINT64_C(0x0000000001ffffff)
300f693c922Shikaru 
301f693c922Shikaru /*
302f693c922Shikaru  * IPD_RED_PORT_ENABLE
303f693c922Shikaru  */
304f693c922Shikaru #define IPD_RED_PORT_ENABLE_PRB_DLY	UINT64_C(0xfffc000000000000)
305f693c922Shikaru #define IPD_RED_PORT_ENABLE_AVG_DLY	UINT64_C(0x0003fff000000000)
306f693c922Shikaru #define IPD_RED_PORT_ENABLE_PRT_ENB	UINT64_C(0x0000000fffffffff)
307f693c922Shikaru 
308f693c922Shikaru /*
309f693c922Shikaru  * IPD_RED_QUEN_PARAM
310f693c922Shikaru  */
311f693c922Shikaru #define IPD_RED_QUEN_PARAM_63_49	UINT64_C(0xfffe000000000000)
312f693c922Shikaru #define IPD_RED_QUEN_PARAM_USE_PCNT	UINT64_C(0x0001000000000000)
313f693c922Shikaru #define IPD_RED_QUEN_PARAM_NEW_CON	UINT64_C(0x0000ff0000000000)
314f693c922Shikaru #define IPD_RED_QUEN_PARAM_AVG_CON	UINT64_C(0x000000ff00000000)
315f693c922Shikaru #define IPD_RED_QUEN_PARAM_PRB_CON	UINT64_C(0x00000000ffffffff)
316f693c922Shikaru 
317f693c922Shikaru /*
318f693c922Shikaru  * IPD_PTR_COUNT
319f693c922Shikaru  */
320f693c922Shikaru #define IPD_PTR_COUNT_63_19		UINT64_C(0xfffffffffff80000)
321f693c922Shikaru #define IPD_PTR_COUNT_PKTV_CNT		UINT64_C(0x0000000000040000)
322f693c922Shikaru #define IPD_PTR_COUNT_WQEV_CNT		UINT64_C(0x0000000000020000)
323f693c922Shikaru #define IPD_PTR_COUNT_PFIF_CNT		UINT64_C(0x000000000001c000)
324f693c922Shikaru #define IPD_PTR_COUNT_PKT_PCNT		UINT64_C(0x0000000000003f80)
325f693c922Shikaru #define IPD_PTR_COUNT_WQE_PCNT		UINT64_C(0x000000000000007f)
326f693c922Shikaru 
327f693c922Shikaru /*
328f693c922Shikaru  * IPD_BP_PRT_RED_END
329f693c922Shikaru  */
330f693c922Shikaru #define IPD_BP_PRT_RED_END_63_36	UINT64_C(0xfffffff000000000)
331f693c922Shikaru #define IPD_BP_PRT_RED_END_PRT_ENB	UINT64_C(0x0000000fffffffff)
332f693c922Shikaru 
333f693c922Shikaru /*
334f693c922Shikaru  * IPD_QUE0_FREE_PAGE_CNT
335f693c922Shikaru  */
336f693c922Shikaru #define IPD_QUE0_FREE_PAGE_CNT_63_32	UINT64_C(0xffffffff00000000)
337f693c922Shikaru #define IPD_QUE0_FREE_PAGE_CNT_Q0_PCNT	UINT64_C(0x00000000ffffffff)
338f693c922Shikaru 
339f693c922Shikaru /*
340f693c922Shikaru  * IPD_CLK_COUNT
341f693c922Shikaru  */
342f693c922Shikaru #define IPD_CLK_COUNT_CLK_CNT		UINT64_C(0xffffffffffffffff)
343f693c922Shikaru 
344f693c922Shikaru /*
345f693c922Shikaru  * IPD_PWP_PTR_FIFO_CTL
346f693c922Shikaru  */
347f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_63_61	UINT64_C(0xe000000000000000)
348f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_MAX_CNTS	UINT64_C(0x1fc0000000000000)
349f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_WRADDR	UINT64_C(0x003fc00000000000)
350f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_PRADDR	UINT64_C(0x00003fc000000000)
351f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_PTR	UINT64_C(0x0000003ffffffe00)
352f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_CENA	UINT64_C(0x0000000000000100)
353f693c922Shikaru #define IPD_PWP_PTR_FIFO_CTL_RADDR	UINT64_C(0x00000000000000ff)
354f693c922Shikaru 
355f693c922Shikaru /*
356f693c922Shikaru  * IPD_PRC_HOLD_PTR_FIFO_CTL
357f693c922Shikaru  */
358f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_63_39		UINT64_C(0xffffff8000000000)
359f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_MAX_PTR	UINT64_C(0x0000007000000000)
360f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_PRADDR	UINT64_C(0x0000000e00000000)
361f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_PTR		UINT64_C(0x00000001fffffff0)
362f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_CENA		UINT64_C(0x0000000000000008)
363f693c922Shikaru #define IPD_PRC_HOLD_PTR_FIFO_CTL_RADDR		UINT64_C(0x0000000000000007)
364f693c922Shikaru 
365f693c922Shikaru /*
366f693c922Shikaru  * IPD_PRC_PORT_PTR_FIFO_CTL
367f693c922Shikaru  */
368f693c922Shikaru #define IPD_PRC_PORT_PTR_FIFO_CTL_63_44		UINT64_C(0xfffff00000000000)
369f693c922Shikaru #define IPD_PRC_PORT_PTR_FIFO_CTL_MAX_PTR	UINT64_C(0x00000fe000000000)
370f693c922Shikaru #define IPD_PRC_PORT_PTR_FIFO_CTL_PTR		UINT64_C(0x0000001fffffff00)
371f693c922Shikaru #define IPD_PRC_PORT_PTR_FIFO_CTL_CENA		UINT64_C(0x0000000000000080)
372f693c922Shikaru #define IPD_PRC_PORT_PTR_FIFO_CTL_RADDR		UINT64_C(0x000000000000007f)
373f693c922Shikaru 
374f693c922Shikaru /*
375f693c922Shikaru  * IPD_PKT_PTR_VALID
376f693c922Shikaru  */
377f693c922Shikaru #define IPD_PKT_PTR_VALID_63_29	UINT64_C(0xffffffffe0000000)
378f693c922Shikaru #define IPD_PKT_PTR_VALID_PTR	UINT64_C(0x000000001fffffff)
379f693c922Shikaru 
380f693c922Shikaru /*
381f693c922Shikaru  * IPD_WQE_PTR_VALID
382f693c922Shikaru  */
383f693c922Shikaru #define IPD_WQE_PTR_VALID_63_29	UINT64_C(0xffffffffe0000000)
384f693c922Shikaru #define IPD_WQE_PTR_VALID_PTR	UINT64_C(0x000000001fffffff)
385f693c922Shikaru 
386f693c922Shikaru /*
387f693c922Shikaru  * IPD_BIST_STATUS
388f693c922Shikaru  */
389f693c922Shikaru #define IPD_BIST_STATUS_63_29		UINT64_C(0xffffffffffff0000)
390f693c922Shikaru #define IPD_BIST_STATUS_PWQ_WQED	UINT64_C(0x0000000000008000)
391f693c922Shikaru #define IPD_BIST_STATUS_PWQ_WP1		UINT64_C(0x0000000000004000)
392f693c922Shikaru #define IPD_BIST_STATUS_PWQ_POW		UINT64_C(0x0000000000002000)
393f693c922Shikaru #define IPD_BIST_STATUS_IPQ_PBE1	UINT64_C(0x0000000000001000)
394f693c922Shikaru #define IPD_BIST_STATUS_IPQ_PBE0	UINT64_C(0x0000000000000800)
395f693c922Shikaru #define IPD_BIST_STATUS_PBM3		UINT64_C(0x0000000000000400)
396f693c922Shikaru #define IPD_BIST_STATUS_PBM2		UINT64_C(0x0000000000000200)
397f693c922Shikaru #define IPD_BIST_STATUS_PBM1		UINT64_C(0x0000000000000100)
398f693c922Shikaru #define IPD_BIST_STATUS_PBM0		UINT64_C(0x0000000000000080)
399f693c922Shikaru #define IPD_BIST_STATUS_PBM_WORD	UINT64_C(0x0000000000000040)
400f693c922Shikaru #define IPD_BIST_STATUS_PWQ1		UINT64_C(0x0000000000000020)
401f693c922Shikaru #define IPD_BIST_STATUS_PWQ0		UINT64_C(0x0000000000000010)
402f693c922Shikaru #define IPD_BIST_STATUS_PRC_OFF		UINT64_C(0x0000000000000008)
403f693c922Shikaru #define IPD_BIST_STATUS_IPD_OLD		UINT64_C(0x0000000000000004)
404f693c922Shikaru #define IPD_BIST_STATUS_IPD_NEW		UINT64_C(0x0000000000000002)
405f693c922Shikaru #define IPD_BIST_STATUS_PWP		UINT64_C(0x0000000000000001)
406f693c922Shikaru 
407f693c922Shikaru /*
408f693c922Shikaru  * word2[Opcode]
409f693c922Shikaru  */
410f693c922Shikaru /* L3 (IP) error */
411f693c922Shikaru #define IPD_WQE_L3_NOT_IP		1
412f693c922Shikaru #define IPD_WQE_L3_V4_CSUM_ERR		2
413f693c922Shikaru #define IPD_WQE_L3_HEADER_MALFORMED	3
414f693c922Shikaru #define IPD_WQE_L3_MELFORMED		4
415f693c922Shikaru #define IPD_WQE_L3_TTL_HOP		5
416f693c922Shikaru #define IPD_WQE_L3_IP_OPT		6
417f693c922Shikaru 
418f693c922Shikaru /* L4 (UDP/TCP) error */
419f693c922Shikaru #define IPD_WQE_L4_MALFORMED		1
420f693c922Shikaru #define IPD_WQE_L4_CSUM_ERR		2
421f693c922Shikaru #define IPD_WQE_L4_UDP_LEN_ERR		3
422f693c922Shikaru #define IPD_WQE_L4_BAD_PORT		4
423f693c922Shikaru #define IPD_WQE_L4_FIN_ONLY		8
424f693c922Shikaru #define IPD_WQE_L4_NO_FLAGS		9
425f693c922Shikaru #define IPD_WQE_L4_FIN_RST		10
426f693c922Shikaru #define IPD_WQE_L4_SYN_URG		11
427f693c922Shikaru #define IPD_WQE_L4_SYN_RST		12
428f693c922Shikaru #define IPD_WQE_L4_SYN_FIN		13
429f693c922Shikaru 
430f693c922Shikaru #endif /* _OCTEON_IPDREG_H_ */
431