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

Annotation of sys/dev/pci/if_xgereg.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: if_xgereg.h,v 1.4 2007/02/27 22:39:39 kettenis Exp $  */
                      2: /*     $NetBSD: if_xgereg.h,v 1.1 2005/09/09 10:30:27 ragge Exp $      */
                      3:
                      4: /*
                      5:  * Copyright (c) 2004, SUNET, Swedish University Computer Network.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Written by Anders Magnusson for SUNET, Swedish University Computer Network.
                      9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. All advertising materials mentioning features or use of this software
                     19:  *    must display the following acknowledgement:
                     20:  *      This product includes software developed for the NetBSD Project by
                     21:  *      SUNET, Swedish University Computer Network.
                     22:  * 4. The name of SUNET may not be used to endorse or promote products
                     23:  *    derived from this software without specific prior written permission.
                     24:  *
                     25:  * THIS SOFTWARE IS PROVIDED BY SUNET ``AS IS'' AND
                     26:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     27:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     28:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL SUNET
                     29:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     30:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     31:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     32:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     33:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     34:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     35:  * POSSIBILITY OF SUCH DAMAGE.
                     36:  */
                     37:
                     38: /*
                     39:  * Defines for the Neterion Xframe adapter.
                     40:  */
                     41:
                     42: /* PCI address space */
                     43: #define        XGE_PIF_BAR     0x10
                     44: #define        XGE_TXP_BAR     0x18
                     45:
                     46: /* PIF register address calculation */
                     47: #define        DCSRB(x) (0x0000+(x))   /* 10GbE Device Control and Status Registers */
                     48: #define        PCIXB(x) (0x0800+(x))   /* PCI-X Interface Functional Registers */
                     49: #define        TDMAB(x) (0x1000+(x))   /* Transmit DMA Functional Registers */
                     50: #define        RDMAB(x) (0x1800+(x))   /* Receive DMA Functional Registers */
                     51: #define        MACRB(x) (0x2000+(x))   /* MAC functional registers */
                     52: #define        RLDRB(x) (0x2800+(x))   /* RLDRAM memory controller */
                     53: #define        XGXSB(x) (0x3000+(x))   /* XGXS functional Registers */
                     54:
                     55: /*
                     56:  * Control and Status Registers
                     57:  */
                     58: #define        GENERAL_INT_STATUS      DCSRB(0x0000)
                     59: #define        GENERAL_INT_MASK        DCSRB(0x0008)
                     60: #define        SW_RESET                DCSRB(0x0100)
                     61: #define         XGXS_RESET(x)          ((uint64_t)(x) << 32)
                     62: #define        ADAPTER_STATUS          DCSRB(0x0108)
                     63: #define         TDMA_READY             (1ULL<<63)
                     64: #define         RDMA_READY             (1ULL<<62)
                     65: #define         PFC_READY              (1ULL<<61)
                     66: #define         TMAC_BUF_EMPTY         (1ULL<<60)
                     67: #define         PIC_QUIESCENT          (1ULL<<58)
                     68: #define         RMAC_REMOTE_FAULT      (1ULL<<57)
                     69: #define         RMAC_LOCAL_FAULT       (1ULL<<56)
                     70: #define         MC_DRAM_READY          (1ULL<<39)
                     71: #define         MC_QUEUES_READY        (1ULL<<38)
                     72: #define         RIC_RUNNING            (1ULL<<37)
                     73: #define         M_PLL_LOCK             (1ULL<<33)
                     74: #define         P_PLL_LOCK             (1ULL<<32)
                     75: #define        ADAPTER_CONTROL         DCSRB(0x0110)
                     76: #define         ADAPTER_EN             (1ULL<<56)
                     77: #define         EOI_TX_ON              (1ULL<<48)
                     78: #define         LED_ON                 (1ULL<<40)
                     79: #define         WAIT_INT_EN            (1ULL<<15)
                     80: #define         ECC_ENABLE_N           (1ULL<<8)
                     81:
                     82: /* for debug of ADAPTER_STATUS */
                     83: #define        QUIESCENT (TDMA_READY|RDMA_READY|PFC_READY|TMAC_BUF_EMPTY|\
                     84:        PIC_QUIESCENT|MC_DRAM_READY|MC_QUEUES_READY|M_PLL_LOCK|P_PLL_LOCK)
                     85: #define        QUIESCENT_BMSK  \
                     86:        "\177\20b\x3fTDMA_READY\0b\x3eRDMA_READY\0b\x3dPFC_READY\0" \
                     87:        "b\x3cTMAC_BUF_EMPTY\0b\x3aPIC_QUIESCENT\0\x39RMAC_REMOTE_FAULT\0" \
                     88:        "b\x38RMAC_LOCAL_FAULT\0b\x27MC_DRAM_READY\0b\x26MC_QUEUES_READY\0" \
                     89:        "b\x21M_PLL_LOCK\0b\x20P_PLL_LOCK"
                     90:
                     91: /*
                     92:  * PCI-X registers
                     93:  */
                     94: /* Interrupt control registers */
                     95: #define        PIC_INT_STATUS          PCIXB(0)
                     96: #define        PIC_INT_MASK            PCIXB(0x008)
                     97: #define        TXPIC_INT_MASK          PCIXB(0x018)
                     98: #define        RXPIC_INT_MASK          PCIXB(0x030)
                     99: #define        FLASH_INT_MASK          PCIXB(0x048)
                    100: #define        MDIO_INT_MASK           PCIXB(0x060)
                    101: #define        IIC_INT_MASK            PCIXB(0x078)
                    102: #define        GPIO_INT_MASK           PCIXB(0x098)
                    103: #define        TX_TRAFFIC_INT          PCIXB(0x0e0)
                    104: #define        TX_TRAFFIC_MASK         PCIXB(0x0e8)
                    105: #define        RX_TRAFFIC_INT          PCIXB(0x0f0)
                    106: #define        RX_TRAFFIC_MASK         PCIXB(0x0f8)
                    107: #define        PIC_CONTROL             PCIXB(0x100)
                    108:
                    109: /* Byte swapping for little-endian */
                    110: #define        SWAPPER_CTRL            PCIXB(0x108)
                    111: #define         PIF_R_FE               (1ULL<<63)
                    112: #define         PIF_R_SE               (1ULL<<62)
                    113: #define         PIF_W_FE               (1ULL<<55)
                    114: #define         PIF_W_SE               (1ULL<<54)
                    115: #define         TxP_FE                 (1ULL<<47)
                    116: #define         TxP_SE                 (1ULL<<46)
                    117: #define         TxD_R_FE               (1ULL<<45)
                    118: #define         TxD_R_SE               (1ULL<<44)
                    119: #define         TxD_W_FE               (1ULL<<43)
                    120: #define         TxD_W_SE               (1ULL<<42)
                    121: #define         TxF_R_FE               (1ULL<<41)
                    122: #define         TxF_R_SE               (1ULL<<40)
                    123: #define         RxD_R_FE               (1ULL<<31)
                    124: #define         RxD_R_SE               (1ULL<<30)
                    125: #define         RxD_W_FE               (1ULL<<29)
                    126: #define         RxD_W_SE               (1ULL<<28)
                    127: #define         RxF_W_FE               (1ULL<<27)
                    128: #define         RxF_W_SE               (1ULL<<26)
                    129: #define         XMSI_FE                (1ULL<<23)
                    130: #define         XMSI_SE                (1ULL<<22)
                    131: #define         STATS_FE               (1ULL<<15)
                    132: #define         STATS_SE               (1ULL<<14)
                    133:
                    134: /* Diagnostic register to check byte-swapping conf */
                    135: #define        PIF_RD_SWAPPER_Fb       PCIXB(0x110)
                    136: #define         SWAPPER_MAGIC          0x0123456789abcdefULL
                    137:
                    138: /* Stats registers */
                    139: #define        STAT_CFG                PCIXB(0x1d0)
                    140: #define        STAT_ADDR               PCIXB(0x1d8)
                    141:
                    142: /* DTE-XGXS Interface */
                    143: #define        MDIO_CONTROL            PCIXB(0x1e0)
                    144: #define        DTX_CONTROL             PCIXB(0x1e8)
                    145: #define        I2C_CONTROL             PCIXB(0x1f0)
                    146: #define        GPIO_CONTROL            PCIXB(0x1f8)
                    147:
                    148: /*
                    149:  * Transmit DMA registers.
                    150:  */
                    151: #define        TXDMA_INT_MASK          TDMAB(0x008)
                    152: #define        PFC_ERR_MASK            TDMAB(0x018)
                    153: #define        TDA_ERR_MASK            TDMAB(0x030)
                    154: #define        PCC_ERR_MASK            TDMAB(0x048)
                    155: #define        TTI_ERR_MASK            TDMAB(0x060)
                    156: #define        LSO_ERR_MASK            TDMAB(0x078)
                    157: #define        TPA_ERR_MASK            TDMAB(0x090)
                    158: #define        SM_ERR_MASK             TDMAB(0x0a8)
                    159:
                    160: /* Transmit FIFO config */
                    161: #define        TX_FIFO_P0              TDMAB(0x0108)
                    162: #define        TX_FIFO_P1              TDMAB(0x0110)
                    163: #define        TX_FIFO_P2              TDMAB(0x0118)
                    164: #define        TX_FIFO_P3              TDMAB(0x0120)
                    165: #define         TX_FIFO_ENABLE         (1ULL<<63)
                    166: #define         TX_FIFO_NUM0(x)        ((uint64_t)(x) << 56)
                    167: #define         TX_FIFO_LEN0(x)        ((uint64_t)((x)-1) << 32)
                    168: #define         TX_FIFO_NUM1(x)        ((uint64_t)(x) << 24)
                    169: #define         TX_FIFO_LEN1(x)        ((uint64_t)((x)-1) << 0)
                    170:
                    171: /* Transmit interrupts */
                    172: #define        TTI_COMMAND_MEM         TDMAB(0x150)
                    173: #define         TTI_CMD_MEM_WE         (1ULL<<56)
                    174: #define         TTI_CMD_MEM_STROBE     (1ULL<<48)
                    175: #define        TTI_DATA1_MEM           TDMAB(0x158)
                    176: #define         TX_TIMER_VAL(x)        ((uint64_t)(x) << 32)
                    177: #define         TX_TIMER_AC            (1ULL<<25)
                    178: #define         TX_TIMER_CI            (1ULL<<24)
                    179: #define         TX_URNG_A(x)           ((uint64_t)(x) << 16)
                    180: #define         TX_URNG_B(x)           ((uint64_t)(x) << 8)
                    181: #define         TX_URNG_C(x)           ((uint64_t)(x) << 0)
                    182: #define        TTI_DATA2_MEM           TDMAB(0x160)
                    183: #define         TX_UFC_A(x)            ((uint64_t)(x) << 48)
                    184: #define         TX_UFC_B(x)            ((uint64_t)(x) << 32)
                    185: #define         TX_UFC_C(x)            ((uint64_t)(x) << 16)
                    186: #define         TX_UFC_D(x)            ((uint64_t)(x) << 0)
                    187:
                    188:
                    189: /* Transmit protocol assist */
                    190: #define        TX_PA_CFG               TDMAB(0x0168)
                    191: #define         TX_PA_CFG_IFR          (1ULL<<62)      /* Ignore frame error */
                    192: #define         TX_PA_CFG_ISO          (1ULL<<61)      /* Ignore snap OUI */
                    193: #define         TX_PA_CFG_ILC          (1ULL<<60)      /* Ignore LLC ctrl */
                    194: #define         TX_PA_CFG_ILE          (1ULL<<57)      /* Ignore L2 error */
                    195:
                    196: /*
                    197:  * Transmit descriptor list (TxDL) pointer and control.
                    198:  * There may be up to 8192 TxDL's per FIFO, but with a NIC total
                    199:  * of 8192. The TxDL's are located in the NIC memory.
                    200:  * Each TxDL can have up to 256 Transmit descriptors (TxD)
                    201:  * that are located in host memory.
                    202:  *
                    203:  * The txdl struct fields must be written in order.
                    204:  */
                    205: #ifdef notdef  /* Use bus_space stuff instead */
                    206: struct txdl {
                    207:        uint64_t txdl_pointer;  /* address of TxD's */
                    208:        uint64_t txdl_control;
                    209: };
                    210: #endif
                    211: #define        TXDLOFF1(x)     (16*(x))        /* byte offset in txdl for list */
                    212: #define        TXDLOFF2(x)     (16*(x)+8)      /* byte offset in txdl for list */
                    213: #define        TXDL_NUMTXD(x)  ((uint64_t)(x) << 56)   /* # of TxD's in the list */
                    214: #define        TXDL_LGC_FIRST  (1ULL << 49)    /* First special list */
                    215: #define        TXDL_LGC_LAST   (1ULL << 48)    /* Last special list */
                    216: #define        TXDL_SFF        (1ULL << 40)    /* List is a special function list */
                    217: #define        TXDL_PAR        0               /* Pointer address register */
                    218: #define        TXDL_LCR        8               /* List control register */
                    219:
                    220: struct txd {
                    221:        uint64_t txd_control1;
                    222:        uint64_t txd_control2;
                    223:        uint64_t txd_bufaddr;
                    224:        uint64_t txd_hostctrl;
                    225: };
                    226: #define        TXD_CTL1_OWN    (1ULL << 56)    /* Owner, 0 == host, 1 == NIC */
                    227: #define        TXD_CTL1_GCF    (1ULL << 41)    /* First frame or LSO */
                    228: #define        TXD_CTL1_GCL    (1ULL << 40)    /* Last frame or LSO */
                    229: #define        TXD_CTL1_LSO    (1ULL << 33)    /* LSO should be performed */
                    230: #define        TXD_CTL1_COF    (1ULL << 32)    /* UDP Checksum over fragments */
                    231: #define        TXD_CTL1_MSS(x) ((uint64_t)(x) << 16)
                    232:
                    233: #define        TXD_CTL2_INTLST (1ULL << 16)    /* Per-list interrupt */
                    234: #define        TXD_CTL2_UTIL   (1ULL << 17)    /* Utilization interrupt */
                    235: #define        TXD_CTL2_CIPv4  (1ULL << 58)    /* Calculate IPv4 header checksum */
                    236: #define        TXD_CTL2_CTCP   (1ULL << 57)    /* Calculate TCP checksum */
                    237: #define        TXD_CTL2_CUDP   (1ULL << 56)    /* Calculate UDP checksum */
                    238: #define        TXD_CTL2_VLANE  (1ULL << 48)    /* Enable VLAN tag insertion */
                    239: #define        TXD_CTL2_VLANT(x) ((uint64_t)(x) << 32)
                    240:
                    241: /*
                    242:  * Receive DMA registers
                    243:  */
                    244: /* Receive interrupt registers */
                    245: #define        RXDMA_INT_MASK          RDMAB(0x008)
                    246: #define        RDA_ERR_MASK            RDMAB(0x018)
                    247: #define        RC_ERR_MASK             RDMAB(0x030)
                    248: #define        PRC_PCIX_ERR_MASK       RDMAB(0x048)
                    249: #define        RPA_ERR_MASK            RDMAB(0x060)
                    250: #define        RTI_ERR_MASK            RDMAB(0x078)
                    251:
                    252: #define        RX_QUEUE_PRIORITY       RDMAB(0x100)
                    253: #define        RX_W_ROUND_ROBIN_0      RDMAB(0x108)
                    254: #define        RX_W_ROUND_ROBIN_1      RDMAB(0x110)
                    255: #define        RX_W_ROUND_ROBIN_2      RDMAB(0x118)
                    256: #define        RX_W_ROUND_ROBIN_3      RDMAB(0x120)
                    257: #define        RX_W_ROUND_ROBIN_4      RDMAB(0x128)
                    258: #define        PRC_RXD0_0              RDMAB(0x130)
                    259: #define        PRC_CTRL_0              RDMAB(0x170)
                    260: #define         RC_IN_SVC              (1ULL << 56)
                    261: #define         RING_MODE_1            (0ULL << 48)
                    262: #define         RING_MODE_3            (1ULL << 48)
                    263: #define         RING_MODE_5            (2ULL << 48)
                    264: #define         RC_NO_SNOOP_D          (1ULL << 41)
                    265: #define         RC_NO_SNOOP_B          (1ULL << 40)
                    266: #define        PRC_ALARM_ACTION        RDMAB(0x1b0)
                    267: #define        RTI_COMMAND_MEM         RDMAB(0x1b8)
                    268: #define         RTI_CMD_MEM_WE         (1ULL << 56)
                    269: #define         RTI_CMD_MEM_STROBE     (1ULL << 48)
                    270: #define        RTI_DATA1_MEM           RDMAB(0x1c0)
                    271: #define         RX_TIMER_VAL(x)        ((uint64_t)(x) << 32)
                    272: #define         RX_TIMER_AC            (1ULL << 25)
                    273: #define         RX_URNG_A(x)           ((uint64_t)(x) << 16)
                    274: #define         RX_URNG_B(x)           ((uint64_t)(x) << 8)
                    275: #define         RX_URNG_C(x)           ((uint64_t)(x) << 0)
                    276: #define        RTI_DATA2_MEM           RDMAB(0x1c8)
                    277: #define         RX_UFC_A(x)            ((uint64_t)(x) << 48)
                    278: #define         RX_UFC_B(x)            ((uint64_t)(x) << 32)
                    279: #define         RX_UFC_C(x)            ((uint64_t)(x) << 16)
                    280: #define         RX_UFC_D(x)            ((uint64_t)(x) << 0)
                    281: #define        RX_PA_CFG               RDMAB(0x1d0)
                    282: #define         IGNORE_FRAME_ERROR     (1ULL << 62)
                    283: #define         IGNORE_SNAP_OUI        (1ULL << 61)
                    284: #define         IGNORE_LLC_CTRL        (1ULL << 60)
                    285: #define         SCATTER_MODE           (1ULL << 57)
                    286: #define         STRIP_VLAN_TAG         (1ULL << 48)
                    287:
                    288: /*
                    289:  * Receive descriptor (RxD) format.
                    290:  * There are three formats of receive descriptors, 1, 3 and 5 buffer format.
                    291:  */
                    292: #define        RX_MODE_1 1
                    293: #define        RX_MODE_3 3
                    294: #define        RX_MODE_5 5
                    295:
                    296: struct rxd1 {
                    297:        uint64_t rxd_hcontrol;
                    298:        uint64_t rxd_control1;
                    299:        uint64_t rxd_control2;
                    300:        uint64_t rxd_buf0;
                    301: };
                    302:
                    303: /* 4k struct for 5 buffer mode */
                    304: #define        NDESC_1BUFMODE          127     /* # desc/page for 5-buffer mode */
                    305: struct rxd1_4k {
                    306:        struct rxd1 r4_rxd[NDESC_1BUFMODE];
                    307:        uint64_t pad[3];
                    308:        uint64_t r4_next; /* phys address of next 4k buffer */
                    309: };
                    310:
                    311: struct rxd3 {
                    312:        uint64_t rxd_hcontrol;
                    313:        uint64_t rxd_control1;
                    314:        uint64_t rxd_control2;
                    315:        uint64_t rxd_buf0;
                    316:        uint64_t rxd_buf1;
                    317:        uint64_t rxd_buf2;
                    318: };
                    319:
                    320: struct rxd5 {
                    321:        uint64_t rxd_control3;
                    322:        uint64_t rxd_control1;
                    323:        uint64_t rxd_control2;
                    324:        uint64_t rxd_buf0;
                    325:        uint64_t rxd_buf1;
                    326:        uint64_t rxd_buf2;
                    327:        uint64_t rxd_buf3;
                    328:        uint64_t rxd_buf4;
                    329: };
                    330:
                    331: /* 4k struct for 5 buffer mode */
                    332: #define        NDESC_5BUFMODE          63      /* # desc/page for 5-buffer mode */
                    333: #define        XGE_PAGE                4096    /* page size used for receive */
                    334: struct rxd5_4k {
                    335:        struct rxd5 r4_rxd[NDESC_5BUFMODE];
                    336:        uint64_t pad[7];
                    337:        uint64_t r4_next; /* phys address of next 4k buffer */
                    338: };
                    339:
                    340: #define        RXD_MKCTL3(h,bs3,bs4)   \
                    341:        (((uint64_t)(h) << 32) | ((uint64_t)(bs3) << 16) | (uint64_t)(bs4))
                    342: #define        RXD_MKCTL2(bs0,bs1,bs2) \
                    343:        (((uint64_t)(bs0) << 48) | ((uint64_t)(bs1) << 32) | \
                    344:        ((uint64_t)(bs2) << 16))
                    345:
                    346: #define        RXD_CTL2_BUF0SIZ(x)     (((x) >> 48) & 0xffff)
                    347: #define        RXD_CTL2_BUF1SIZ(x)     (((x) >> 32) & 0xffff)
                    348: #define        RXD_CTL2_BUF2SIZ(x)     (((x) >> 16) & 0xffff)
                    349: #define        RXD_CTL3_BUF3SIZ(x)     (((x) >> 16) & 0xffff)
                    350: #define        RXD_CTL3_BUF4SIZ(x)     ((x) & 0xffff)
                    351: #define        RXD_CTL1_OWN            (1ULL << 56)
                    352: #define        RXD_CTL1_XCODE(x)       (((x) >> 48) & 0xf)     /* Status bits */
                    353: #define         RXD_CTL1_X_OK          0
                    354: #define         RXD_CTL1_X_PERR        1       /* Parity error */
                    355: #define         RXD_CTL1_X_ABORT       2       /* Abort during xfer */
                    356: #define         RXD_CTL1_X_PA          3       /* Parity error and abort */
                    357: #define         RXD_CTL1_X_RDA         4       /* RDA failure */
                    358: #define         RXD_CTL1_X_UP          5       /* Unknown protocol */
                    359: #define         RXD_CTL1_X_FI          6       /* Frame integrity (FCS) error */
                    360: #define         RXD_CTL1_X_BSZ         7       /* Buffer size error */
                    361: #define         RXD_CTL1_X_ECC         8       /* Internal ECC */
                    362: #define         RXD_CTL1_X_UNK         15      /* Unknown error */
                    363: #define        RXD_CTL1_PROTOS(x)      (((x) >> 32) & 0xff)
                    364: #define         RXD_CTL1_P_VLAN        0x80    /* VLAN tagged */
                    365: #define         RXD_CTL1_P_MSK         0x60    /* Mask for frame type */
                    366: #define          RXD_CTL1_P_DIX        0x00
                    367: #define          RXD_CTL1_P_LLC        0x20
                    368: #define          RXD_CTL1_P_SNAP       0x40
                    369: #define          RXD_CTL1_P_IPX        0x60
                    370: #define         RXD_CTL1_P_IPv4        0x10
                    371: #define         RXD_CTL1_P_IPv6        0x08
                    372: #define         RXD_CTL1_P_IPFRAG      0x04
                    373: #define         RXD_CTL1_P_TCP         0x02
                    374: #define         RXD_CTL1_P_UDP         0x01
                    375: #define        RXD_CTL1_L3CSUM(x)      (((x) >> 16) & 0xffff)
                    376: #define        RXD_CTL1_L4CSUM(x)      ((x) & 0xffff)
                    377: #define        RXD_CTL2_VLANTAG(x)     ((x) & 0xffff)
                    378:
                    379: /*
                    380:  * MAC Configuration/Status
                    381:  */
                    382: #define        MAC_INT_STATUS          MACRB(0x000)
                    383: #define         MAC_TMAC_INT           (1ULL<<63)
                    384: #define         MAC_RMAC_INT           (1ULL<<62)
                    385: #define        MAC_INT_MASK            MACRB(0x008)
                    386: #define        MAC_TMAC_ERR_MASK       MACRB(0x018)
                    387: #define        MAC_RMAC_ERR_REG        MACRB(0x028)
                    388: #define         RMAC_LINK_STATE_CHANGE_INT (1ULL<<32)
                    389: #define        MAC_RMAC_ERR_MASK       MACRB(0x030)
                    390:
                    391: #define        MAC_CFG                 MACRB(0x0100)
                    392: #define         TMAC_EN                (1ULL<<63)
                    393: #define         RMAC_EN                (1ULL<<62)
                    394: #define         UTILZATION_CALC_SEL    (1ULL<<61)
                    395: #define         TMAC_LOOPBACK          (1ULL<<60)
                    396: #define         TMAC_APPEND_PAD        (1ULL<<59)
                    397: #define         RMAC_STRIP_FCS         (1ULL<<58)
                    398: #define         RMAC_STRIP_PAD         (1ULL<<57)
                    399: #define         RMAC_PROM_EN           (1ULL<<56)
                    400: #define         RMAC_DISCARD_PFRM      (1ULL<<55)
                    401: #define         RMAC_BCAST_EN          (1ULL<<54)
                    402: #define         RMAC_ALL_ADDR_EN       (1ULL<<53)
                    403: #define        RMAC_MAX_PYLD_LEN       MACRB(0x0110)
                    404: #define         RMAC_PYLD_LEN(x)       ((uint64_t)(x) << 48)
                    405: #define        RMAC_CFG_KEY            MACRB(0x0120)
                    406: #define         RMAC_KEY_VALUE         (0x4c0dULL<<48)
                    407: #define        RMAC_ADDR_CMD_MEM       MACRB(0x0128)
                    408: #define         RMAC_ADDR_CMD_MEM_WE   (1ULL<<56)
                    409: #define         RMAC_ADDR_CMD_MEM_STR  (1ULL<<48)
                    410: #define         RMAC_ADDR_CMD_MEM_OFF(x) ((uint64_t)(x) << 32)
                    411: #define        MAX_MCAST_ADDR          64      /* slots in mcast table */
                    412: #define        RMAC_ADDR_DATA0_MEM     MACRB(0x0130)
                    413: #define        RMAC_ADDR_DATA1_MEM     MACRB(0x0138)
                    414: #define        RMAC_PAUSE_CFG          MACRB(0x150)
                    415: #define         RMAC_PAUSE_GEN_EN      (1ULL<<63)
                    416: #define         RMAC_PAUSE_RCV_EN      (1ULL<<62)
                    417:
                    418: /*
                    419:  * RLDRAM registers.
                    420:  */
                    421: #define        MC_INT_MASK             RLDRB(0x008)
                    422: #define        MC_ERR_MASK             RLDRB(0x018)
                    423:
                    424: #define        RX_QUEUE_CFG            RLDRB(0x100)
                    425: #define         MC_QUEUE(q,s)          ((uint64_t)(s)<<(56-(q*8)))
                    426: #define        MC_RLDRAM_MRS           RLDRB(0x108)
                    427: #define         MC_QUEUE_SIZE_ENABLE   (1ULL<<24)
                    428: #define         MC_RLDRAM_MRS_ENABLE   (1ULL<<16)
                    429:
                    430: /*
                    431:  * XGXS registers.
                    432:  */
                    433: /* XGXS control/statue */
                    434: #define        XGXS_INT_MASK           XGXSB(0x008)
                    435: #define        XGXS_TXGXS_ERR_MASK     XGXSB(0x018)
                    436: #define        XGXS_RXGXS_ERR_MASK     XGXSB(0x030)
                    437: #define        XGXS_CFG                XGXSB(0x0100)

CVSweb