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

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

1.1     ! nbrk        1: /*     $OpenBSD: if_myxreg.h,v 1.2 2007/06/01 18:07:08 reyk Exp $      */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2007 Reyk Floeter <reyk@openbsd.org>
        !             5:  *
        !             6:  * Permission to use, copy, modify, and distribute this software for any
        !             7:  * purpose with or without fee is hereby granted, provided that the above
        !             8:  * copyright notice and this permission notice appear in all copies.
        !             9:  *
        !            10:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            11:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            12:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            13:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            14:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            15:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            16:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            17:  */
        !            18:
        !            19: /*
        !            20:  * Register definitions for the Myricom Myri-10G Lanai-Z8E Ethernet chipsets.
        !            21:  */
        !            22:
        !            23: #ifndef _MYX_REG_H
        !            24: #define _MYX_REG_H
        !            25:
        !            26: /*
        !            27:  * Common definitions
        !            28:  */
        !            29:
        !            30: #define MYXBAR0                        PCI_MAPREG_START
        !            31:
        !            32: #define MYX_NRXDESC            256
        !            33: #define MYX_NTXDESC_MIN                2
        !            34: #define MYX_IRQCOALDELAY       30
        !            35: #define MYX_IRQDEASSERTWAIT    1
        !            36: #define MYX_MAX_MTU_SMALL      (ETHERMTU + ETHER_HDR_LEN + 4)
        !            37: #define MYX_MAX_MTU_BIG                PAGE_SIZE
        !            38:
        !            39: #define MYXALIGN_CMD           64
        !            40: #define MYXALIGN_DATA          PAGE_SIZE
        !            41:
        !            42: #define MYX_ADDRHIGH(_v)       ((_v >> 32) & 0xffffffff)
        !            43: #define MYX_ADDRLOW(_v)                (_v & 0xffffffff)
        !            44:
        !            45: /*
        !            46:  * PCI memory/register layout
        !            47:  */
        !            48:
        !            49: #define MYX_SRAM               0x00000000      /* SRAM offset */
        !            50: #define MYX_SRAM_SIZE          0x001dff00      /* SRAM size */
        !            51: #define  MYX_HEADER_POS                0x0000003c      /* Header position offset */
        !            52: #define  MYX_HEADER_POS_SIZE   0x00000004      /* Header position size */
        !            53: #define  MYX_FW                        0x00100000      /* Firmware offset */
        !            54: #define   MYX_FW_BOOT          0x00100008      /* Firmware boot offset */
        !            55: #define  MYX_EEPROM            0x001dfe00      /* EEPROM offset */
        !            56: #define  MYX_EEPROM_SIZE       0x00000100      /* EEPROM size */
        !            57: #define MYX_BOOT               0x00fc0000      /* Boot handoff */
        !            58: #define MYX_RDMA               0x00fc01c0      /* Dummy RDMA */
        !            59: #define MYX_CMD                        0x00f80000      /* Command offset */
        !            60:
        !            61: /*
        !            62:  * Firmware definitions
        !            63:  */
        !            64:
        !            65: #define MYXFW_ALIGNED          "myx-eth_z8e"
        !            66: #define MYXFW_UNALIGNED                "myx-ethp_z8e"
        !            67: #define MYXFW_TYPE_ETH         0x45544820
        !            68: #define MYXFW_VER              "1.4."          /* stored as a string... */
        !            69:
        !            70: #define MYXFW_MIN_LEN          (MYX_HEADER_POS + MYX_HEADER_POS_SIZE)
        !            71:
        !            72: struct myx_firmware_hdr {
        !            73:        u_int32_t       fw_hdrlength;
        !            74:        u_int32_t       fw_type;
        !            75:        u_int8_t        fw_version[128];
        !            76:        u_int32_t       fw_sram_size;
        !            77:        u_int32_t       fw_specs;
        !            78:        u_int32_t       fw_specs_len;
        !            79: } __packed;
        !            80:
        !            81:
        !            82: /*
        !            83:  * Commands, descriptors, and DMA structures
        !            84:  */
        !            85:
        !            86: struct myx_cmd {
        !            87:        u_int32_t       mc_cmd;
        !            88:        u_int32_t       mc_data0;
        !            89:        u_int32_t       mc_data1;
        !            90:        u_int32_t       mc_data2;
        !            91:        u_int32_t       mc_addr_high;
        !            92:        u_int32_t       mc_addr_low;
        !            93:        u_int8_t        mc_pad[40];             /* pad up to 64 bytes */
        !            94: } __packed;
        !            95:
        !            96: struct myx_response {
        !            97:        u_int32_t       mr_data;
        !            98:        u_int32_t       mr_result;
        !            99: } __packed;
        !           100:
        !           101: struct myx_bootcmd {
        !           102:        u_int32_t       bc_addr_high;
        !           103:        u_int32_t       bc_addr_low;
        !           104:        u_int32_t       bc_result;
        !           105:        u_int32_t       bc_offset;
        !           106:        u_int32_t       bc_length;
        !           107:        u_int32_t       bc_copyto;
        !           108:        u_int32_t       bc_jumpto;
        !           109:        u_int8_t        bc_pad[36];             /* pad up to 64 bytes */
        !           110: } __packed;
        !           111:
        !           112: struct myx_rdmacmd {
        !           113:        u_int32_t       rc_addr_high;
        !           114:        u_int32_t       rc_addr_low;
        !           115:        u_int32_t       rc_result;
        !           116:        u_int32_t       rc_rdma_high;
        !           117:        u_int32_t       rc_rdma_low;
        !           118:        u_int32_t       rc_enable;
        !           119: #define  MYXRDMA_ON    1
        !           120: #define  MYXRDMA_OFF   0
        !           121:        u_int8_t        rc_pad[40];             /* pad up to 64 bytes */
        !           122: } __packed;
        !           123:
        !           124: struct myx_status {
        !           125:        u_int32_t       ms_reserved;
        !           126:        u_int32_t       ms_dropped_pause;
        !           127:        u_int32_t       ms_dropped_unicast;
        !           128:        u_int32_t       ms_dropped_crc32err;
        !           129:        u_int32_t       ms_dropped_phyerr;
        !           130:        u_int32_t       ms_dropped_mcast;
        !           131:        u_int32_t       ms_txdonecnt;
        !           132:        u_int32_t       ms_linkstate;
        !           133: #define  MYXSTS_LINKDOWN       0
        !           134: #define  MYXSTS_LINKUP         1
        !           135: #define  MYXSTS_LINKMYRINET    2
        !           136: #define  MYXSTS_LINKUNKNOWN    3
        !           137:        u_int32_t       ms_dropped_linkoverflow;
        !           138:        u_int32_t       ms_dropped_linkerror;
        !           139:        u_int32_t       ms_dropped_runt;
        !           140:        u_int32_t       ms_dropped_overrun;
        !           141:        u_int32_t       ms_dropped_smallbufunderrun;
        !           142:        u_int32_t       ms_dropped_bigbufunderrun;
        !           143:        u_int32_t       ms_rdmatags_available;
        !           144: #define  MYXSTS_RDMAON 1
        !           145: #define  MYXSTS_RDMAOFF        0
        !           146:        u_int8_t        ms_txstopped;
        !           147:        u_int8_t        ms_linkdowncnt;
        !           148:        u_int8_t        ms_statusupdated;
        !           149:        u_int8_t        ms_isvalid;
        !           150: } __packed;
        !           151:
        !           152: struct myx_rxdesc {
        !           153:        u_int16_t       rx_csum;
        !           154:        u_int16_t       rx_length;
        !           155: } __packed;
        !           156:
        !           157: struct myx_rxbufdesc {
        !           158:        u_int32_t       rb_addr_high;
        !           159:        u_int32_t       rb_addr_low;
        !           160: } __packed;
        !           161:
        !           162: struct myx_txdesc {
        !           163:        u_int32_t       tx_addr_high;
        !           164:        u_int32_t       tx_addr_low;
        !           165:        u_int16_t       tx_hdr_offset;
        !           166:        u_int16_t       tx_length;
        !           167:        u_int8_t        tx_pad;
        !           168:        u_int8_t        tx_nsegs;
        !           169:        u_int8_t        tx_cksum_offset;
        !           170:        u_int8_t        tx_flags;
        !           171: #define  MYXTXD_FLAGS_SMALL    (1<<0)
        !           172: #define  MYXTXD_FLAGS_FIRST    (1<<1)
        !           173: #define  MYXTXD_FLAGS_ALIGN_ODD        (1<<2)
        !           174: #define  MYXTXD_FLAGS_CKSUM    (1<<3)
        !           175: #define  MYXTXD_FLAGS_NO_TSO   (1<<4)
        !           176:
        !           177: #define  MYXTXD_FLAGS_TSO_HDR  (1<<0)
        !           178: #define  MYXTXD_FLAGS_TSO_LAST (1<<3)
        !           179: #define  MYXTXD_FLAGS_TSO_CHOP (1<<4)
        !           180: #define  MYXTXD_FLAGS_TSO_PLD  (1<<5)
        !           181: } __packed;
        !           182:
        !           183: enum {
        !           184:        MYXCMD_NONE                     = 0,
        !           185:        MYXCMD_RESET                    = 1,
        !           186:        MYXCMD_GET_VERSION              = 2,
        !           187:        MYXCMD_SET_INTRQDMA             = 3,
        !           188:        MYXCMD_SET_BIGBUFSZ             = 4,
        !           189:        MYXCMD_SET_SMALLBUFSZ           = 5,
        !           190:        MYXCMD_GET_TXRINGOFF            = 6,
        !           191:        MYXCMD_GET_RXSMALLRINGOFF       = 7,
        !           192:        MYXCMD_GET_RXBIGRINGOFF         = 8,
        !           193:        MYXCMD_GET_INTRACKOFF           = 9,
        !           194:        MYXCMD_GET_INTRDEASSERTOFF      = 10,
        !           195:        MYXCMD_GET_TXRINGSZ             = 11,
        !           196:        MYXCMD_GET_RXRINGSZ             = 12,
        !           197:        MYXCMD_SET_INTRQSZ              = 13,
        !           198:        MYXCMD_SET_IFUP                 = 14,
        !           199:        MYXCMD_SET_IFDOWN               = 15,
        !           200:        MYXCMD_SET_MTU                  = 16,
        !           201:        MYXCMD_GET_INTRCOALDELAYOFF     = 17,
        !           202:        MYXCMD_SET_STATSINTVL           = 18,
        !           203:        MYXCMD_SET_STATSDMA_OLD         = 19,
        !           204:        MYXCMD_SET_PROMISC              = 20,
        !           205:        MYXCMD_UNSET_PROMISC            = 21,
        !           206:        MYXCMD_SET_LLADDR               = 22,
        !           207:        MYXCMD_SET_FC                   = 23,
        !           208:        MYXCMD_UNSET_FC                 = 24,
        !           209: #define  MYXCMD_FC_DEFAULT             MYXCMD_SET_FC   /* set flow control */
        !           210:        MYXCMD_DMA_TEST                 = 25,
        !           211:        MYXCMD_SET_ALLMULTI             = 26,
        !           212:        MYXCMD_UNSET_ALLMULTI           = 27,
        !           213:        MYXCMD_SET_MCASTGROUP           = 28,
        !           214:        MYXCMD_UNSET_MCASTGROUP         = 29,
        !           215:        MYXCMD_UNSET_MCAST              = 30,
        !           216:        MYXCMD_SET_STATSDMA             = 31,
        !           217:        MYXCMD_UNALIGNED_DMA_TEST       = 32,
        !           218:        MYXCMD_GET_UNALIGNED_STATUS     = 33,
        !           219:        MYXCMD_MAX                      = 34
        !           220: };
        !           221:
        !           222: enum {
        !           223:        MYXCMD_OK                       = 0,
        !           224:        MYXCMD_UNKNOWN                  = 1,
        !           225:        MYXCMD_ERR_RANGE                = 2,
        !           226:        MYXCMD_ERR_BUSY                 = 3,
        !           227:        MYXCMD_ERR_EMPTY                = 4,
        !           228:        MYXCMD_ERR_CLOSED               = 5,
        !           229:        MYXCMD_ERR_HASH                 = 6,
        !           230:        MYXCMD_ERR_BADPORT              = 7,
        !           231:        MYXCMD_ERR_RES                  = 8,
        !           232:        MYXCMD_ERR_MULTICAST            = 9,
        !           233:        MYXCMD_ERR_UNALIGNED            = 10
        !           234: };
        !           235:
        !           236: #endif /* _MYX_REG_H */

CVSweb