[BACK]Return to if_vgereg.h CVS log [TXT][DIR] Up to [local] / sys / dev / pci

Annotation of sys/dev/pci/if_vgereg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: if_vgereg.h,v 1.1 2004/12/01 01:29:00 pvalchev Exp $  */
        !             2: /*     $FreeBSD: if_vgereg.h,v 1.1 2004/09/10 20:57:45 wpaul Exp $     */
        !             3: /*
        !             4:  * Copyright (c) 2004
        !             5:  *     Bill Paul <wpaul@windriver.com>.  All rights reserved.
        !             6:  *
        !             7:  * Redistribution and use in source and binary forms, with or without
        !             8:  * modification, are permitted provided that the following conditions
        !             9:  * are met:
        !            10:  * 1. Redistributions of source code must retain the above copyright
        !            11:  *    notice, this list of conditions and the following disclaimer.
        !            12:  * 2. Redistributions in binary form must reproduce the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer in the
        !            14:  *    documentation and/or other materials provided with the distribution.
        !            15:  * 3. All advertising materials mentioning features or use of this software
        !            16:  *    must display the following acknowledgement:
        !            17:  *     This product includes software developed by Bill Paul.
        !            18:  * 4. Neither the name of the author nor the names of any co-contributors
        !            19:  *    may be used to endorse or promote products derived from this software
        !            20:  *    without specific prior written permission.
        !            21:  *
        !            22:  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
        !            23:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            24:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            25:  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
        !            26:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
        !            27:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
        !            28:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
        !            29:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
        !            30:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
        !            31:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
        !            32:  * THE POSSIBILITY OF SUCH DAMAGE.
        !            33:  */
        !            34:
        !            35: /*
        !            36:  * Register definitions for the VIA VT6122 gigabit ethernet controller.
        !            37:  * Definitions for the built-in copper PHY can be found in vgphy.h.
        !            38:  *
        !            39:  * The VT612x controllers have 256 bytes of register space. The
        !            40:  * manual seems to imply that the registers should all be accessed
        !            41:  * using 32-bit I/O cycles, but some of them are less than 32 bits
        !            42:  * wide. Go figure.
        !            43:  */
        !            44:
        !            45: #ifndef _IF_VGEREG_H_
        !            46: #define _IF_VGEREG_H_
        !            47:
        !            48: #define VIA_VENDORID           0x1106
        !            49: #define VIA_DEVICEID_61XX      0x3119
        !            50:
        !            51: #define VGE_PAR0               0x00    /* physical address register */
        !            52: #define VGE_PAR1               0x02
        !            53: #define VGE_PAR2               0x04
        !            54: #define VGE_RXCTL              0x06    /* RX control register */
        !            55: #define VGE_TXCTL              0x07    /* TX control register */
        !            56: #define VGE_CRS0               0x08    /* Global cmd register 0 (w to set) */
        !            57: #define VGE_CRS1               0x09    /* Global cmd register 1 (w to set) */
        !            58: #define VGE_CRS2               0x0A    /* Global cmd register 2 (w to set) */
        !            59: #define VGE_CRS3               0x0B    /* Global cmd register 3 (w to set) */
        !            60: #define VGE_CRC0               0x0C    /* Global cmd register 0 (w to clr) */
        !            61: #define VGE_CRC1               0x0D    /* Global cmd register 1 (w to clr) */
        !            62: #define VGE_CRC2               0x0E    /* Global cmd register 2 (w to clr) */
        !            63: #define VGE_CRC3               0x0F    /* Global cmd register 3 (w to clr) */
        !            64: #define VGE_MAR0               0x10    /* Mcast hash/CAM register 0 */
        !            65: #define VGE_MAR1               0x14    /* Mcast hash/CAM register 1 */
        !            66: #define VGE_CAM0               0x10
        !            67: #define VGE_CAM1               0x11
        !            68: #define VGE_CAM2               0x12
        !            69: #define VGE_CAM3               0x13
        !            70: #define VGE_CAM4               0x14
        !            71: #define VGE_CAM5               0x15
        !            72: #define VGE_CAM6               0x16
        !            73: #define VGE_CAM7               0x17
        !            74: #define VGE_TXDESC_HIADDR      0x18    /* Hi part of 64bit txdesc base addr */
        !            75: #define VGE_DATABUF_HIADDR     0x1D    /* Hi part of 64bit data buffer addr */
        !            76: #define VGE_INTCTL0            0x20    /* interrupt control register */
        !            77: #define VGE_RXSUPPTHR          0x20
        !            78: #define VGE_TXSUPPTHR          0x20
        !            79: #define VGE_INTHOLDOFF         0x20
        !            80: #define VGE_INTCTL1            0x21    /* interrupt control register */
        !            81: #define VGE_TXHOSTERR          0x22    /* TX host error status */
        !            82: #define VGE_RXHOSTERR          0x23    /* RX host error status */
        !            83: #define VGE_ISR                        0x24    /* Interrupt status register */
        !            84: #define VGE_IMR                        0x28    /* Interrupt mask register */
        !            85: #define VGE_TXSTS_PORT         0x2C    /* Transmit status port (???) */
        !            86: #define VGE_TXQCSRS            0x30    /* TX queue ctl/status set */
        !            87: #define VGE_RXQCSRS            0x32    /* RX queue ctl/status set */
        !            88: #define VGE_TXQCSRC            0x34    /* TX queue ctl/status clear */
        !            89: #define VGE_RXQCSRC            0x36    /* RX queue ctl/status clear */
        !            90: #define VGE_RXDESC_ADDR_LO     0x38    /* RX desc base addr (lo 32 bits) */
        !            91: #define VGE_RXDESC_CONSIDX     0x3C    /* Current RX descriptor index */
        !            92: #define VGE_RXQTIMER           0x3E    /* RX queue timer pend register */
        !            93: #define VGE_TXQTIMER           0x3F    /* TX queue timer pend register */
        !            94: #define VGE_TXDESC_ADDR_LO0    0x40    /* TX desc0 base addr (lo 32 bits) */
        !            95: #define VGE_TXDESC_ADDR_LO1    0x44    /* TX desc1 base addr (lo 32 bits) */
        !            96: #define VGE_TXDESC_ADDR_LO2    0x48    /* TX desc2 base addr (lo 32 bits) */
        !            97: #define VGE_TXDESC_ADDR_LO3    0x4C    /* TX desc3 base addr (lo 32 bits) */
        !            98: #define VGE_RXDESCNUM          0x50    /* Size of RX desc ring */
        !            99: #define VGE_TXDESCNUM          0x52    /* Size of TX desc ring */
        !           100: #define VGE_TXDESC_CONSIDX0    0x54    /* Current TX descriptor index */
        !           101: #define VGE_TXDESC_CONSIDX1    0x56    /* Current TX descriptor index */
        !           102: #define VGE_TXDESC_CONSIDX2    0x58    /* Current TX descriptor index */
        !           103: #define VGE_TXDESC_CONSIDX3    0x5A    /* Current TX descriptor index */
        !           104: #define VGE_TX_PAUSE_TIMER     0x5C    /* TX pause frame timer */
        !           105: #define VGE_RXDESC_RESIDUECNT  0x5E    /* RX descriptor residue count */
        !           106: #define VGE_FIFOTEST0          0x60    /* FIFO test register */
        !           107: #define VGE_FIFOTEST1          0x64    /* FIFO test register */
        !           108: #define VGE_CAMADDR            0x68    /* CAM address register */
        !           109: #define VGE_CAMCTL             0x69    /* CAM control register */
        !           110: #define VGE_GFTEST             0x6A
        !           111: #define VGE_FTSCMD             0x6B
        !           112: #define VGE_MIICFG             0x6C    /* MII port config register */
        !           113: #define VGE_MIISTS             0x6D    /* MII port status register */
        !           114: #define VGE_PHYSTS0            0x6E    /* PHY status register */
        !           115: #define VGE_PHYSTS1            0x6F    /* PHY status register */
        !           116: #define VGE_MIICMD             0x70    /* MII command register */
        !           117: #define VGE_MIIADDR            0x71    /* MII address register */
        !           118: #define VGE_MIIDATA            0x72    /* MII data register */
        !           119: #define VGE_SSTIMER            0x74    /* single-shot timer */
        !           120: #define VGE_PTIMER             0x76    /* periodic timer */
        !           121: #define VGE_CHIPCFG0           0x78    /* chip config A */
        !           122: #define VGE_CHIPCFG1           0x79    /* chip config B */
        !           123: #define VGE_CHIPCFG2           0x7A    /* chip config C */
        !           124: #define VGE_CHIPCFG3           0x7B    /* chip config D */
        !           125: #define VGE_DMACFG0            0x7C    /* DMA config 0 */
        !           126: #define VGE_DMACFG1            0x7D    /* DMA config 1 */
        !           127: #define VGE_RXCFG              0x7E    /* MAC RX config */
        !           128: #define VGE_TXCFG              0x7F    /* MAC TX config */
        !           129: #define VGE_PWRMGMT            0x82    /* power management shadow register */
        !           130: #define VGE_PWRSTAT            0x83    /* power state shadow register */
        !           131: #define VGE_MIBCSR             0x84    /* MIB control/status register */
        !           132: #define VGE_SWEEDATA           0x85    /* EEPROM software loaded data */
        !           133: #define VGE_MIBDATA            0x88    /* MIB data register */
        !           134: #define VGE_EEWRDAT            0x8C    /* EEPROM embedded write */
        !           135: #define VGE_EECSUM             0x92    /* EEPROM checksum */
        !           136: #define VGE_EECSR              0x93    /* EEPROM control/status */
        !           137: #define VGE_EERDDAT            0x94    /* EEPROM embedded read */
        !           138: #define VGE_EEADDR             0x96    /* EEPROM address */
        !           139: #define VGE_EECMD              0x97    /* EEPROM embedded command */
        !           140: #define VGE_CHIPSTRAP          0x99    /* Chip jumper strapping status */
        !           141: #define VGE_MEDIASTRAP         0x9B    /* Media jumper strapping */
        !           142: #define VGE_DIAGSTS            0x9C    /* Chip diagnostic status */
        !           143: #define VGE_DBGCTL             0x9E    /* Chip debug control */
        !           144: #define VGE_DIAGCTL            0x9F    /* Chip diagnostic control */
        !           145: #define VGE_WOLCR0S            0xA0    /* WOL0 event set */
        !           146: #define VGE_WOLCR1S            0xA1    /* WOL1 event set */
        !           147: #define VGE_PWRCFGS            0xA2    /* Power management config set */
        !           148: #define VGE_WOLCFGS            0xA3    /* WOL config set */
        !           149: #define VGE_WOLCR0C            0xA4    /* WOL0 event clear */
        !           150: #define VGE_WOLCR1C            0xA5    /* WOL1 event clear */
        !           151: #define VGE_PWRCFGC            0xA6    /* Power management config clear */
        !           152: #define VGE_WOLCFGC            0xA7    /* WOL config clear */
        !           153: #define VGE_WOLSR0S            0xA8    /* WOL status set */
        !           154: #define VGE_WOLSR1S            0xA9    /* WOL status set */
        !           155: #define VGE_WOLSR0C            0xAC    /* WOL status clear */
        !           156: #define VGE_WOLSR1C            0xAD    /* WOL status clear */
        !           157: #define VGE_WAKEPAT_CRC0       0xB0
        !           158: #define VGE_WAKEPAT_CRC1       0xB2
        !           159: #define VGE_WAKEPAT_CRC2       0xB4
        !           160: #define VGE_WAKEPAT_CRC3       0xB6
        !           161: #define VGE_WAKEPAT_CRC4       0xB8
        !           162: #define VGE_WAKEPAT_CRC5       0xBA
        !           163: #define VGE_WAKEPAT_CRC6       0xBC
        !           164: #define VGE_WAKEPAT_CRC7       0xBE
        !           165: #define VGE_WAKEPAT_MSK0_0     0xC0
        !           166: #define VGE_WAKEPAT_MSK0_1     0xC4
        !           167: #define VGE_WAKEPAT_MSK0_2     0xC8
        !           168: #define VGE_WAKEPAT_MSK0_3     0xCC
        !           169: #define VGE_WAKEPAT_MSK1_0     0xD0
        !           170: #define VGE_WAKEPAT_MSK1_1     0xD4
        !           171: #define VGE_WAKEPAT_MSK1_2     0xD8
        !           172: #define VGE_WAKEPAT_MSK1_3     0xDC
        !           173: #define VGE_WAKEPAT_MSK2_0     0xE0
        !           174: #define VGE_WAKEPAT_MSK2_1     0xE4
        !           175: #define VGE_WAKEPAT_MSK2_2     0xE8
        !           176: #define VGE_WAKEPAT_MSK2_3     0xEC
        !           177: #define VGE_WAKEPAT_MSK3_0     0xF0
        !           178: #define VGE_WAKEPAT_MSK3_1     0xF4
        !           179: #define VGE_WAKEPAT_MSK3_2     0xF8
        !           180: #define VGE_WAKEPAT_MSK3_3     0xFC
        !           181:
        !           182: /* Receive control register */
        !           183:
        !           184: #define VGE_RXCTL_RX_BADFRAMES         0x01 /* accept CRC error frames */
        !           185: #define VGE_RXCTL_RX_RUNT              0x02 /* accept runts */
        !           186: #define VGE_RXCTL_RX_MCAST             0x04 /* accept multicasts */
        !           187: #define VGE_RXCTL_RX_BCAST             0x08 /* accept broadcasts */
        !           188: #define VGE_RXCTL_RX_PROMISC           0x10 /* promisc mode */
        !           189: #define VGE_RXCTL_RX_GIANT             0x20 /* accept VLAN tagged frames */
        !           190: #define VGE_RXCTL_RX_UCAST             0x40 /* use perfect filtering */
        !           191: #define VGE_RXCTL_RX_SYMERR            0x80 /* accept symbol err packet */
        !           192:
        !           193: /* Transmit control register */
        !           194:
        !           195: #define VGE_TXCTL_LOOPCTL              0x03 /* loopback control */
        !           196: #define VGE_TXCTL_COLLCTL              0x0C /* collision retry control */
        !           197:
        !           198: #define VGE_TXLOOPCTL_OFF              0x00
        !           199: #define VGE_TXLOOPCTL_MAC_INTERNAL     0x01
        !           200: #define VGE_TXLOOPCTL_EXTERNAL         0x02
        !           201:
        !           202: #define VGE_TXCOLLS_NORMAL             0x00 /* one set of 16 retries */
        !           203: #define VGE_TXCOLLS_32                 0x04 /* two sets of 16 retries */
        !           204: #define VGE_TXCOLLS_48                 0x08 /* three sets of 16 retries */
        !           205: #define VGE_TXCOLLS_INFINITE           0x0C /* retry forever */
        !           206:
        !           207: /* Global command register 0 */
        !           208:
        !           209: #define VGE_CR0_START                  0x01 /* start NIC */
        !           210: #define VGE_CR0_STOP                   0x02 /* stop NIC */
        !           211: #define VGE_CR0_RX_ENABLE              0x04 /* turn on RX engine */
        !           212: #define VGE_CR0_TX_ENABLE              0x08 /* turn on TX engine */
        !           213:
        !           214: /* Global command register 1 */
        !           215:
        !           216: #define VGE_CR1_NOUCAST                        0x01 /* disable unicast reception */
        !           217: #define VGE_CR1_NOPOLL                 0x08 /* disable RX/TX desc polling */
        !           218: #define VGE_CR1_TIMER0_ENABLE          0x20 /* enable single shot timer */
        !           219: #define VGE_CR1_TIMER1_ENABLE          0x40 /* enable periodic timer */
        !           220: #define VGE_CR1_SOFTRESET              0x80 /* software reset */
        !           221:
        !           222: /* Global command register 2 */
        !           223:
        !           224: #define VGE_CR2_TXPAUSE_THRESH_LO      0x03 /* TX pause frame lo threshold */
        !           225: #define VGE_CR2_TXPAUSE_THRESH_HI      0x0C /* TX pause frame hi threshold */
        !           226: #define VGE_CR2_HDX_FLOWCTL_ENABLE     0x10 /* half duplex flow control */
        !           227: #define VGE_CR2_FDX_RXFLOWCTL_ENABLE   0x20 /* full duplex RX flow control */
        !           228: #define VGE_CR2_FDX_TXFLOWCTL_ENABLE   0x40 /* full duplex TX flow control */
        !           229: #define VGE_CR2_XON_ENABLE             0x80 /* 802.3x XON/XOFF flow control */
        !           230:
        !           231: /* Global command register 3 */
        !           232:
        !           233: #define VGE_CR3_INT_SWPEND             0x01 /* disable multi-level int bits */
        !           234: #define VGE_CR3_INT_GMSK               0x02 /* mask off all interrupts */
        !           235: #define VGE_CR3_INT_HOLDOFF            0x04 /* enable int hold off timer */
        !           236: #define VGE_CR3_DIAG                   0x10 /* diagnostic enabled */
        !           237: #define VGE_CR3_PHYRST                 0x20 /* assert PHYRSTZ */
        !           238: #define VGE_CR3_STOP_FORCE             0x40 /* force NIC to stopped state */
        !           239:
        !           240: /* Interrupt control register */
        !           241:
        !           242: #define VGE_INTCTL_SC_RELOAD           0x01 /* reload hold timer */
        !           243: #define VGE_INTCTL_HC_RELOAD           0x02 /* enable hold timer reload */
        !           244: #define VGE_INTCTL_STATUS              0x04 /* interrupt pending status */
        !           245: #define VGE_INTCTL_MASK                        0x18 /* multilayer int mask */
        !           246: #define VGE_INTCTL_RXINTSUP_DISABLE    0x20 /* disable RX int supression */
        !           247: #define VGE_INTCTL_TXINTSUP_DISABLE    0x40 /* disable TX int supression */
        !           248: #define VGE_INTCTL_SOFTINT             0x80 /* request soft interrupt */
        !           249:
        !           250: #define VGE_INTMASK_LAYER0             0x00
        !           251: #define VGE_INTMASK_LAYER1             0x08
        !           252: #define VGE_INTMASK_ALL                        0x10
        !           253: #define VGE_INTMASK_ALL2               0x18
        !           254:
        !           255: /* Transmit host error status register */
        !           256:
        !           257: #define VGE_TXHOSTERR_TDSTRUCT         0x01 /* bad TX desc structure */
        !           258: #define VGE_TXHOSTERR_TDFETCH_BUSERR   0x02 /* bus error on desc fetch */
        !           259: #define VGE_TXHOSTERR_TDWBACK_BUSERR   0x04 /* bus error on desc writeback */
        !           260: #define VGE_TXHOSTERR_FIFOERR          0x08 /* TX FIFO DMA bus error */
        !           261:
        !           262: /* Receive host error status register */
        !           263:
        !           264: #define VGE_RXHOSTERR_RDSTRUCT         0x01 /* bad RX desc structure */
        !           265: #define VGE_RXHOSTERR_RDFETCH_BUSERR   0x02 /* bus error on desc fetch */
        !           266: #define VGE_RXHOSTERR_RDWBACK_BUSERR   0x04 /* bus error on desc writeback */
        !           267: #define VGE_RXHOSTERR_FIFOERR          0x08 /* RX FIFO DMA bus error */
        !           268:
        !           269: /* Interrupt status register */
        !           270:
        !           271: #define VGE_ISR_RXOK_HIPRIO    0x00000001 /* hi prio RX int */
        !           272: #define VGE_ISR_TXOK_HIPRIO    0x00000002 /* hi prio TX int */
        !           273: #define VGE_ISR_RXOK           0x00000004 /* normal RX done */
        !           274: #define VGE_ISR_TXOK           0x00000008 /* combo results for next 4 bits */
        !           275: #define VGE_ISR_TXOK0          0x00000010 /* TX complete on queue 0 */
        !           276: #define VGE_ISR_TXOK1          0x00000020 /* TX complete on queue 1 */
        !           277: #define VGE_ISR_TXOK2          0x00000040 /* TX complete on queue 2 */
        !           278: #define VGE_ISR_TXOK3          0x00000080 /* TX complete on queue 3 */
        !           279: #define VGE_ISR_RXCNTOFLOW     0x00000400 /* RX packet count overflow */
        !           280: #define VGE_ISR_RXPAUSE                0x00000800 /* pause frame RX'ed */
        !           281: #define VGE_ISR_RXOFLOW                0x00001000 /* RX FIFO overflow */
        !           282: #define VGE_ISR_RXNODESC       0x00002000 /* ran out of RX descriptors */
        !           283: #define VGE_ISR_RXNODESC_WARN  0x00004000 /* running out of RX descs */
        !           284: #define VGE_ISR_LINKSTS                0x00008000 /* link status change */
        !           285: #define VGE_ISR_TIMER0         0x00010000 /* one shot timer expired */
        !           286: #define VGE_ISR_TIMER1         0x00020000 /* periodic timer expired */
        !           287: #define VGE_ISR_PWR            0x00040000 /* wake up power event */
        !           288: #define VGE_ISR_PHYINT         0x00080000 /* PHY interrupt */
        !           289: #define VGE_ISR_STOPPED                0x00100000 /* software shutdown complete */
        !           290: #define VGE_ISR_MIBOFLOW       0x00200000 /* MIB counter overflow warning */
        !           291: #define VGE_ISR_SOFTINT                0x00400000 /* software interrupt */
        !           292: #define VGE_ISR_HOLDOFF_RELOAD 0x00800000 /* reload hold timer */
        !           293: #define VGE_ISR_RXDMA_STALL    0x01000000 /* RX DMA stall */
        !           294: #define VGE_ISR_TXDMA_STALL    0x02000000 /* TX DMA STALL */
        !           295: #define VGE_ISR_ISRC0          0x10000000 /* interrupt source indication */
        !           296: #define VGE_ISR_ISRC1          0x20000000 /* interrupt source indication */
        !           297: #define VGE_ISR_ISRC2          0x40000000 /* interrupt source indication */
        !           298: #define VGE_ISR_ISRC3          0x80000000 /* interrupt source indication */
        !           299:
        !           300: #define VGE_INTRS      (VGE_ISR_TXOK0|VGE_ISR_RXOK|VGE_ISR_STOPPED|    \
        !           301:                         VGE_ISR_RXOFLOW|VGE_ISR_PHYINT|                \
        !           302:                         VGE_ISR_LINKSTS|VGE_ISR_RXNODESC|              \
        !           303:                         VGE_ISR_RXDMA_STALL|VGE_ISR_TXDMA_STALL|       \
        !           304:                         VGE_ISR_MIBOFLOW|VGE_ISR_TIMER0)
        !           305:
        !           306: /* Interrupt mask register */
        !           307:
        !           308: #define VGE_IMR_RXOK_HIPRIO    0x00000001 /* hi prio RX int */
        !           309: #define VGE_IMR_TXOK_HIPRIO    0x00000002 /* hi prio TX int */
        !           310: #define VGE_IMR_RXOK           0x00000004 /* normal RX done */
        !           311: #define VGE_IMR_TXOK           0x00000008 /* combo results for next 4 bits */
        !           312: #define VGE_IMR_TXOK0          0x00000010 /* TX complete on queue 0 */
        !           313: #define VGE_IMR_TXOK1          0x00000020 /* TX complete on queue 1 */
        !           314: #define VGE_IMR_TXOK2          0x00000040 /* TX complete on queue 2 */
        !           315: #define VGE_IMR_TXOK3          0x00000080 /* TX complete on queue 3 */
        !           316: #define VGE_IMR_RXCNTOFLOW     0x00000400 /* RX packet count overflow */
        !           317: #define VGE_IMR_RXPAUSE                0x00000800 /* pause frame RX'ed */
        !           318: #define VGE_IMR_RXOFLOW                0x00001000 /* RX FIFO overflow */
        !           319: #define VGE_IMR_RXNODESC       0x00002000 /* ran out of RX descriptors */
        !           320: #define VGE_IMR_RXNODESC_WARN  0x00004000 /* running out of RX descs */
        !           321: #define VGE_IMR_LINKSTS                0x00008000 /* link status change */
        !           322: #define VGE_IMR_TIMER0         0x00010000 /* one shot timer expired */
        !           323: #define VGE_IMR_TIMER1         0x00020000 /* periodic timer expired */
        !           324: #define VGE_IMR_PWR            0x00040000 /* wake up power event */
        !           325: #define VGE_IMR_PHYINT         0x00080000 /* PHY interrupt */
        !           326: #define VGE_IMR_STOPPED                0x00100000 /* software shutdown complete */
        !           327: #define VGE_IMR_MIBOFLOW       0x00200000 /* MIB counter overflow warning */
        !           328: #define VGE_IMR_SOFTINT                0x00400000 /* software interrupt */
        !           329: #define VGE_IMR_HOLDOFF_RELOAD 0x00800000 /* reload hold timer */
        !           330: #define VGE_IMR_RXDMA_STALL    0x01000000 /* RX DMA stall */
        !           331: #define VGE_IMR_TXDMA_STALL    0x02000000 /* TX DMA STALL */
        !           332: #define VGE_IMR_ISRC0          0x10000000 /* interrupt source indication */
        !           333: #define VGE_IMR_ISRC1          0x20000000 /* interrupt source indication */
        !           334: #define VGE_IMR_ISRC2          0x40000000 /* interrupt source indication */
        !           335: #define VGE_IMR_ISRC3          0x80000000 /* interrupt source indication */
        !           336:
        !           337: /* TX descriptor queue control/status register */
        !           338:
        !           339: #define VGE_TXQCSR_RUN0                0x0001  /* Enable TX queue 0 */
        !           340: #define VGE_TXQCSR_ACT0                0x0002  /* queue 0 active indicator */
        !           341: #define VGE_TXQCSR_WAK0                0x0004  /* Wake up (poll) queue 0 */
        !           342: #define VGE_TXQCST_DEAD0       0x0008  /* queue 0 dead indicator */
        !           343: #define VGE_TXQCSR_RUN1                0x0010  /* Enable TX queue 1 */
        !           344: #define VGE_TXQCSR_ACT1                0x0020  /* queue 1 active indicator */
        !           345: #define VGE_TXQCSR_WAK1                0x0040  /* Wake up (poll) queue 1 */
        !           346: #define VGE_TXQCST_DEAD1       0x0080  /* queue 1 dead indicator */
        !           347: #define VGE_TXQCSR_RUN2                0x0100  /* Enable TX queue 2 */
        !           348: #define VGE_TXQCSR_ACT2                0x0200  /* queue 2 active indicator */
        !           349: #define VGE_TXQCSR_WAK2                0x0400  /* Wake up (poll) queue 2 */
        !           350: #define VGE_TXQCST_DEAD2       0x0800  /* queue 2 dead indicator */
        !           351: #define VGE_TXQCSR_RUN3                0x1000  /* Enable TX queue 3 */
        !           352: #define VGE_TXQCSR_ACT3                0x2000  /* queue 3 active indicator */
        !           353: #define VGE_TXQCSR_WAK3                0x4000  /* Wake up (poll) queue 3 */
        !           354: #define VGE_TXQCST_DEAD3       0x8000  /* queue 3 dead indicator */
        !           355:
        !           356: /* RX descriptor queue control/status register */
        !           357:
        !           358: #define VGE_RXQCSR_RUN         0x0001  /* Enable RX queue */
        !           359: #define VGE_RXQCSR_ACT         0x0002  /* queue active indicator */
        !           360: #define VGE_RXQCSR_WAK         0x0004  /* Wake up (poll) queue */
        !           361: #define VGE_RXQCSR_DEAD                0x0008  /* queue dead indicator */
        !           362:
        !           363: /* RX/TX queue empty interrupt delay timer register */
        !           364:
        !           365: #define VGE_QTIMER_PENDCNT     0x3F
        !           366: #define VGE_QTIMER_RESOLUTION  0xC0
        !           367:
        !           368: #define VGE_QTIMER_RES_1US     0x00
        !           369: #define VGE_QTIMER_RES_4US     0x40
        !           370: #define VGE_QTIMER_RES_16US    0x80
        !           371: #define VGE_QTIMER_RES_64US    0xC0
        !           372:
        !           373: /* CAM address register */
        !           374:
        !           375: #define VGE_CAMADDR_ADDR       0x3F    /* CAM address to program */
        !           376: #define VGE_CAMADDR_AVSEL      0x40    /* 0 = address cam, 1 = VLAN cam */
        !           377: #define VGE_CAMADDR_ENABLE     0x80    /* enable CAM read/write */
        !           378:
        !           379: #define VGE_CAM_MAXADDRS       64
        !           380:
        !           381: /*
        !           382:  * CAM command register
        !           383:  * Note that the page select bits in this register affect three
        !           384:  * different things:
        !           385:  * - The behavior of the MAR0/MAR1 registers at offset 0x10 (the
        !           386:  *   page select bits control whether the MAR0/MAR1 registers affect
        !           387:  *   the multicast hash filter or the CAM table)
        !           388:  * - The behavior of the interrupt holdoff timer register at offset
        !           389:  *   0x20 (the page select bits allow you to set the interrupt
        !           390:  *   holdoff timer, the TX interrupt supression count or the
        !           391:  *   RX interrupt supression count)
        !           392:  * - The behavior the WOL pattern programming registers at offset
        !           393:  *   0xC0 (controls which pattern is set)
        !           394:  */
        !           395:
        !           396:
        !           397: #define VGE_CAMCTL_WRITE       0x04    /* CAM write command */
        !           398: #define VGE_CAMCTL_READ                0x08    /* CAM read command */
        !           399: #define VGE_CAMCTL_INTPKT_SIZ  0x10    /* select interesting pkt CAM size */
        !           400: #define VGE_CAMCTL_INTPKT_ENB  0x20    /* enable interesting packet mode */
        !           401: #define VGE_CAMCTL_PAGESEL     0xC0    /* page select */
        !           402:
        !           403: #define VGE_PAGESEL_MAR                0x00
        !           404: #define VGE_PAGESEL_CAMMASK    0x40
        !           405: #define VGE_PAGESEL_CAMDATA    0x80
        !           406:
        !           407: #define VGE_PAGESEL_INTHLDOFF  0x00
        !           408: #define VGE_PAGESEL_TXSUPPTHR  0x40
        !           409: #define VGE_PAGESEL_RXSUPPTHR  0x80
        !           410:
        !           411: #define VGE_PAGESEL_WOLPAT0    0x00
        !           412: #define VGE_PAGESEL_WOLPAT1    0x40
        !           413:
        !           414: /* MII port config register */
        !           415:
        !           416: #define VGE_MIICFG_PHYADDR     0x1F    /* PHY address (internal PHY is 1) */
        !           417: #define VGE_MIICFG_MDCSPEED    0x20    /* MDC accelerate x 4 */
        !           418: #define VGE_MIICFG_POLLINT     0xC0    /* polling interval */
        !           419:
        !           420: #define VGE_MIIPOLLINT_1024    0x00
        !           421: #define VGE_MIIPOLLINT_512     0x40
        !           422: #define VGE_MIIPOLLINT_128     0x80
        !           423: #define VGE_MIIPOLLINT_64      0xC0
        !           424:
        !           425: /* MII port status register */
        !           426:
        !           427: #define VGE_MIISTS_IIDL                0x80    /* not at sofrware/timer poll cycle */
        !           428:
        !           429: /* PHY status register */
        !           430:
        !           431: #define VGE_PHYSTS_TXFLOWCAP   0x01    /* resolved TX flow control cap */
        !           432: #define VGE_PHYSTS_RXFLOWCAP   0x02    /* resolved RX flow control cap */
        !           433: #define VGE_PHYSTS_SPEED10     0x04    /* PHY in 10Mbps mode */
        !           434: #define VGE_PHYSTS_SPEED1000   0x08    /* PHY in giga mode */
        !           435: #define VGE_PHYSTS_FDX         0x10    /* PHY in full duplex mode */
        !           436: #define VGE_PHYSTS_LINK                0x40    /* link status */
        !           437: #define VGE_PHYSTS_RESETSTS    0x80    /* reset status */
        !           438:
        !           439: /* MII management command register */
        !           440:
        !           441: #define VGE_MIICMD_MDC         0x01    /* clock pin */
        !           442: #define VGE_MIICMD_MDI         0x02    /* data in pin */
        !           443: #define VGE_MIICMD_MDO         0x04    /* data out pin */
        !           444: #define VGE_MIICMD_MOUT                0x08    /* data out pin enable */
        !           445: #define VGE_MIICMD_MDP         0x10    /* enable direct programming mode */
        !           446: #define VGE_MIICMD_WCMD                0x20    /* embedded mode write */
        !           447: #define VGE_MIICMD_RCMD                0x40    /* embadded mode read */
        !           448: #define VGE_MIICMD_MAUTO       0x80    /* enable autopolling */
        !           449:
        !           450: /* MII address register */
        !           451:
        !           452: #define VGE_MIIADDR_SWMPL      0x80    /* initiate priority resolution */
        !           453:
        !           454: /* Chip config register A */
        !           455:
        !           456: #define VGE_CHIPCFG0_PACPI     0x01    /* pre-ACPI wakeup function */
        !           457: #define VGE_CHIPCFG0_ABSHDN    0x02    /* abnormal shutdown function */
        !           458: #define VGE_CHIPCFG0_GPIO1PD   0x04    /* GPIO pin enable */
        !           459: #define VGE_CHIPCFG0_SKIPTAG   0x08    /* omit 802.1p tag from CRC calc */
        !           460: #define VGE_CHIPCFG0_PHLED     0x30    /* phy LED select */
        !           461:
        !           462: /* Chip config register B */
        !           463: /* Note: some of these bits are not documented in the manual! */
        !           464:
        !           465: #define VGE_CHIPCFG1_BAKOPT    0x01
        !           466: #define VGE_CHIPCFG1_MBA       0x02
        !           467: #define VGE_CHIPCFG1_CAP       0x04
        !           468: #define VGE_CHIPCFG1_CRANDOM   0x08
        !           469: #define VGE_CHIPCFG1_OFSET     0x10
        !           470: #define VGE_CHIPCFG1_SLOTTIME  0x20    /* slot time 512/500 in giga mode */
        !           471: #define VGE_CHIPCFG1_MIIOPT    0x40
        !           472: #define VGE_CHIPCFG1_GTCKOPT   0x80
        !           473:
        !           474: /* Chip config register C */
        !           475:
        !           476: #define VGE_CHIPCFG2_EELOAD    0x80    /* enable EEPROM programming */
        !           477:
        !           478: /* Chip config register D */
        !           479:
        !           480: #define VGE_CHIPCFG3_64BIT_DAC 0x20    /* enable 64bit via DAC */
        !           481: #define VGE_CHIPCFG3_IODISABLE 0x80    /* disable I/O access mode */
        !           482:
        !           483: /* DMA config register 0 */
        !           484:
        !           485: #define VGE_DMACFG0_BURSTLEN   0x07    /* RX/TX DMA burst (in dwords) */
        !           486:
        !           487: #define VGE_DMABURST_8         0x00
        !           488: #define VGE_DMABURST_16                0x01
        !           489: #define VGE_DMABURST_32                0x02
        !           490: #define VGE_DMABURST_64                0x03
        !           491: #define VGE_DMABURST_128       0x04
        !           492: #define VGE_DMABURST_256       0x05
        !           493: #define VGE_DMABURST_STRFWD    0x07
        !           494:
        !           495: /* DMA config register 1 */
        !           496:
        !           497: #define VGE_DMACFG1_LATENB     0x01    /* Latency timer enable */
        !           498: #define VGE_DMACFG1_MWWAIT     0x02    /* insert wait on master write */
        !           499: #define VGE_DMACFG1_MRWAIT     0x04    /* insert wait on master read */
        !           500: #define VGE_DMACFG1_MRM                0x08    /* use memory read multiple */
        !           501: #define VGE_DMACFG1_PERR_DIS   0x10    /* disable parity error checking */
        !           502: #define VGE_DMACFG1_XMRL       0x20    /* disable memory read line support */
        !           503:
        !           504: /* RX MAC config register */
        !           505:
        !           506: #define VGE_RXCFG_VLANFILT     0x01    /* filter VLAN ID mismatches */
        !           507: #define VGE_RXCFG_VTAGOPT      0x06    /* VLAN tag handling */
        !           508: #define VGE_RXCFG_FIFO_LOWAT   0x08    /* RX FIFO low watermark (7QW/15QW) */
        !           509: #define VGE_RXCFG_FIFO_THR     0x30    /* RX FIFO threshold */
        !           510: #define VGE_RXCFG_ARB_PRIO     0x80    /* arbitration priority */
        !           511:
        !           512: #define VGE_VTAG_OPT0          0x00    /* TX: no tag insertion
        !           513:                                           RX: rx all, no tag extraction */
        !           514:
        !           515: #define VGE_VTAG_OPT1          0x02    /* TX: no tag insertion
        !           516:                                           RX: rx only tagged pkts, no
        !           517:                                               extraction */
        !           518:
        !           519: #define VGE_VTAG_OPT2          0x04    /* TX: perform tag insertion,
        !           520:                                           RX: rx all, extract tags */
        !           521:
        !           522: #define VGE_VTAG_OPT3          0x06    /* TX: perform tag insertion,
        !           523:                                           RX: rx only tagged pkts,
        !           524:                                               with extraction */
        !           525:
        !           526: #define VGE_RXFIFOTHR_128BYTES 0x00
        !           527: #define VGE_RXFIFOTHR_512BYTES 0x10
        !           528: #define VGE_RXFIFOTHR_1024BYTES        0x20
        !           529: #define VGE_RXFIFOTHR_STRNFWD  0x30
        !           530:
        !           531: /* TX MAC config register */
        !           532:
        !           533: #define VGE_TXCFG_SNAPOPT      0x01    /* 1 == insert VLAN tag at
        !           534:                                           13th byte
        !           535:                                           0 == insert VLANM tag after
        !           536:                                           SNAP header (21st byte) */
        !           537: #define VGE_TXCFG_NONBLK       0x02    /* priority TX/non-blocking mode */
        !           538: #define VGE_TXCFG_NONBLK_THR   0x0C    /* non-blocking threshold */
        !           539: #define VGE_TXCFG_ARB_PRIO     0x80    /* arbitration priority */
        !           540:
        !           541: #define VGE_TXBLOCK_64PKTS     0x00
        !           542: #define VGE_TXBLOCK_32PKTS     0x04
        !           543: #define VGE_TXBLOCK_128PKTS    0x08
        !           544: #define VGE_TXBLOCK_8PKTS      0x0C
        !           545:
        !           546: /* EEPROM control/status register */
        !           547:
        !           548: #define VGE_EECSR_EDO          0x01    /* data out pin */
        !           549: #define VGE_EECSR_EDI          0x02    /* data in pin */
        !           550: #define VGE_EECSR_ECK          0x04    /* clock pin */
        !           551: #define VGE_EECSR_ECS          0x08    /* chip select pin */
        !           552: #define VGE_EECSR_DPM          0x10    /* direct program mode enable */
        !           553: #define VGE_EECSR_RELOAD       0x20    /* trigger reload from EEPROM */
        !           554: #define VGE_EECSR_EMBP         0x40    /* embedded program mode enable */
        !           555:
        !           556: /* EEPROM embedded command register */
        !           557:
        !           558: #define VGE_EECMD_ERD          0x01    /* EEPROM read command */
        !           559: #define VGE_EECMD_EWR          0x02    /* EEPROM write command */
        !           560: #define VGE_EECMD_EWEN         0x04    /* EEPROM write enable */
        !           561: #define VGE_EECMD_EWDIS                0x08    /* EEPROM write disable */
        !           562: #define VGE_EECMD_EDONE                0x80    /* read/write done */
        !           563:
        !           564: /* Chip operation and diagnostic control register */
        !           565:
        !           566: #define VGE_DIAGCTL_PHYINT_ENB 0x01    /* Enable PHY interrupts */
        !           567: #define VGE_DIAGCTL_TIMER0_RES 0x02    /* timer0 uSec resolution */
        !           568: #define VGE_DIAGCTL_TIMER1_RES 0x04    /* timer1 uSec resolution */
        !           569: #define VGE_DIAGCTL_LPSEL_DIS  0x08    /* disable LPSEL field */
        !           570: #define VGE_DIAGCTL_MACFORCE   0x10    /* MAC side force mode */
        !           571: #define VGE_DIAGCTL_FCRSVD     0x20    /* reserved for future fiber use */
        !           572: #define VGE_DIAGCTL_FDXFORCE   0x40    /* force full duplex mode */
        !           573: #define VGE_DIAGCTL_GMII       0x80    /* force GMII mode, otherwise MII */
        !           574:
        !           575: /* Location of station address in EEPROM */
        !           576: #define VGE_EE_EADDR           0
        !           577:
        !           578: /* DMA descriptor structures */
        !           579:
        !           580: /*
        !           581:  * Each TX DMA descriptor has a control and status word, and 7
        !           582:  * fragment address/length words. If a transmitted packet spans
        !           583:  * more than 7 fragments, it has to be coalesced.
        !           584:  */
        !           585:
        !           586: #define VGE_TX_FRAGS   7
        !           587:
        !           588: struct vge_tx_frag {
        !           589:        uint32_t                vge_addrlo;
        !           590:        uint16_t                vge_addrhi;
        !           591:        uint16_t                vge_buflen;
        !           592: };
        !           593:
        !           594: /*
        !           595:  * The high bit in the buflen field of fragment #0 has special meaning.
        !           596:  * Normally, the chip requires the driver to issue a TX poll command
        !           597:  * for every packet that gets put in the TX DMA queue. Sometimes though,
        !           598:  * the driver might want to queue up several packets at once and just
        !           599:  * issue one transmit command to have all of them processed. In order
        !           600:  * to obtain this behavior, the special 'queue' bit must be set.
        !           601:  */
        !           602:
        !           603: #define VGE_TXDESC_Q           0x8000
        !           604:
        !           605: struct vge_tx_desc {
        !           606:        uint32_t                vge_sts;
        !           607:        uint32_t                vge_ctl;
        !           608:        struct vge_tx_frag      vge_frag[VGE_TX_FRAGS];
        !           609: };
        !           610:
        !           611: #define VGE_TDSTS_COLLCNT      0x0000000F      /* TX collision count */
        !           612: #define VGE_TDSTS_COLL         0x00000010      /* collision seen */
        !           613: #define VGE_TDSTS_OWINCOLL     0x00000020      /* out of window collision */
        !           614: #define VGE_TDSTS_OWT          0x00000040      /* jumbo frame tx abort */
        !           615: #define VGE_TDSTS_EXCESSCOLL   0x00000080      /* TX aborted, excess colls */
        !           616: #define VGE_TDSTS_HBEATFAIL    0x00000100      /* heartbeat detect failed */
        !           617: #define VGE_TDSTS_CARRLOSS     0x00000200      /* carrier sense lost */
        !           618: #define VGE_TDSTS_SHUTDOWN     0x00000400      /* shutdown during TX */
        !           619: #define VGE_TDSTS_LINKFAIL     0x00001000      /* link fail during TX */
        !           620: #define VGE_TDSTS_GMII         0x00002000      /* GMII transmission */
        !           621: #define VGE_TDSTS_FDX          0x00004000      /* full duplex transmit */
        !           622: #define VGE_TDSTS_TXERR                0x00008000      /* error occurred */
        !           623: #define VGE_TDSTS_SEGSIZE      0x3FFF0000      /* TCP large send size */
        !           624: #define VGE_TDSTS_OWN          0x80000000      /* own bit */
        !           625:
        !           626: #define VGE_TDCTL_VLANID       0x00000FFF      /* VLAN ID */
        !           627: #define VGE_TDCTL_CFI          0x00001000      /* VLAN CFI bit */
        !           628: #define VGE_TDCTL_PRIO         0x0000E000      /* VLAN prio bits */
        !           629: #define VGE_TDCTL_NOCRC                0x00010000      /* disable CRC generation */
        !           630: #define VGE_TDCTL_JUMBO                0x00020000      /* jumbo frame */
        !           631: #define VGE_TDCTL_TCPCSUM      0x00040000      /* do TCP hw checksum */
        !           632: #define VGE_TDCTL_UDPCSUM      0x00080000      /* do UDP hw checksum */
        !           633: #define VGE_TDCTL_IPCSUM       0x00100000      /* do IP hw checksum */
        !           634: #define VGE_TDCTL_VTAG         0x00200000      /* insert VLAN tag */
        !           635: #define VGE_TDCTL_PRIO_INT     0x00400000      /* priority int request */
        !           636: #define VGE_TDCTL_TIC          0x00800000      /* transfer int request */
        !           637: #define VGE_TDCTL_TCPLSCTL     0x03000000      /* TCP large send ctl */
        !           638: #define VGE_TDCTL_FRAGCNT      0xF0000000      /* number of frags used */
        !           639:
        !           640: #define VGE_TD_LS_MOF          0x00000000      /* middle of large send */
        !           641: #define VGE_TD_LS_SOF          0x01000000      /* start of large send */
        !           642: #define VGE_TD_LS_EOF          0x02000000      /* end of large send */
        !           643: #define VGE_TD_LS_NORM         0x03000000      /* normal frame */
        !           644:
        !           645: /* Receive DMA descriptors have a single fragment pointer. */
        !           646:
        !           647: struct vge_rx_desc {
        !           648:        volatile uint32_t       vge_sts;
        !           649:        volatile uint32_t       vge_ctl;
        !           650:        volatile uint32_t       vge_addrlo;
        !           651:        volatile uint16_t       vge_addrhi;
        !           652:        volatile uint16_t       vge_buflen;
        !           653: };
        !           654:
        !           655: /*
        !           656:  * Like the TX descriptor, the high bit in the buflen field in the
        !           657:  * RX descriptor has special meaning. This bit controls whether or
        !           658:  * not interrupts are generated for this descriptor.
        !           659:  */
        !           660:
        !           661: #define VGE_RXDESC_I           0x8000
        !           662:
        !           663: #define VGE_RDSTS_VIDM         0x00000001      /* VLAN tag filter miss */
        !           664: #define VGE_RDSTS_CRCERR       0x00000002      /* bad CRC error */
        !           665: #define VGE_RDSTS_FAERR                0x00000004      /* frame alignment error */
        !           666: #define VGE_RDSTS_CSUMERR      0x00000008      /* bad TCP/IP checksum */
        !           667: #define VGE_RDSTS_RLERR                0x00000010      /* RX length error */
        !           668: #define VGE_RDSTS_SYMERR       0x00000020      /* PCS symbol error */
        !           669: #define VGE_RDSTS_SNTAG                0x00000040      /* RX'ed tagged SNAP pkt */
        !           670: #define VGE_RDSTS_DETAG                0x00000080      /* VLAN tag extracted */
        !           671: #define VGE_RDSTS_BOUNDARY     0x00000300      /* frame boundary bits */
        !           672: #define VGE_RDSTS_VTAG         0x00000400      /* VLAN tag indicator */
        !           673: #define VGE_RDSTS_UCAST                0x00000800      /* unicast frame */
        !           674: #define VGE_RDSTS_BCAST                0x00001000      /* broadcast frame */
        !           675: #define VGE_RDSTS_MCAST                0x00002000      /* multicast frame */
        !           676: #define VGE_RDSTS_PFT          0x00004000      /* perfect filter hit */
        !           677: #define VGE_RDSTS_RXOK         0x00008000      /* frame is good. */
        !           678: #define VGE_RDSTS_BUFSIZ       0x3FFF0000      /* received frame len */
        !           679: #define VGE_RDSTS_SHUTDOWN     0x40000000      /* shutdown during RX */
        !           680: #define VGE_RDSTS_OWN          0x80000000      /* own bit. */
        !           681:
        !           682: #define VGE_RXPKT_ONEFRAG      0x00000000      /* only one fragment */
        !           683: #define VGE_RXPKT_EOF          0x00000100      /* first frag in frame */
        !           684: #define VGE_RXPKT_SOF          0x00000200      /* last frag in frame */
        !           685: #define VGE_RXPKT_MOF          0x00000300      /* intermediate frag */
        !           686:
        !           687: #define VGE_RDCTL_VLANID       0x0000FFFF      /* VLAN ID info */
        !           688: #define VGE_RDCTL_UDPPKT       0x00010000      /* UDP packet received */
        !           689: #define VGE_RDCTL_TCPPKT       0x00020000      /* TCP packet received */
        !           690: #define VGE_RDCTL_IPPKT                0x00040000      /* IP packet received */
        !           691: #define VGE_RDCTL_UDPZERO      0x00080000      /* pkt with UDP CSUM of 0 */
        !           692: #define VGE_RDCTL_FRAG         0x00100000      /* received IP frag */
        !           693: #define VGE_RDCTL_PROTOCSUMOK  0x00200000      /* TCP/UDP checksum ok */
        !           694: #define VGE_RDCTL_IPCSUMOK     0x00400000      /* IP checksum ok */
        !           695: #define VGE_RDCTL_FILTIDX      0x3C000000      /* interesting filter idx */
        !           696:
        !           697: #endif /* _IF_VGEREG_H_ */

CVSweb