1*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 2*04b6cca3Slucy wang - Sun Microsystems - Beijing China * CDDL HEADER START 3*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 4*04b6cca3Slucy wang - Sun Microsystems - Beijing China * The contents of this file are subject to the terms of the 5*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Common Development and Distribution License (the "License"). 6*04b6cca3Slucy wang - Sun Microsystems - Beijing China * You may not use this file except in compliance with the License. 7*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 8*04b6cca3Slucy wang - Sun Microsystems - Beijing China * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*04b6cca3Slucy wang - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing. 10*04b6cca3Slucy wang - Sun Microsystems - Beijing China * See the License for the specific language governing permissions 11*04b6cca3Slucy wang - Sun Microsystems - Beijing China * and limitations under the License. 12*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 13*04b6cca3Slucy wang - Sun Microsystems - Beijing China * When distributing Covered Code, include this CDDL HEADER in each 14*04b6cca3Slucy wang - Sun Microsystems - Beijing China * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*04b6cca3Slucy wang - Sun Microsystems - Beijing China * If applicable, add the following below this CDDL HEADER, with the 16*04b6cca3Slucy wang - Sun Microsystems - Beijing China * fields enclosed by brackets "[]" replaced with your own identifying 17*04b6cca3Slucy wang - Sun Microsystems - Beijing China * information: Portions Copyright [yyyy] [name of copyright owner] 18*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 19*04b6cca3Slucy wang - Sun Microsystems - Beijing China * CDDL HEADER END 20*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 21*04b6cca3Slucy wang - Sun Microsystems - Beijing China 22*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 23*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Copyright 2007-2009 Myricom, Inc. All rights reserved. 24*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Use is subject to license terms. 25*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 26*04b6cca3Slucy wang - Sun Microsystems - Beijing China 27*04b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef _myri10ge_mcp_h 28*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define _myri10ge_mcp_h 29*04b6cca3Slucy wang - Sun Microsystems - Beijing China 30*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_VERSION_MAJOR 1 31*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_VERSION_MINOR 4 32*04b6cca3Slucy wang - Sun Microsystems - Beijing China 33*04b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW 34*04b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef _stdint_h_ 35*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed char int8_t; 36*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed short int16_t; 37*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed int int32_t; 38*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed long long int64_t; 39*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned char uint8_t; 40*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned short uint16_t; 41*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned int uint32_t; 42*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned long long uint64_t; 43*04b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 44*04b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 45*04b6cca3Slucy wang - Sun Microsystems - Beijing China 46*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 47*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_dma_addr { 48*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t high; 49*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t low; 50*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 51*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_dma_addr mcp_dma_addr_t; 52*04b6cca3Slucy wang - Sun Microsystems - Beijing China 53*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 4 Bytes */ 54*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_slot { 55*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t checksum; 56*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 57*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 58*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_slot mcp_slot_t; 59*04b6cca3Slucy wang - Sun Microsystems - Beijing China 60*04b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW_NDIS 61*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8-byte descriptor, exclusively used by NDIS drivers. */ 62*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_slot_8 { 63*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Place hash value at the top so it gets written before length. 64*04b6cca3Slucy wang - Sun Microsystems - Beijing China * The driver polls length. 65*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 66*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t hash; 67*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t checksum; 68*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 69*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 70*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_slot_8 mcp_slot_8_t; 71*04b6cca3Slucy wang - Sun Microsystems - Beijing China 72*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Two bits of length in mcp_slot are used to indicate hash type. */ 73*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_NULL (0 << 14) /* bit 15:14 = 00 */ 74*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_IPV4 (1 << 14) /* bit 15:14 = 01 */ 75*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TCP_IPV4 (2 << 14) /* bit 15:14 = 10 */ 76*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_MASK (3 << 14) /* bit 15:14 = 11 */ 77*04b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 78*04b6cca3Slucy wang - Sun Microsystems - Beijing China 79*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 64 Bytes */ 80*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_cmd { 81*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t cmd; 82*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data0; /* will be low portion if data > 32 bits */ 83*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 */ 84*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data1; /* will be high portion if data > 32 bits */ 85*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data2; /* currently unused.. */ 86*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 16 */ 87*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_dma_addr response_addr; 88*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 24 */ 89*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad[40]; 90*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 91*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_cmd mcp_cmd_t; 92*04b6cca3Slucy wang - Sun Microsystems - Beijing China 93*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 94*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_cmd_response { 95*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data; 96*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t result; 97*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 98*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_cmd_response mcp_cmd_response_t; 99*04b6cca3Slucy wang - Sun Microsystems - Beijing China 100*04b6cca3Slucy wang - Sun Microsystems - Beijing China 101*04b6cca3Slucy wang - Sun Microsystems - Beijing China 102*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 103*04b6cca3Slucy wang - Sun Microsystems - Beijing China flags used in mcp_kreq_ether_send_t: 104*04b6cca3Slucy wang - Sun Microsystems - Beijing China 105*04b6cca3Slucy wang - Sun Microsystems - Beijing China The SMALL flag is only needed in the first segment. It is raised 106*04b6cca3Slucy wang - Sun Microsystems - Beijing China for packets that are total less or equal 512 bytes. 107*04b6cca3Slucy wang - Sun Microsystems - Beijing China 108*04b6cca3Slucy wang - Sun Microsystems - Beijing China The CKSUM flag must be set in all segments. 109*04b6cca3Slucy wang - Sun Microsystems - Beijing China 110*04b6cca3Slucy wang - Sun Microsystems - Beijing China The PADDED flags is set if the packet needs to be padded, and it 111*04b6cca3Slucy wang - Sun Microsystems - Beijing China must be set for all segments. 112*04b6cca3Slucy wang - Sun Microsystems - Beijing China 113*04b6cca3Slucy wang - Sun Microsystems - Beijing China The MXGEFW_FLAGS_ALIGN_ODD must be set if the cumulative 114*04b6cca3Slucy wang - Sun Microsystems - Beijing China length of all previous segments was odd. 115*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 116*04b6cca3Slucy wang - Sun Microsystems - Beijing China 117*04b6cca3Slucy wang - Sun Microsystems - Beijing China 118*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_SMALL 0x1 119*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_HDR 0x1 120*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_FIRST 0x2 121*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_ALIGN_ODD 0x4 122*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_CKSUM 0x8 123*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_LAST 0x8 124*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_NO_TSO 0x10 125*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_CHOP 0x10 126*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_PLD 0x20 127*04b6cca3Slucy wang - Sun Microsystems - Beijing China 128*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SEND_SMALL_SIZE 1520 129*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_MAX_MTU 9400 130*04b6cca3Slucy wang - Sun Microsystems - Beijing China 131*04b6cca3Slucy wang - Sun Microsystems - Beijing China union mcp_pso_or_cumlen { 132*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t pseudo_hdr_offset; 133*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t cum_len; 134*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 135*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef union mcp_pso_or_cumlen mcp_pso_or_cumlen_t; 136*04b6cca3Slucy wang - Sun Microsystems - Beijing China 137*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_MAX_SEND_DESC 12 138*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_PAD 2 139*04b6cca3Slucy wang - Sun Microsystems - Beijing China 140*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 16 Bytes */ 141*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_kreq_ether_send { 142*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_high; 143*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_low; 144*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t pseudo_hdr_offset; 145*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 146*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad; 147*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t rdma_count; 148*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t cksum_offset; /* where to start computing cksum */ 149*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t flags; /* as defined above */ 150*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 151*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_kreq_ether_send mcp_kreq_ether_send_t; 152*04b6cca3Slucy wang - Sun Microsystems - Beijing China 153*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 154*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_kreq_ether_recv { 155*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_high; 156*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_low; 157*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 158*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_kreq_ether_recv mcp_kreq_ether_recv_t; 159*04b6cca3Slucy wang - Sun Microsystems - Beijing China 160*04b6cca3Slucy wang - Sun Microsystems - Beijing China 161*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Commands */ 162*04b6cca3Slucy wang - Sun Microsystems - Beijing China 163*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_BOOT_HANDOFF 0xfc0000 164*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_BOOT_DUMMY_RDMA 0xfc01c0 165*04b6cca3Slucy wang - Sun Microsystems - Beijing China 166*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_CMD 0xf80000 167*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_4 0x200000 168*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_1 0x240000 169*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_2 0x280000 170*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_3 0x2c0000 171*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_RECV_SMALL 0x300000 172*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_RECV_BIG 0x340000 173*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_GO 0x380000 174*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_STOP 0x3C0000 175*04b6cca3Slucy wang - Sun Microsystems - Beijing China 176*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND(n) (0x200000 + (((n) & 0x03) * 0x40000)) 177*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_OFFSET(n) (MXGEFW_ETH_SEND(n) - MXGEFW_ETH_SEND_4) 178*04b6cca3Slucy wang - Sun Microsystems - Beijing China 179*04b6cca3Slucy wang - Sun Microsystems - Beijing China enum myri10ge_mcp_cmd_type { 180*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NONE = 0, 181*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Reset the mcp, it is left in a safe state, waiting 182*04b6cca3Slucy wang - Sun Microsystems - Beijing China for the driver to set all its parameters */ 183*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET = 1, 184*04b6cca3Slucy wang - Sun Microsystems - Beijing China 185*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the version number of the current firmware.. 186*04b6cca3Slucy wang - Sun Microsystems - Beijing China (may be available in the eeprom strings..? */ 187*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_GET_MCP_VERSION = 2, 188*04b6cca3Slucy wang - Sun Microsystems - Beijing China 189*04b6cca3Slucy wang - Sun Microsystems - Beijing China 190*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which must be set by the driver before it can 191*04b6cca3Slucy wang - Sun Microsystems - Beijing China issue MXGEFW_CMD_ETHERNET_UP. They persist until the next 192*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET is issued */ 193*04b6cca3Slucy wang - Sun Microsystems - Beijing China 194*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_INTRQ_DMA = 3, 195*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = LSW of the host address 196*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = MSW of the host address 197*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data2 = slice number if multiple slices are used 198*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 199*04b6cca3Slucy wang - Sun Microsystems - Beijing China 200*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_BIG_BUFFER_SIZE = 4, /* in bytes, power of 2 */ 201*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_SMALL_BUFFER_SIZE = 5, /* in bytes */ 202*04b6cca3Slucy wang - Sun Microsystems - Beijing China 203*04b6cca3Slucy wang - Sun Microsystems - Beijing China 204*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which refer to lanai SRAM addresses where the 205*04b6cca3Slucy wang - Sun Microsystems - Beijing China driver must issue PIO writes for various things */ 206*04b6cca3Slucy wang - Sun Microsystems - Beijing China 207*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SEND_OFFSET = 6, 208*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SMALL_RX_OFFSET = 7, 209*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_BIG_RX_OFFSET = 8, 210*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = slice number if multiple slices are used */ 211*04b6cca3Slucy wang - Sun Microsystems - Beijing China 212*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_IRQ_ACK_OFFSET = 9, 213*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_IRQ_DEASSERT_OFFSET = 10, 214*04b6cca3Slucy wang - Sun Microsystems - Beijing China 215*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which refer to rings stored on the MCP, 216*04b6cca3Slucy wang - Sun Microsystems - Beijing China and whose size is controlled by the mcp */ 217*04b6cca3Slucy wang - Sun Microsystems - Beijing China 218*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SEND_RING_SIZE = 11, /* in bytes */ 219*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RX_RING_SIZE = 12, /* in bytes */ 220*04b6cca3Slucy wang - Sun Microsystems - Beijing China 221*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which refer to rings stored in the host, 222*04b6cca3Slucy wang - Sun Microsystems - Beijing China and whose size is controlled by the host. Note that 223*04b6cca3Slucy wang - Sun Microsystems - Beijing China all must be physically contiguous and must contain 224*04b6cca3Slucy wang - Sun Microsystems - Beijing China a power of 2 number of entries. */ 225*04b6cca3Slucy wang - Sun Microsystems - Beijing China 226*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_INTRQ_SIZE = 13, /* in bytes */ 227*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_CMD_SET_INTRQ_SIZE_FLAG_NO_STRICT_SIZE_CHECK (1 << 31) 228*04b6cca3Slucy wang - Sun Microsystems - Beijing China 229*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* command to bring ethernet interface up. Above parameters 230*04b6cca3Slucy wang - Sun Microsystems - Beijing China (plus mtu & mac address) must have been exchanged prior 231*04b6cca3Slucy wang - Sun Microsystems - Beijing China to issuing this command */ 232*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ETHERNET_UP = 14, 233*04b6cca3Slucy wang - Sun Microsystems - Beijing China 234*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* command to bring ethernet interface down. No further sends 235*04b6cca3Slucy wang - Sun Microsystems - Beijing China or receives may be processed until an MXGEFW_CMD_ETHERNET_UP 236*04b6cca3Slucy wang - Sun Microsystems - Beijing China is issued, and all interrupt queues must be flushed prior 237*04b6cca3Slucy wang - Sun Microsystems - Beijing China to ack'ing this command */ 238*04b6cca3Slucy wang - Sun Microsystems - Beijing China 239*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ETHERNET_DOWN = 15, 240*04b6cca3Slucy wang - Sun Microsystems - Beijing China 241*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* commands the driver may issue live, without resetting 242*04b6cca3Slucy wang - Sun Microsystems - Beijing China the nic. Note that increasing the mtu "live" should 243*04b6cca3Slucy wang - Sun Microsystems - Beijing China only be done if the driver has already supplied buffers 244*04b6cca3Slucy wang - Sun Microsystems - Beijing China sufficiently large to handle the new mtu. Decreasing 245*04b6cca3Slucy wang - Sun Microsystems - Beijing China the mtu live is safe */ 246*04b6cca3Slucy wang - Sun Microsystems - Beijing China 247*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_MTU = 16, 248*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_INTR_COAL_DELAY_OFFSET = 17, /* in microseconds */ 249*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_INTERVAL = 18, /* in microseconds */ 250*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_DMA_OBSOLETE = 19, /* replaced by SET_STATS_DMA_V2 */ 251*04b6cca3Slucy wang - Sun Microsystems - Beijing China 252*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_PROMISC = 20, 253*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_PROMISC = 21, 254*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_SET_MAC_ADDRESS = 22, 255*04b6cca3Slucy wang - Sun Microsystems - Beijing China 256*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_FLOW_CONTROL = 23, 257*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_FLOW_CONTROL = 24, 258*04b6cca3Slucy wang - Sun Microsystems - Beijing China 259*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* do a DMA test 260*04b6cca3Slucy wang - Sun Microsystems - Beijing China data0,data1 = DMA address 261*04b6cca3Slucy wang - Sun Microsystems - Beijing China data2 = RDMA length (MSH), WDMA length (LSH) 262*04b6cca3Slucy wang - Sun Microsystems - Beijing China command return data = repetitions (MSH), 0.5-ms ticks (LSH) 263*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 264*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DMA_TEST = 25, 265*04b6cca3Slucy wang - Sun Microsystems - Beijing China 266*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_ALLMULTI = 26, 267*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_ALLMULTI = 27, 268*04b6cca3Slucy wang - Sun Microsystems - Beijing China 269*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* returns MXGEFW_CMD_ERROR_MULTICAST 270*04b6cca3Slucy wang - Sun Microsystems - Beijing China if there is no room in the cache 271*04b6cca3Slucy wang - Sun Microsystems - Beijing China data0,MSH(data1) = multicast group address */ 272*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_JOIN_MULTICAST_GROUP = 28, 273*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* returns MXGEFW_CMD_ERROR_MULTICAST 274*04b6cca3Slucy wang - Sun Microsystems - Beijing China if the address is not in the cache, 275*04b6cca3Slucy wang - Sun Microsystems - Beijing China or is equal to FF-FF-FF-FF-FF-FF 276*04b6cca3Slucy wang - Sun Microsystems - Beijing China data0,MSH(data1) = multicast group address */ 277*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_LEAVE_MULTICAST_GROUP = 29, 278*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_LEAVE_ALL_MULTICAST_GROUPS = 30, 279*04b6cca3Slucy wang - Sun Microsystems - Beijing China 280*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_DMA_V2 = 31, 281*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0, data1 = bus addr, 282*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data2 = sizeof(struct mcp_irq_data) from driver point of view, allows 283*04b6cca3Slucy wang - Sun Microsystems - Beijing China * adding new stuff to mcp_irq_data without changing the ABI 284*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 285*04b6cca3Slucy wang - Sun Microsystems - Beijing China * If multiple slices are used, data2 contains both the size of the 286*04b6cca3Slucy wang - Sun Microsystems - Beijing China * structure (in the lower 16 bits) and the slice number 287*04b6cca3Slucy wang - Sun Microsystems - Beijing China * (in the upper 16 bits). 288*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 289*04b6cca3Slucy wang - Sun Microsystems - Beijing China 290*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNALIGNED_TEST = 32, 291*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* same than DMA_TEST (same args) but abort with UNALIGNED on unaligned 292*04b6cca3Slucy wang - Sun Microsystems - Beijing China chipset */ 293*04b6cca3Slucy wang - Sun Microsystems - Beijing China 294*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNALIGNED_STATUS = 33, 295*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* return data = boolean, true if the chipset is known to be unaligned */ 296*04b6cca3Slucy wang - Sun Microsystems - Beijing China 297*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ALWAYS_USE_N_BIG_BUFFERS = 34, 298*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = number of big buffers to use. It must be 0 or a power of 2. 299*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 0 indicates that the NIC consumes as many buffers as they are required 300*04b6cca3Slucy wang - Sun Microsystems - Beijing China * for packet. This is the default behavior. 301*04b6cca3Slucy wang - Sun Microsystems - Beijing China * A power of 2 number indicates that the NIC always uses the specified 302*04b6cca3Slucy wang - Sun Microsystems - Beijing China * number of buffers for each big receive packet. 303*04b6cca3Slucy wang - Sun Microsystems - Beijing China * It is up to the driver to ensure that this value is big enough for 304*04b6cca3Slucy wang - Sun Microsystems - Beijing China * the NIC to be able to receive maximum-sized packets. 305*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 306*04b6cca3Slucy wang - Sun Microsystems - Beijing China 307*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_MAX_RSS_QUEUES = 35, 308*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ENABLE_RSS_QUEUES = 36, 309*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = number of slices n (0, 1, ..., n-1) to enable 310*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = interrupt mode | use of multiple transmit queues. 311*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 0=share one INTx/MSI. 312*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 1=use one MSI-X per queue. 313*04b6cca3Slucy wang - Sun Microsystems - Beijing China * If all queues share one interrupt, the driver must have set 314*04b6cca3Slucy wang - Sun Microsystems - Beijing China * RSS_SHARED_INTERRUPT_DMA before enabling queues. 315*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 2=enable both receive and send queues. 316*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Without this bit set, only one send queue (slice 0's send queue) 317*04b6cca3Slucy wang - Sun Microsystems - Beijing China * is enabled. The receive queues are always enabled. 318*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 319*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_INTR_MODE_SHARED 0x0 320*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_INTR_MODE_ONE_PER_SLICE 0x1 321*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_ENABLE_MULTIPLE_TX_QUEUES 0x2 322*04b6cca3Slucy wang - Sun Microsystems - Beijing China 323*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_SHARED_INTERRUPT_MASK_OFFSET = 37, 324*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_SHARED_INTERRUPT_DMA = 38, 325*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0, data1 = bus address lsw, msw */ 326*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_TABLE_OFFSET = 39, 327*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the offset of the indirection table */ 328*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_TABLE_SIZE = 40, 329*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* set the size of the indirection table */ 330*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_KEY_OFFSET = 41, 331*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the offset of the secret key */ 332*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RSS_KEY_UPDATED = 42, 333*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* tell nic that the secret key's been updated */ 334*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_ENABLE = 43, 335*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = enable/disable rss 336*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 0: disable rss. nic does not distribute receive packets. 337*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: enable rss. nic distributes receive packets among queues. 338*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = hash type 339*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: IPV4 (required by RSS) 340*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 2: TCP_IPV4 (required by RSS) 341*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 3: IPV4 | TCP_IPV4 (required by RSS) 342*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 4: source port 343*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 5: source port + destination port 344*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 345*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_IPV4 0x1 346*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_TCP_IPV4 0x2 347*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_SRC_PORT 0x4 348*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_SRC_DST_PORT 0x5 349*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_MAX 0x5 350*04b6cca3Slucy wang - Sun Microsystems - Beijing China 351*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_MAX_TSO6_HDR_SIZE = 44, 352*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return data = the max. size of the entire headers of a IPv6 TSO packet. 353*04b6cca3Slucy wang - Sun Microsystems - Beijing China * If the header size of a IPv6 TSO packet is larger than the specified 354*04b6cca3Slucy wang - Sun Microsystems - Beijing China * value, then the driver must not use TSO. 355*04b6cca3Slucy wang - Sun Microsystems - Beijing China * This size restriction only applies to IPv6 TSO. 356*04b6cca3Slucy wang - Sun Microsystems - Beijing China * For IPv4 TSO, the maximum size of the headers is fixed, and the NIC 357*04b6cca3Slucy wang - Sun Microsystems - Beijing China * always has enough header buffer to store maximum-sized headers. 358*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 359*04b6cca3Slucy wang - Sun Microsystems - Beijing China 360*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_TSO_MODE = 45, 361*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = TSO mode. 362*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 0: Linux/FreeBSD style (NIC default) 363*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: NDIS/NetBSD style 364*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 365*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_TSO_MODE_LINUX 0 366*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_TSO_MODE_NDIS 1 367*04b6cca3Slucy wang - Sun Microsystems - Beijing China 368*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_MDIO_READ = 46, 369*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = dev_addr (PMA/PMD or PCS ...), data1 = register/addr */ 370*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_MDIO_WRITE = 47, 371*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = dev_addr, data1 = register/addr, data2 = value */ 372*04b6cca3Slucy wang - Sun Microsystems - Beijing China 373*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_I2C_READ = 48, 374*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Starts to get a fresh copy of one byte or of the module i2c table, the 375*04b6cca3Slucy wang - Sun Microsystems - Beijing China * obtained data is cached inside the xaui-xfi chip : 376*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data0 : 0 => get one byte, 1=> get 256 bytes 377*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 : If data0 == 0: location to refresh 378*04b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 7:0 register location 379*04b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 8:15 is the i2c slave addr (0 is interpreted as 0xA1) 380*04b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 23:16 is the i2c bus number (for multi-port NICs) 381*04b6cca3Slucy wang - Sun Microsystems - Beijing China * If data0 == 1: unused 382*04b6cca3Slucy wang - Sun Microsystems - Beijing China * The operation might take ~1ms for a single byte or ~65ms when refreshing all 256 bytes 383*04b6cca3Slucy wang - Sun Microsystems - Beijing China * During the i2c operation, MXGEFW_CMD_I2C_READ or MXGEFW_CMD_I2C_BYTE attempts 384*04b6cca3Slucy wang - Sun Microsystems - Beijing China * will return MXGEFW_CMD_ERROR_BUSY 385*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 386*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_I2C_BYTE = 49, 387*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return the last obtained copy of a given byte in the xfp i2c table 388*04b6cca3Slucy wang - Sun Microsystems - Beijing China * (copy cached during the last relevant MXGEFW_CMD_I2C_READ) 389*04b6cca3Slucy wang - Sun Microsystems - Beijing China * data0 : index of the desired table entry 390*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Return data = the byte stored at the requested index in the table 391*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 392*04b6cca3Slucy wang - Sun Microsystems - Beijing China 393*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_VPUMP_OFFSET = 50, 394*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return data = NIC memory offset of mcp_vpump_public_global */ 395*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET_VPUMP = 51, 396*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Resets the VPUMP state */ 397*04b6cca3Slucy wang - Sun Microsystems - Beijing China 398*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_MCP_SLOT_TYPE = 52, 399*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = mcp_slot type to use. 400*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 0 = the default 4B mcp_slot 401*04b6cca3Slucy wang - Sun Microsystems - Beijing China * 1 = 8B mcp_slot_8 402*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 403*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_MCP_SLOT_TYPE_MIN 0 404*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_MCP_SLOT_TYPE_WITH_HASH 1 405*04b6cca3Slucy wang - Sun Microsystems - Beijing China 406*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_THROTTLE_FACTOR = 53, 407*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* set the throttle factor for ethp_z8e 408*04b6cca3Slucy wang - Sun Microsystems - Beijing China data0 = throttle_factor 409*04b6cca3Slucy wang - Sun Microsystems - Beijing China throttle_factor = 256 * pcie-raw-speed / tx_speed 410*04b6cca3Slucy wang - Sun Microsystems - Beijing China tx_speed = 256 * pcie-raw-speed / throttle_factor 411*04b6cca3Slucy wang - Sun Microsystems - Beijing China 412*04b6cca3Slucy wang - Sun Microsystems - Beijing China For PCI-E x8: pcie-raw-speed == 16Gb/s 413*04b6cca3Slucy wang - Sun Microsystems - Beijing China For PCI-E x4: pcie-raw-speed == 8Gb/s 414*04b6cca3Slucy wang - Sun Microsystems - Beijing China 415*04b6cca3Slucy wang - Sun Microsystems - Beijing China ex1: throttle_factor == 0x1a0 (416), tx_speed == 1.23GB/s == 9.846 Gb/s 416*04b6cca3Slucy wang - Sun Microsystems - Beijing China ex2: throttle_factor == 0x200 (512), tx_speed == 1.0GB/s == 8 Gb/s 417*04b6cca3Slucy wang - Sun Microsystems - Beijing China 418*04b6cca3Slucy wang - Sun Microsystems - Beijing China with tx_boundary == 2048, max-throttle-factor == 8191 => min-speed == 500Mb/s 419*04b6cca3Slucy wang - Sun Microsystems - Beijing China with tx_boundary == 4096, max-throttle-factor == 4095 => min-speed == 1Gb/s 420*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 421*04b6cca3Slucy wang - Sun Microsystems - Beijing China 422*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_VPUMP_UP = 54, 423*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Allocates VPump Connection, Send Request and Zero copy buffer address tables */ 424*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_VPUMP_CLK = 55, 425*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Get the lanai clock */ 426*04b6cca3Slucy wang - Sun Microsystems - Beijing China 427*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_DCA_OFFSET = 56, 428*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* offset of dca control for WDMAs */ 429*04b6cca3Slucy wang - Sun Microsystems - Beijing China 430*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* VMWare NetQueue commands */ 431*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_GET_FILTERS_PER_QUEUE = 57, 432*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_ADD_FILTER = 58, 433*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = filter_id << 16 | queue << 8 | type */ 434*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data1 = MS4 of MAC Addr */ 435*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data2 = LS2_MAC << 16 | VLAN_tag */ 436*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_DEL_FILTER = 59, 437*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = filter_id */ 438*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY1 = 60, 439*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY2 = 61, 440*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY3 = 62, 441*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY4 = 63, 442*04b6cca3Slucy wang - Sun Microsystems - Beijing China 443*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RELAX_RXBUFFER_ALIGNMENT = 64, 444*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* When set, small receive buffers can cross page boundaries. 445*04b6cca3Slucy wang - Sun Microsystems - Beijing China * Both small and big receive buffers may start at any address. 446*04b6cca3Slucy wang - Sun Microsystems - Beijing China * This option has performance implications, so use with caution. 447*04b6cca3Slucy wang - Sun Microsystems - Beijing China */ 448*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 449*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef enum myri10ge_mcp_cmd_type myri10ge_mcp_cmd_type_t; 450*04b6cca3Slucy wang - Sun Microsystems - Beijing China 451*04b6cca3Slucy wang - Sun Microsystems - Beijing China 452*04b6cca3Slucy wang - Sun Microsystems - Beijing China enum myri10ge_mcp_cmd_status { 453*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_OK = 0, 454*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNKNOWN = 1, 455*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_RANGE = 2, 456*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BUSY = 3, 457*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_EMPTY = 4, 458*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_CLOSED = 5, 459*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_HASH_ERROR = 6, 460*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BAD_PORT = 7, 461*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_RESOURCES = 8, 462*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_MULTICAST = 9, 463*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_UNALIGNED = 10, 464*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_NO_MDIO = 11, 465*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_I2C_FAILURE = 12, 466*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_I2C_ABSENT = 13, 467*04b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BAD_PCIE_LINK = 14 468*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 469*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef enum myri10ge_mcp_cmd_status myri10ge_mcp_cmd_status_t; 470*04b6cca3Slucy wang - Sun Microsystems - Beijing China 471*04b6cca3Slucy wang - Sun Microsystems - Beijing China 472*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_OLD_IRQ_DATA_LEN 40 473*04b6cca3Slucy wang - Sun Microsystems - Beijing China 474*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_irq_data { 475*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* add new counters at the beginning */ 476*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t future_use[1]; 477*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_pause; 478*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_unicast_filtered; 479*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_bad_crc32; 480*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_bad_phy; 481*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_multicast_filtered; 482*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* 40 Bytes */ 483*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t send_done_count; 484*04b6cca3Slucy wang - Sun Microsystems - Beijing China 485*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_DOWN 0 486*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_UP 1 487*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_MYRINET 2 488*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_UNKNOWN 3 489*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t link_up; 490*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_link_overflow; 491*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_link_error_or_filtered; 492*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_runt; 493*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_overrun; 494*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_no_small_buffer; 495*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_no_big_buffer; 496*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t rdma_tags_available; 497*04b6cca3Slucy wang - Sun Microsystems - Beijing China 498*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t tx_stopped; 499*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t link_down; 500*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t stats_updated; 501*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t valid; 502*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 503*04b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_irq_data mcp_irq_data_t; 504*04b6cca3Slucy wang - Sun Microsystems - Beijing China 505*04b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW_NDIS 506*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* Exclusively used by NDIS drivers */ 507*04b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_rss_shared_interrupt { 508*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad[2]; 509*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t queue; 510*04b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t valid; 511*04b6cca3Slucy wang - Sun Microsystems - Beijing China }; 512*04b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 513*04b6cca3Slucy wang - Sun Microsystems - Beijing China 514*04b6cca3Slucy wang - Sun Microsystems - Beijing China /* definitions for NETQ filter type */ 515*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_NONE 0 516*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_MACADDR 1 517*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_VLAN 2 518*04b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_VLANMACADDR 3 519*04b6cca3Slucy wang - Sun Microsystems - Beijing China 520*04b6cca3Slucy wang - Sun Microsystems - Beijing China #endif /* _myri10ge_mcp_h */ 521