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