12608aefcSPyun YongHyeon /*- 2*4d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 3718cf2ccSPedro F. Giffuni * 42608aefcSPyun YongHyeon * Copyright (c) 2010, Pyun YongHyeon <yongari@FreeBSD.org> 52608aefcSPyun YongHyeon * All rights reserved. 62608aefcSPyun YongHyeon * 72608aefcSPyun YongHyeon * Redistribution and use in source and binary forms, with or without 82608aefcSPyun YongHyeon * modification, are permitted provided that the following conditions 92608aefcSPyun YongHyeon * are met: 102608aefcSPyun YongHyeon * 1. Redistributions of source code must retain the above copyright 112608aefcSPyun YongHyeon * notice unmodified, this list of conditions, and the following 122608aefcSPyun YongHyeon * disclaimer. 132608aefcSPyun YongHyeon * 2. Redistributions in binary form must reproduce the above copyright 142608aefcSPyun YongHyeon * notice, this list of conditions and the following disclaimer in the 152608aefcSPyun YongHyeon * documentation and/or other materials provided with the distribution. 162608aefcSPyun YongHyeon * 172608aefcSPyun YongHyeon * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 182608aefcSPyun YongHyeon * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 192608aefcSPyun YongHyeon * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 202608aefcSPyun YongHyeon * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 212608aefcSPyun YongHyeon * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 222608aefcSPyun YongHyeon * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 232608aefcSPyun YongHyeon * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 242608aefcSPyun YongHyeon * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 252608aefcSPyun YongHyeon * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 262608aefcSPyun YongHyeon * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 272608aefcSPyun YongHyeon * SUCH DAMAGE. 282608aefcSPyun YongHyeon */ 292608aefcSPyun YongHyeon 302608aefcSPyun YongHyeon #ifndef _IF_VTEREG_H 312608aefcSPyun YongHyeon #define _IF_VTEREG_H 322608aefcSPyun YongHyeon 332608aefcSPyun YongHyeon /* 342608aefcSPyun YongHyeon * RDC Semiconductor PCI vendor ID 352608aefcSPyun YongHyeon */ 362608aefcSPyun YongHyeon #define VENDORID_RDC 0x17F3 372608aefcSPyun YongHyeon 382608aefcSPyun YongHyeon /* 392608aefcSPyun YongHyeon * Vortex86 RDC R6040 FastEthernet device ID 402608aefcSPyun YongHyeon */ 412608aefcSPyun YongHyeon #define DEVICEID_RDC_R6040 0x6040 /* PMX-1000 */ 422608aefcSPyun YongHyeon 432608aefcSPyun YongHyeon /* MAC control register 0 */ 442608aefcSPyun YongHyeon #define VTE_MCR0 0x00 452608aefcSPyun YongHyeon #define MCR0_ACCPT_ERR 0x0001 462608aefcSPyun YongHyeon #define MCR0_RX_ENB 0x0002 472608aefcSPyun YongHyeon #define MCR0_ACCPT_RUNT 0x0004 482608aefcSPyun YongHyeon #define MCR0_ACCPT_LONG_PKT 0x0008 492608aefcSPyun YongHyeon #define MCR0_ACCPT_DRIBBLE 0x0010 502608aefcSPyun YongHyeon #define MCR0_PROMISC 0x0020 51d8f226b6SPyun YongHyeon #define MCR0_BROADCAST_DIS 0x0040 522608aefcSPyun YongHyeon #define MCR0_RX_EARLY_INTR 0x0080 532608aefcSPyun YongHyeon #define MCR0_MULTICAST 0x0100 542608aefcSPyun YongHyeon #define MCR0_FC_ENB 0x0200 552608aefcSPyun YongHyeon #define MCR0_TX_ENB 0x1000 562608aefcSPyun YongHyeon #define MCR0_TX_EARLY_INTR 0x4000 572608aefcSPyun YongHyeon #define MCR0_FULL_DUPLEX 0x8000 582608aefcSPyun YongHyeon 592608aefcSPyun YongHyeon /* MAC control register 1 */ 602608aefcSPyun YongHyeon #define VTE_MCR1 0x04 612608aefcSPyun YongHyeon #define MCR1_MAC_RESET 0x0001 622608aefcSPyun YongHyeon #define MCR1_MAC_LOOPBACK 0x0002 632608aefcSPyun YongHyeon #define MCR1_EXCESS_COL_RETRANS_DIS 0x0004 642608aefcSPyun YongHyeon #define MCR1_AUTO_CHG_DUPLEX 0x0008 652608aefcSPyun YongHyeon #define MCR1_PKT_LENGTH_1518 0x0010 662608aefcSPyun YongHyeon #define MCR1_PKT_LENGTH_1522 0x0020 672608aefcSPyun YongHyeon #define MCR1_PKT_LENGTH_1534 0x0030 682608aefcSPyun YongHyeon #define MCR1_PKT_LENGTH_1537 0x0000 692608aefcSPyun YongHyeon #define MCR1_EARLY_INTR_THRESH_1129 0x0000 702608aefcSPyun YongHyeon #define MCR1_EARLY_INTR_THRESH_1257 0x0040 712608aefcSPyun YongHyeon #define MCR1_EARLY_INTR_THRESH_1385 0x0080 722608aefcSPyun YongHyeon #define MCR1_EARLY_INTR_THRESH_1513 0x00C0 732608aefcSPyun YongHyeon #define MCR1_EXCESS_COL_RETRY_16 0x0000 742608aefcSPyun YongHyeon #define MCR1_EXCESS_COL_RETRY_32 0x0100 752608aefcSPyun YongHyeon #define MCR1_FC_ACTIVE 0x0200 762608aefcSPyun YongHyeon #define MCR1_RX_DESC_HASH_IDX 0x4000 772608aefcSPyun YongHyeon #define MCR1_RX_UNICAST_HASH 0x8000 782608aefcSPyun YongHyeon 792608aefcSPyun YongHyeon #define MCR1_PKT_LENGTH_MASK 0x0030 802608aefcSPyun YongHyeon #define MCR1_EARLY_INTR_THRESH_MASK 0x00C0 812608aefcSPyun YongHyeon 822608aefcSPyun YongHyeon /* MAC bus control register */ 832608aefcSPyun YongHyeon #define VTE_MBCR 0x08 842608aefcSPyun YongHyeon #define MBCR_FIFO_XFER_LENGTH_4 0x0000 852608aefcSPyun YongHyeon #define MBCR_FIFO_XFER_LENGTH_8 0x0001 862608aefcSPyun YongHyeon #define MBCR_FIFO_XFER_LENGTH_16 0x0002 872608aefcSPyun YongHyeon #define MBCR_FIFO_XFER_LENGTH_32 0x0003 882608aefcSPyun YongHyeon #define MBCR_TX_FIFO_THRESH_16 0x0000 892608aefcSPyun YongHyeon #define MBCR_TX_FIFO_THRESH_32 0x0004 902608aefcSPyun YongHyeon #define MBCR_TX_FIFO_THRESH_64 0x0008 912608aefcSPyun YongHyeon #define MBCR_TX_FIFO_THRESH_96 0x000C 922608aefcSPyun YongHyeon #define MBCR_RX_FIFO_THRESH_8 0x0000 932608aefcSPyun YongHyeon #define MBCR_RX_FIFO_THRESH_16 0x0010 942608aefcSPyun YongHyeon #define MBCR_RX_FIFO_THRESH_32 0x0020 952608aefcSPyun YongHyeon #define MBCR_RX_FIFO_THRESH_64 0x0030 962608aefcSPyun YongHyeon #define MBCR_SDRAM_BUS_REQ_TIMER_MASK 0x1F00 972608aefcSPyun YongHyeon #define MBCR_SDRAM_BUS_REQ_TIMER_SHIFT 8 982608aefcSPyun YongHyeon #define MBCR_SDRAM_BUS_REQ_TIMER_DEFAULT 0x1F00 992608aefcSPyun YongHyeon 1002608aefcSPyun YongHyeon /* MAC TX interrupt control register */ 1012608aefcSPyun YongHyeon #define VTE_MTICR 0x0C 1022608aefcSPyun YongHyeon #define MTICR_TX_TIMER_MASK 0x001F 1032608aefcSPyun YongHyeon #define MTICR_TX_BUNDLE_MASK 0x0F00 1042608aefcSPyun YongHyeon #define VTE_IM_TX_TIMER_DEFAULT 0x7F 1052608aefcSPyun YongHyeon #define VTE_IM_TX_BUNDLE_DEFAULT 15 1062608aefcSPyun YongHyeon 1072608aefcSPyun YongHyeon #define VTE_IM_TIMER_MIN 0 1082608aefcSPyun YongHyeon #define VTE_IM_TIMER_MAX 82 1092608aefcSPyun YongHyeon #define VTE_IM_TIMER_MASK 0x001F 1102608aefcSPyun YongHyeon #define VTE_IM_TIMER_SHIFT 0 1112608aefcSPyun YongHyeon #define VTE_IM_BUNDLE_MIN 1 1122608aefcSPyun YongHyeon #define VTE_IM_BUNDLE_MAX 15 1132608aefcSPyun YongHyeon #define VTE_IM_BUNDLE_SHIFT 8 1142608aefcSPyun YongHyeon 1152608aefcSPyun YongHyeon /* MAC RX interrupt control register */ 1162608aefcSPyun YongHyeon #define VTE_MRICR 0x10 1172608aefcSPyun YongHyeon #define MRICR_RX_TIMER_MASK 0x001F 1182608aefcSPyun YongHyeon #define MRICR_RX_BUNDLE_MASK 0x0F00 1192608aefcSPyun YongHyeon #define VTE_IM_RX_TIMER_DEFAULT 0x7F 1202608aefcSPyun YongHyeon #define VTE_IM_RX_BUNDLE_DEFAULT 15 1212608aefcSPyun YongHyeon 1222608aefcSPyun YongHyeon /* MAC TX poll command register */ 1232608aefcSPyun YongHyeon #define VTE_TX_POLL 0x14 1242608aefcSPyun YongHyeon #define TX_POLL_START 0x0001 1252608aefcSPyun YongHyeon 1262608aefcSPyun YongHyeon /* MAC RX buffer size register */ 1272608aefcSPyun YongHyeon #define VTE_MRBSR 0x18 1282608aefcSPyun YongHyeon #define VTE_MRBSR_SIZE_MASK 0x03FF 1292608aefcSPyun YongHyeon 1302608aefcSPyun YongHyeon /* MAC RX descriptor control register */ 1312608aefcSPyun YongHyeon #define VTE_MRDCR 0x1A 1322608aefcSPyun YongHyeon #define VTE_MRDCR_RESIDUE_MASK 0x00FF 1332608aefcSPyun YongHyeon #define VTE_MRDCR_RX_PAUSE_THRESH_MASK 0xFF00 1342608aefcSPyun YongHyeon #define VTE_MRDCR_RX_PAUSE_THRESH_SHIFT 8 1352608aefcSPyun YongHyeon 1362608aefcSPyun YongHyeon /* MAC Last status register */ 1372608aefcSPyun YongHyeon #define VTE_MLSR 0x1C 1382608aefcSPyun YongHyeon #define MLSR_MULTICAST 0x0001 1392608aefcSPyun YongHyeon #define MLSR_BROADCAST 0x0002 1402608aefcSPyun YongHyeon #define MLSR_CRC_ERR 0x0004 1412608aefcSPyun YongHyeon #define MLSR_RUNT 0x0008 1422608aefcSPyun YongHyeon #define MLSR_LONG_PKT 0x0010 1432608aefcSPyun YongHyeon #define MLSR_TRUNC 0x0020 1442608aefcSPyun YongHyeon #define MLSR_DRIBBLE 0x0040 1452608aefcSPyun YongHyeon #define MLSR_PHY_ERR 0x0080 1462608aefcSPyun YongHyeon #define MLSR_TX_FIFO_UNDERRUN 0x0200 1472608aefcSPyun YongHyeon #define MLSR_RX_DESC_UNAVAIL 0x0400 1482608aefcSPyun YongHyeon #define MLSR_TX_EXCESS_COL 0x2000 1492608aefcSPyun YongHyeon #define MLSR_TX_LATE_COL 0x4000 1502608aefcSPyun YongHyeon #define MLSR_RX_FIFO_OVERRUN 0x8000 1512608aefcSPyun YongHyeon 1522608aefcSPyun YongHyeon /* MAC MDIO control register */ 1532608aefcSPyun YongHyeon #define VTE_MMDIO 0x20 1542608aefcSPyun YongHyeon #define MMDIO_REG_ADDR_MASK 0x001F 1552608aefcSPyun YongHyeon #define MMDIO_PHY_ADDR_MASK 0x1F00 1562608aefcSPyun YongHyeon #define MMDIO_READ 0x2000 1572608aefcSPyun YongHyeon #define MMDIO_WRITE 0x4000 1582608aefcSPyun YongHyeon #define MMDIO_REG_ADDR_SHIFT 0 1592608aefcSPyun YongHyeon #define MMDIO_PHY_ADDR_SHIFT 8 1602608aefcSPyun YongHyeon 1612608aefcSPyun YongHyeon /* MAC MDIO read data register */ 1622608aefcSPyun YongHyeon #define VTE_MMRD 0x24 1632608aefcSPyun YongHyeon #define MMRD_DATA_MASK 0xFFFF 1642608aefcSPyun YongHyeon 1652608aefcSPyun YongHyeon /* MAC MDIO write data register */ 1662608aefcSPyun YongHyeon #define VTE_MMWD 0x28 1672608aefcSPyun YongHyeon #define MMWD_DATA_MASK 0xFFFF 1682608aefcSPyun YongHyeon 1692608aefcSPyun YongHyeon /* MAC TX descriptor start address 0 */ 1702608aefcSPyun YongHyeon #define VTE_MTDSA0 0x2C 1712608aefcSPyun YongHyeon 1722608aefcSPyun YongHyeon /* MAC TX descriptor start address 1 */ 1732608aefcSPyun YongHyeon #define VTE_MTDSA1 0x30 1742608aefcSPyun YongHyeon 1752608aefcSPyun YongHyeon /* MAC RX descriptor start address 0 */ 1762608aefcSPyun YongHyeon #define VTE_MRDSA0 0x34 1772608aefcSPyun YongHyeon 1782608aefcSPyun YongHyeon /* MAC RX descriptor start address 1 */ 1792608aefcSPyun YongHyeon #define VTE_MRDSA1 0x38 1802608aefcSPyun YongHyeon 1812608aefcSPyun YongHyeon /* MAC Interrupt status register */ 1822608aefcSPyun YongHyeon #define VTE_MISR 0x3C 1832608aefcSPyun YongHyeon #define MISR_RX_DONE 0x0001 1842608aefcSPyun YongHyeon #define MISR_RX_DESC_UNAVAIL 0x0002 1852608aefcSPyun YongHyeon #define MISR_RX_FIFO_FULL 0x0004 1862608aefcSPyun YongHyeon #define MISR_RX_EARLY_INTR 0x0008 1872608aefcSPyun YongHyeon #define MISR_TX_DONE 0x0010 1882608aefcSPyun YongHyeon #define MISR_TX_EARLY_INTR 0x0080 1892608aefcSPyun YongHyeon #define MISR_EVENT_CNT_OFLOW 0x0100 1902608aefcSPyun YongHyeon #define MISR_PHY_MEDIA_CHG 0x0200 1912608aefcSPyun YongHyeon 1922608aefcSPyun YongHyeon /* MAC Interrupt enable register */ 1932608aefcSPyun YongHyeon #define VTE_MIER 0x40 1942608aefcSPyun YongHyeon 1952608aefcSPyun YongHyeon #define VTE_INTRS \ 1962608aefcSPyun YongHyeon (MISR_RX_DONE | MISR_RX_DESC_UNAVAIL | MISR_RX_FIFO_FULL | \ 1972608aefcSPyun YongHyeon MISR_TX_DONE | MISR_EVENT_CNT_OFLOW) 1982608aefcSPyun YongHyeon 1992608aefcSPyun YongHyeon /* MAC Event counter interrupt status register */ 2002608aefcSPyun YongHyeon #define VTE_MECISR 0x44 2012608aefcSPyun YongHyeon #define MECISR_EC_RX_DONE 0x0001 2022608aefcSPyun YongHyeon #define MECISR_EC_MULTICAST 0x0002 2032608aefcSPyun YongHyeon #define MECISR_EC_BROADCAST 0x0004 2042608aefcSPyun YongHyeon #define MECISR_EC_CRC_ERR 0x0008 2052608aefcSPyun YongHyeon #define MECISR_EC_RUNT 0x0010 2062608aefcSPyun YongHyeon #define MESCIR_EC_LONG_PKT 0x0020 2072608aefcSPyun YongHyeon #define MESCIR_EC_RX_DESC_UNAVAIL 0x0080 2082608aefcSPyun YongHyeon #define MESCIR_EC_RX_FIFO_FULL 0x0100 2092608aefcSPyun YongHyeon #define MESCIR_EC_TX_DONE 0x0200 2102608aefcSPyun YongHyeon #define MESCIR_EC_LATE_COL 0x0400 2112608aefcSPyun YongHyeon #define MESCIR_EC_TX_UNDERRUN 0x0800 2122608aefcSPyun YongHyeon 2132608aefcSPyun YongHyeon /* MAC Event counter interrupt enable register */ 2142608aefcSPyun YongHyeon #define VTE_MECIER 0x48 2152608aefcSPyun YongHyeon #define VTE_MECIER_INTRS \ 2162608aefcSPyun YongHyeon (MECISR_EC_RX_DONE | MECISR_EC_MULTICAST | MECISR_EC_BROADCAST | \ 2172608aefcSPyun YongHyeon MECISR_EC_CRC_ERR | MECISR_EC_RUNT | MESCIR_EC_LONG_PKT | \ 2182608aefcSPyun YongHyeon MESCIR_EC_RX_DESC_UNAVAIL | MESCIR_EC_RX_FIFO_FULL | \ 2192608aefcSPyun YongHyeon MESCIR_EC_TX_DONE | MESCIR_EC_LATE_COL | MESCIR_EC_TX_UNDERRUN) 2202608aefcSPyun YongHyeon 2212608aefcSPyun YongHyeon #define VTE_CNT_RX_DONE 0x50 2222608aefcSPyun YongHyeon 2232608aefcSPyun YongHyeon #define VTE_CNT_MECNT0 0x52 2242608aefcSPyun YongHyeon 2252608aefcSPyun YongHyeon #define VTE_CNT_MECNT1 0x54 2262608aefcSPyun YongHyeon 2272608aefcSPyun YongHyeon #define VTE_CNT_MECNT2 0x56 2282608aefcSPyun YongHyeon 2292608aefcSPyun YongHyeon #define VTE_CNT_MECNT3 0x58 2302608aefcSPyun YongHyeon 2312608aefcSPyun YongHyeon #define VTE_CNT_TX_DONE 0x5A 2322608aefcSPyun YongHyeon 2332608aefcSPyun YongHyeon #define VTE_CNT_MECNT4 0x5C 2342608aefcSPyun YongHyeon 2352608aefcSPyun YongHyeon #define VTE_CNT_PAUSE 0x5E 2362608aefcSPyun YongHyeon 2372608aefcSPyun YongHyeon /* MAC Hash table register */ 2382608aefcSPyun YongHyeon #define VTE_MAR0 0x60 2392608aefcSPyun YongHyeon #define VTE_MAR1 0x62 2402608aefcSPyun YongHyeon #define VTE_MAR2 0x64 2412608aefcSPyun YongHyeon #define VTE_MAR3 0x66 2422608aefcSPyun YongHyeon 2432608aefcSPyun YongHyeon /* MAC station address and multicast address register */ 2442608aefcSPyun YongHyeon #define VTE_MID0L 0x68 2452608aefcSPyun YongHyeon #define VTE_MID0M 0x6A 2462608aefcSPyun YongHyeon #define VTE_MID0H 0x6C 2472608aefcSPyun YongHyeon #define VTE_MID1L 0x70 2482608aefcSPyun YongHyeon #define VTE_MID1M 0x72 2492608aefcSPyun YongHyeon #define VTE_MID1H 0x74 2502608aefcSPyun YongHyeon #define VTE_MID2L 0x78 2512608aefcSPyun YongHyeon #define VTE_MID2M 0x7A 2522608aefcSPyun YongHyeon #define VTE_MID2H 0x7C 2532608aefcSPyun YongHyeon #define VTE_MID3L 0x80 2542608aefcSPyun YongHyeon #define VTE_MID3M 0x82 2552608aefcSPyun YongHyeon #define VTE_MID3H 0x84 2562608aefcSPyun YongHyeon 2572608aefcSPyun YongHyeon #define VTE_RXFILTER_PEEFECT_BASE VTE_MID1L 2582608aefcSPyun YongHyeon #define VTE_RXFILT_PERFECT_CNT 3 2592608aefcSPyun YongHyeon 2602608aefcSPyun YongHyeon /* MAC PHY status change configuration register */ 2612608aefcSPyun YongHyeon #define VTE_MPSCCR 0x88 2622608aefcSPyun YongHyeon #define MPSCCR_TIMER_DIVIDER_MASK 0x0007 2632608aefcSPyun YongHyeon #define MPSCCR_PHY_ADDR_MASK 0x1F00 2642608aefcSPyun YongHyeon #define MPSCCR_PHY_STS_CHG_ENB 0x8000 2652608aefcSPyun YongHyeon #define MPSCCR_PHY_ADDR_SHIFT 8 2662608aefcSPyun YongHyeon 2672608aefcSPyun YongHyeon /* MAC PHY status register2 */ 2682608aefcSPyun YongHyeon #define VTE_MPSR 0x8A 2692608aefcSPyun YongHyeon #define MPSR_LINK_UP 0x0001 2702608aefcSPyun YongHyeon #define MPSR_SPEED_100 0x0002 2712608aefcSPyun YongHyeon #define MPSR_FULL_DUPLEX 0x0004 2722608aefcSPyun YongHyeon 2732608aefcSPyun YongHyeon /* MAC Status machine(undocumented). */ 2742608aefcSPyun YongHyeon #define VTE_MACSM 0xAC 2752608aefcSPyun YongHyeon 2762608aefcSPyun YongHyeon /* MDC Speed control register */ 2772608aefcSPyun YongHyeon #define VTE_MDCSC 0xB6 2782608aefcSPyun YongHyeon #define MDCSC_DEFAULT 0x0030 2792608aefcSPyun YongHyeon 2802608aefcSPyun YongHyeon /* MAC Identifier and revision register */ 2812608aefcSPyun YongHyeon #define VTE_MACID_REV 0xBC 2822608aefcSPyun YongHyeon #define VTE_MACID_REV_MASK 0x00FF 2832608aefcSPyun YongHyeon #define VTE_MACID_MASK 0xFF00 2842608aefcSPyun YongHyeon #define VTE_MACID_REV_SHIFT 0 2852608aefcSPyun YongHyeon #define VTE_MACID_SHIFT 8 2862608aefcSPyun YongHyeon 2872608aefcSPyun YongHyeon /* MAC Identifier register */ 2882608aefcSPyun YongHyeon #define VTE_MACID 0xBE 2892608aefcSPyun YongHyeon 2902608aefcSPyun YongHyeon /* 2912608aefcSPyun YongHyeon * RX descriptor 2922608aefcSPyun YongHyeon * - Added one more uint16_t member to align it 4 on bytes boundary. 2932608aefcSPyun YongHyeon * This does not affect operation of controller since it includes 2942608aefcSPyun YongHyeon * next pointer address. 2952608aefcSPyun YongHyeon */ 2962608aefcSPyun YongHyeon struct vte_rx_desc { 2972608aefcSPyun YongHyeon uint16_t drst; 2982608aefcSPyun YongHyeon uint16_t drlen; 2992608aefcSPyun YongHyeon uint32_t drbp; 3002608aefcSPyun YongHyeon uint32_t drnp; 3012608aefcSPyun YongHyeon uint16_t hidx; 3022608aefcSPyun YongHyeon uint16_t rsvd2; 3032608aefcSPyun YongHyeon uint16_t rsvd3; 3042608aefcSPyun YongHyeon uint16_t __pad; /* Not actual descriptor member. */ 3052608aefcSPyun YongHyeon }; 3062608aefcSPyun YongHyeon 3072608aefcSPyun YongHyeon #define VTE_DRST_MID_MASK 0x0003 3082608aefcSPyun YongHyeon #define VTE_DRST_MID_HIT 0x0004 3092608aefcSPyun YongHyeon #define VTE_DRST_MULTICAST_HIT 0x0008 3102608aefcSPyun YongHyeon #define VTE_DRST_MULTICAST 0x0010 3112608aefcSPyun YongHyeon #define VTE_DRST_BROADCAST 0x0020 3122608aefcSPyun YongHyeon #define VTE_DRST_CRC_ERR 0x0040 3132608aefcSPyun YongHyeon #define VTE_DRST_RUNT 0x0080 3142608aefcSPyun YongHyeon #define VTE_DRST_LONG 0x0100 3152608aefcSPyun YongHyeon #define VTE_DRST_TRUNC 0x0200 3162608aefcSPyun YongHyeon #define VTE_DRST_DRIBBLE 0x0400 3172608aefcSPyun YongHyeon #define VTE_DRST_PHY_ERR 0x0800 3182608aefcSPyun YongHyeon #define VTE_DRST_RX_OK 0x4000 3192608aefcSPyun YongHyeon #define VTE_DRST_RX_OWN 0x8000 3202608aefcSPyun YongHyeon 3212608aefcSPyun YongHyeon #define VTE_RX_LEN(x) ((x) & 0x7FF) 3222608aefcSPyun YongHyeon 3232608aefcSPyun YongHyeon #define VTE_RX_HIDX(x) ((x) & 0x3F) 3242608aefcSPyun YongHyeon 3252608aefcSPyun YongHyeon /* 3262608aefcSPyun YongHyeon * TX descriptor 3272608aefcSPyun YongHyeon * - Added one more uint32_t member to align it on 16 bytes boundary. 3282608aefcSPyun YongHyeon */ 3292608aefcSPyun YongHyeon struct vte_tx_desc { 3302608aefcSPyun YongHyeon uint16_t dtst; 3312608aefcSPyun YongHyeon uint16_t dtlen; 3322608aefcSPyun YongHyeon uint32_t dtbp; 3332608aefcSPyun YongHyeon uint32_t dtnp; 3342608aefcSPyun YongHyeon uint32_t __pad; /* Not actual descriptor member. */ 3352608aefcSPyun YongHyeon }; 3362608aefcSPyun YongHyeon 3372608aefcSPyun YongHyeon #define VTE_DTST_EXCESS_COL 0x0010 3382608aefcSPyun YongHyeon #define VTE_DTST_LATE_COL 0x0020 3392608aefcSPyun YongHyeon #define VTE_DTST_UNDERRUN 0x0040 3402608aefcSPyun YongHyeon #define VTE_DTST_NO_CRC 0x2000 3412608aefcSPyun YongHyeon #define VTE_DTST_TX_OK 0x4000 3422608aefcSPyun YongHyeon #define VTE_DTST_TX_OWN 0x8000 3432608aefcSPyun YongHyeon 3442608aefcSPyun YongHyeon #define VTE_TX_LEN(x) ((x) & 0x7FF) 3452608aefcSPyun YongHyeon 3462608aefcSPyun YongHyeon #endif /* _IF_VTEREG_H */ 347