xref: /onnv-gate/usr/src/uts/common/io/atge/atge_l1e_reg.h (revision 11353:db56a54bf91c)
1*10393SSaurabh.Mishra@Sun.COM /*
2*10393SSaurabh.Mishra@Sun.COM  * CDDL HEADER START
3*10393SSaurabh.Mishra@Sun.COM  *
4*10393SSaurabh.Mishra@Sun.COM  * The contents of this file are subject to the terms of the
5*10393SSaurabh.Mishra@Sun.COM  * Common Development and Distribution License (the "License").
6*10393SSaurabh.Mishra@Sun.COM  * You may not use this file except in compliance with the License.
7*10393SSaurabh.Mishra@Sun.COM  *
8*10393SSaurabh.Mishra@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10393SSaurabh.Mishra@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*10393SSaurabh.Mishra@Sun.COM  * See the License for the specific language governing permissions
11*10393SSaurabh.Mishra@Sun.COM  * and limitations under the License.
12*10393SSaurabh.Mishra@Sun.COM  *
13*10393SSaurabh.Mishra@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*10393SSaurabh.Mishra@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10393SSaurabh.Mishra@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*10393SSaurabh.Mishra@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*10393SSaurabh.Mishra@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10393SSaurabh.Mishra@Sun.COM  *
19*10393SSaurabh.Mishra@Sun.COM  * CDDL HEADER END
20*10393SSaurabh.Mishra@Sun.COM  */
21*10393SSaurabh.Mishra@Sun.COM /*
22*10393SSaurabh.Mishra@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*10393SSaurabh.Mishra@Sun.COM  * Use is subject to license terms.
24*10393SSaurabh.Mishra@Sun.COM  */
25*10393SSaurabh.Mishra@Sun.COM 
26*10393SSaurabh.Mishra@Sun.COM #ifndef _ATGE_L1E_REG_H
27*10393SSaurabh.Mishra@Sun.COM #define	_ATGE_L1E_REG_H
28*10393SSaurabh.Mishra@Sun.COM 
29*10393SSaurabh.Mishra@Sun.COM #ifdef __cplusplus
30*10393SSaurabh.Mishra@Sun.COM 	extern "C" {
31*10393SSaurabh.Mishra@Sun.COM #endif
32*10393SSaurabh.Mishra@Sun.COM 
33*10393SSaurabh.Mishra@Sun.COM /*
34*10393SSaurabh.Mishra@Sun.COM  * Number of RX Rings (or pages) we use.
35*10393SSaurabh.Mishra@Sun.COM  */
36*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_PAGES		2
37*10393SSaurabh.Mishra@Sun.COM 
38*10393SSaurabh.Mishra@Sun.COM #pragma	pack(1)
39*10393SSaurabh.Mishra@Sun.COM typedef	struct	rx_rs	{
40*10393SSaurabh.Mishra@Sun.COM 	uint32_t	seqno;
41*10393SSaurabh.Mishra@Sun.COM 	uint32_t	length;
42*10393SSaurabh.Mishra@Sun.COM 	uint32_t	flags;
43*10393SSaurabh.Mishra@Sun.COM 	uint32_t	vtags;
44*10393SSaurabh.Mishra@Sun.COM } rx_rs_t;
45*10393SSaurabh.Mishra@Sun.COM 
46*10393SSaurabh.Mishra@Sun.COM typedef	struct	rx_cmb {
47*10393SSaurabh.Mishra@Sun.COM 	uint32_t	cmb[L1E_RX_PAGES];
48*10393SSaurabh.Mishra@Sun.COM } rx_cmb_t;
49*10393SSaurabh.Mishra@Sun.COM #pragma	pack()
50*10393SSaurabh.Mishra@Sun.COM 
51*10393SSaurabh.Mishra@Sun.COM /*
52*10393SSaurabh.Mishra@Sun.COM  * DMA CFG registers (L1E specific).
53*10393SSaurabh.Mishra@Sun.COM  */
54*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_REQ_PRI		0x00000400
55*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_DELAY_CNT_MASK	0x0000F800
56*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_DELAY_CNT_MASK	0x000F0000
57*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_TXCMB_ENB		0x00100000
58*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RXCMB_ENB		0x00200000
59*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_BURST_MASK		0x07
60*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_BURST_SHIFT		4
61*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_BURST_MASK		0x07
62*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_BURST_SHIFT		7
63*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_DELAY_CNT_SHIFT	11
64*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_DELAY_CNT_SHIFT	16
65*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_RD_DELAY_CNT_DEFAULT	15
66*10393SSaurabh.Mishra@Sun.COM #define	DMA_CFG_WR_DELAY_CNT_DEFAULT	4
67*10393SSaurabh.Mishra@Sun.COM 
68*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_RING_CNT_MIN		32
69*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_RING_CNT_MAX		1020
70*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_RING_ALIGN		8
71*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_PAGE_ALIGN		32
72*10393SSaurabh.Mishra@Sun.COM #define	L1E_CMB_ALIGN			32
73*10393SSaurabh.Mishra@Sun.COM #define	L1E_MAX_FRAMELEN		ETHERMAX
74*10393SSaurabh.Mishra@Sun.COM 
75*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_PAGE_SZ_MIN		(8 * 1024)
76*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_PAGE_SZ_MAX		(1024 * 1024)
77*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_FRAMES_PAGE		128
78*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_PAGE_SZ	\
79*10393SSaurabh.Mishra@Sun.COM 	(ROUNDUP(L1E_MAX_FRAMELEN, L1E_RX_PAGE_ALIGN) * L1E_RX_FRAMES_PAGE)
80*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_CMB_SZ			(sizeof (uint32_t))
81*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_CMB_SZ			(sizeof (uint32_t))
82*10393SSaurabh.Mishra@Sun.COM 
83*10393SSaurabh.Mishra@Sun.COM #define	L1E_PROC_MAX	\
84*10393SSaurabh.Mishra@Sun.COM 	((L1E_RX_PAGE_SZ * L1E_RX_PAGES) / ETHERMAX)
85*10393SSaurabh.Mishra@Sun.COM #define	L1E_PROC_DEFAULT		(L1E_PROC_MAX / 4)
86*10393SSaurabh.Mishra@Sun.COM 
87*10393SSaurabh.Mishra@Sun.COM #define	L1E_INTRS                                               \
88*10393SSaurabh.Mishra@Sun.COM 	(INTR_DMA_RD_TO_RST | INTR_DMA_WR_TO_RST |              \
89*10393SSaurabh.Mishra@Sun.COM 	INTR_RX_PKT | INTR_TX_PKT | INTR_RX_FIFO_OFLOW |        \
90*10393SSaurabh.Mishra@Sun.COM 	INTR_TX_FIFO_UNDERRUN | INTR_SMB)
91*10393SSaurabh.Mishra@Sun.COM 
92*10393SSaurabh.Mishra@Sun.COM #define	L1E_RSS_IDT_TABLE0		0x1560
93*10393SSaurabh.Mishra@Sun.COM #define	L1E_RSS_CPU			0x157C
94*10393SSaurabh.Mishra@Sun.COM 
95*10393SSaurabh.Mishra@Sun.COM #define	L1E_SRAM_RX_FIFO_LEN		0x1524
96*10393SSaurabh.Mishra@Sun.COM 
97*10393SSaurabh.Mishra@Sun.COM #define	L1E_PHY_STATUS			0x1418
98*10393SSaurabh.Mishra@Sun.COM #define	PHY_STATUS_100M			0x00020000
99*10393SSaurabh.Mishra@Sun.COM 
100*10393SSaurabh.Mishra@Sun.COM #define	L1E_SMB_STAT_TIMER		0x15C4
101*10393SSaurabh.Mishra@Sun.COM 
102*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_EXT_RESET		0x0001
103*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PIPE_MOD		0x0002
104*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_BERT_START		0x0010
105*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_GL1E_25M_ENB		0x0020
106*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_LPW_EXIT		0x0040
107*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PHY_IDDQ		0x0080
108*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PHY_IDDQ_DIS		0x0100
109*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PCLK_SEL_DIS		0x0200
110*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_HIB_EN		0x0400
111*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_HIB_PULSE		0x0800
112*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_SEL_ANA_RESET		0x1000
113*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PHY_PLL_ON		0x2000
114*10393SSaurabh.Mishra@Sun.COM #define	GPHY_CTRL_PWDOWN_HW		0x4000
115*10393SSaurabh.Mishra@Sun.COM 
116*10393SSaurabh.Mishra@Sun.COM #define	RXF_VALID			0x01
117*10393SSaurabh.Mishra@Sun.COM 
118*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_PAGE0			0x15F4
119*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_PAGE1			0x15F5
120*10393SSaurabh.Mishra@Sun.COM 
121*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_PAGE0_ADDR_LO		0x1544
122*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_PAGE1_ADDR_LO		0x1548
123*10393SSaurabh.Mishra@Sun.COM 
124*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF_PAGE_SIZE		0x1558
125*10393SSaurabh.Mishra@Sun.COM 
126*10393SSaurabh.Mishra@Sun.COM #define	L1E_INT_TRIG_THRESH		0x15C8
127*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_TX_THRESH_MASK		0x0000FFFF
128*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_RX_THRESH_MASK		0xFFFF0000
129*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_TX_THRESH_SHIFT	0
130*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_RX_THRESH_SHIFT	16
131*10393SSaurabh.Mishra@Sun.COM 
132*10393SSaurabh.Mishra@Sun.COM #define	L1E_INT_TRIG_TIMER		0x15CC
133*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_TX_TIMER_MASK		0x0000FFFF
134*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_RX_TIMER_MASK		0x0000FFFF
135*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_TX_TIMER_SHIFT		0
136*10393SSaurabh.Mishra@Sun.COM #define	INT_TRIG_RX_TIMER_SHIFT		16
137*10393SSaurabh.Mishra@Sun.COM 
138*10393SSaurabh.Mishra@Sun.COM #define	TX_COALSC_PKT_1e		0x15C8  /* W: L1E */
139*10393SSaurabh.Mishra@Sun.COM #define	RX_COALSC_PKT_1e		0x15CA  /* W: L1E */
140*10393SSaurabh.Mishra@Sun.COM #define	TX_COALSC_TO_1e			0x15CC  /* W: L1E */
141*10393SSaurabh.Mishra@Sun.COM #define	RX_COALSC_TO_1e			0x15CE  /* W: L1E */
142*10393SSaurabh.Mishra@Sun.COM 
143*10393SSaurabh.Mishra@Sun.COM #define	L1E_HOST_RXF0_PAGEOFF		0x1800
144*10393SSaurabh.Mishra@Sun.COM #define	L1E_TPD_CONS_IDX		0x1804
145*10393SSaurabh.Mishra@Sun.COM #define	L1E_HOST_RXF1_PAGEOFF		0x1808
146*10393SSaurabh.Mishra@Sun.COM #define	L1E_HOST_RXF2_PAGEOFF		0x180C
147*10393SSaurabh.Mishra@Sun.COM #define	L1E_HOST_RXF3_PAGEOFF		0x1810
148*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_CMB0_ADDR_LO		0x1820
149*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF0_CMB1_ADDR_LO		0x1824
150*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF1_CMB0_ADDR_LO		0x1828
151*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF1_CMB1_ADDR_LO		0x182C
152*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF2_CMB0_ADDR_LO		0x1830
153*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF2_CMB1_ADDR_LO		0x1834
154*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF3_CMB0_ADDR_LO		0x1838
155*10393SSaurabh.Mishra@Sun.COM #define	L1E_RXF3_CMB1_ADDR_LO		0x183C
156*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_CMB_ADDR_LO		0x1840
157*10393SSaurabh.Mishra@Sun.COM #define	L1E_SMB_ADDR_LO			0x1844
158*10393SSaurabh.Mishra@Sun.COM 
159*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_SEQNO_MASK		0x0000FFFF
160*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_HASH_MASK		0xFFFF0000
161*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_SEQNO_SHIFT		0
162*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_HASH_SHIFT		16
163*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_SEQNO(x)		\
164*10393SSaurabh.Mishra@Sun.COM 	(((x) & L1E_RD_SEQNO_MASK) >> L1E_RD_SEQNO_SHIFT)
165*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CSUM_MASK		0x0000FFFF
166*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_LEN_MASK			0x3FFF0000
167*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CPU_MASK			0xC0000000
168*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CSUM_SHIFT		0
169*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_LEN_SHIFT		16
170*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CPU_SHIFT		30
171*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_CSUM(x)	\
172*10393SSaurabh.Mishra@Sun.COM 	(((x) & L1E_RD_CSUM_MASK) >> L1E_RD_CSUM_SHIFT)
173*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_BYTES(x)	\
174*10393SSaurabh.Mishra@Sun.COM 	(((x) & L1E_RD_LEN_MASK) >> L1E_RD_LEN_SHIFT)
175*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_CPU(x)	\
176*10393SSaurabh.Mishra@Sun.COM 	(((x) & L1E_RD_CPU_MASK) >> L1E_RD_CPU_SHIFT)
177*10393SSaurabh.Mishra@Sun.COM 
178*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_RSS_IPV4			0x00000001
179*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_RSS_IPV4_TCP		0x00000002
180*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_RSS_IPV6			0x00000004
181*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_RSS_IPV6_TCP		0x00000008
182*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_IPV6			0x00000010
183*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_IPV4_FRAG		0x00000020
184*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_IPV4_DF			0x00000040
185*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_802_3			0x00000080
186*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_VLAN			0x00000100
187*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_ERROR			0x00000200
188*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_IPV4			0x00000400
189*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_UDP			0x00000800
190*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_TCP			0x00001000
191*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_BCAST			0x00002000
192*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_MCAST			0x00004000
193*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_PAUSE			0x00008000
194*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CRC			0x00010000
195*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_CODE			0x00020000
196*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_DRIBBLE			0x00040000
197*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_RUNT			0x00080000
198*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_OFLOW			0x00100000
199*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_TRUNC			0x00200000
200*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_IPCSUM_NOK		0x00400000
201*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_TCP_UDPCSUM_NOK		0x00800000
202*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_LENGTH_NOK		0x01000000
203*10393SSaurabh.Mishra@Sun.COM #define	L1E_RD_DES_ADDR_FILTERED	0x02000000
204*10393SSaurabh.Mishra@Sun.COM 
205*10393SSaurabh.Mishra@Sun.COM /* TX descriptor fields */
206*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_VLAN_MASK		0xFFFF0000
207*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_PKT_INT			0x00008000
208*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_DMA_INT			0x00004000
209*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_VLAN_SHIFT		16
210*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_VLAN_TAG(x)	\
211*10393SSaurabh.Mishra@Sun.COM 	(((x) << 4) | ((x) >> 13) | (((x) >> 9) & 8))
212*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_BUFLEN_SHIFT		0
213*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_MSS			0xFFF80000
214*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_TSO_HDR			0x00040000
215*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_TCPHDR_LEN		0x0003C000
216*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPHDR_LEN		0x00003C00
217*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPV6HDR_LEN2		0x00003C00
218*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_LLC_SNAP			0x00000200
219*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_VLAN_TAGGED		0x00000100
220*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_UDPCSUM			0x00000080
221*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_TCPCSUM			0x00000040
222*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPCSUM			0x00000020
223*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPV6HDR_LEN1		0x000000E0
224*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_TSO			0x00000010
225*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_CXSUM			0x00000008
226*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_INSERT_VLAN_TAG		0x00000004
227*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPV6			0x00000002
228*10393SSaurabh.Mishra@Sun.COM 
229*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_CSUM_PLOADOFFSET		0x00FF0000
230*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_CSUM_XSUMOFFSET		0xFF000000
231*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_CSUM_XSUMOFFSET_SHIFT	24
232*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_CSUM_PLOADOFFSET_SHIFT	16
233*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_MSS_SHIFT		19
234*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_TCPHDR_LEN_SHIFT		14
235*10393SSaurabh.Mishra@Sun.COM #define	L1E_TD_IPHDR_LEN_SHIFT		10
236*10393SSaurabh.Mishra@Sun.COM 
237*10393SSaurabh.Mishra@Sun.COM #define	L1E_JUMBO_FRAMELEN		8132
238*10393SSaurabh.Mishra@Sun.COM 
239*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_JUMBO_THRESH		0x1584
240*10393SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_THRESH_MASK		0x000007FF
241*10393SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_THRESH_SHIFT		0
242*10393SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_THRESH_UNIT		8
243*10393SSaurabh.Mishra@Sun.COM #define	TX_JUMBO_THRESH_UNIT_SHIFT	3
244*10393SSaurabh.Mishra@Sun.COM 
245*10393SSaurabh.Mishra@Sun.COM /*
246*10393SSaurabh.Mishra@Sun.COM  * Statistics counters collected by the MAC.
247*10393SSaurabh.Mishra@Sun.COM  * AR81xx requires register access to get MAC statistics
248*10393SSaurabh.Mishra@Sun.COM  * and the format of statistics seems to be the same of L1
249*10393SSaurabh.Mishra@Sun.COM  * except for tx_abort field in TX stats. So keep it separate for simplicity.
250*10393SSaurabh.Mishra@Sun.COM  */
251*10393SSaurabh.Mishra@Sun.COM #define	L1E_RX_MIB_BASE			0x1700
252*10393SSaurabh.Mishra@Sun.COM #define	L1E_TX_MIB_BASE			0x1760
253*10393SSaurabh.Mishra@Sun.COM 
254*10393SSaurabh.Mishra@Sun.COM #pragma	pack(1)
255*10393SSaurabh.Mishra@Sun.COM typedef	struct smb {
256*10393SSaurabh.Mishra@Sun.COM 	/* Rx stats. */
257*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_frames;
258*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_bcast_frames;
259*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_mcast_frames;
260*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pause_frames;
261*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_control_frames;
262*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_crcerrs;
263*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_lenerrs;
264*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_bytes;
265*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_runts;
266*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_fragments;
267*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_64;
268*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_65_127;
269*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_128_255;
270*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_256_511;
271*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_512_1023;
272*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_1024_1518;
273*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_1519_max;
274*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_truncated;
275*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_fifo_oflows;
276*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_rrs_errs;
277*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_alignerrs;
278*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_bcast_bytes;
279*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_mcast_bytes;
280*10393SSaurabh.Mishra@Sun.COM 	uint32_t rx_pkts_filtered;
281*10393SSaurabh.Mishra@Sun.COM 	/* Tx stats. */
282*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_frames;
283*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_bcast_frames;
284*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_mcast_frames;
285*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pause_frames;
286*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_excess_defer;
287*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_control_frames;
288*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_deferred;
289*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_bytes;
290*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_64;
291*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_65_127;
292*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_128_255;
293*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_256_511;
294*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_512_1023;
295*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_1024_1518;
296*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_1519_max;
297*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_single_colls;
298*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_multi_colls;
299*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_late_colls;
300*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_excess_colls;
301*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_abort;
302*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_underrun;
303*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_desc_underrun;
304*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_lenerrs;
305*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_pkts_truncated;
306*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_bcast_bytes;
307*10393SSaurabh.Mishra@Sun.COM 	uint32_t tx_mcast_bytes;
308*10393SSaurabh.Mishra@Sun.COM } atge_l1e_smb_t;
309*10393SSaurabh.Mishra@Sun.COM #pragma	pack()
310*10393SSaurabh.Mishra@Sun.COM 
311*10393SSaurabh.Mishra@Sun.COM #ifdef __cplusplus
312*10393SSaurabh.Mishra@Sun.COM }
313*10393SSaurabh.Mishra@Sun.COM #endif
314*10393SSaurabh.Mishra@Sun.COM 
315*10393SSaurabh.Mishra@Sun.COM #endif	/* _ATGE_L1E_REG_H */
316