104b6cca3Slucy wang - Sun Microsystems - Beijing China /* 204b6cca3Slucy wang - Sun Microsystems - Beijing China * CDDL HEADER START 304b6cca3Slucy wang - Sun Microsystems - Beijing China * 404b6cca3Slucy wang - Sun Microsystems - Beijing China * The contents of this file are subject to the terms of the 504b6cca3Slucy wang - Sun Microsystems - Beijing China * Common Development and Distribution License (the "License"). 604b6cca3Slucy wang - Sun Microsystems - Beijing China * You may not use this file except in compliance with the License. 704b6cca3Slucy wang - Sun Microsystems - Beijing China * 804b6cca3Slucy wang - Sun Microsystems - Beijing China * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 904b6cca3Slucy wang - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing. 1004b6cca3Slucy wang - Sun Microsystems - Beijing China * See the License for the specific language governing permissions 1104b6cca3Slucy wang - Sun Microsystems - Beijing China * and limitations under the License. 1204b6cca3Slucy wang - Sun Microsystems - Beijing China * 1304b6cca3Slucy wang - Sun Microsystems - Beijing China * When distributing Covered Code, include this CDDL HEADER in each 1404b6cca3Slucy wang - Sun Microsystems - Beijing China * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1504b6cca3Slucy wang - Sun Microsystems - Beijing China * If applicable, add the following below this CDDL HEADER, with the 1604b6cca3Slucy wang - Sun Microsystems - Beijing China * fields enclosed by brackets "[]" replaced with your own identifying 1704b6cca3Slucy wang - Sun Microsystems - Beijing China * information: Portions Copyright [yyyy] [name of copyright owner] 1804b6cca3Slucy wang - Sun Microsystems - Beijing China * 1904b6cca3Slucy wang - Sun Microsystems - Beijing China * CDDL HEADER END 2004b6cca3Slucy wang - Sun Microsystems - Beijing China */ 2104b6cca3Slucy wang - Sun Microsystems - Beijing China 2204b6cca3Slucy wang - Sun Microsystems - Beijing China /* 2304b6cca3Slucy wang - Sun Microsystems - Beijing China * Copyright 2007-2009 Myricom, Inc. All rights reserved. 2404b6cca3Slucy wang - Sun Microsystems - Beijing China * Use is subject to license terms. 2504b6cca3Slucy wang - Sun Microsystems - Beijing China */ 2604b6cca3Slucy wang - Sun Microsystems - Beijing China 2704b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef _myri10ge_mcp_h 2804b6cca3Slucy wang - Sun Microsystems - Beijing China #define _myri10ge_mcp_h 2904b6cca3Slucy wang - Sun Microsystems - Beijing China 3004b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_VERSION_MAJOR 1 3104b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_VERSION_MINOR 4 3204b6cca3Slucy wang - Sun Microsystems - Beijing China 3304b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW 3404b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef _stdint_h_ 3504b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed char int8_t; 3604b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed short int16_t; 3704b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed int int32_t; 3804b6cca3Slucy wang - Sun Microsystems - Beijing China typedef signed long long int64_t; 3904b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned char uint8_t; 4004b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned short uint16_t; 4104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned int uint32_t; 4204b6cca3Slucy wang - Sun Microsystems - Beijing China typedef unsigned long long uint64_t; 4304b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 4404b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 4504b6cca3Slucy wang - Sun Microsystems - Beijing China 4604b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 4704b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_dma_addr { 4804b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t high; 4904b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t low; 5004b6cca3Slucy wang - Sun Microsystems - Beijing China }; 5104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_dma_addr mcp_dma_addr_t; 5204b6cca3Slucy wang - Sun Microsystems - Beijing China 5304b6cca3Slucy wang - Sun Microsystems - Beijing China /* 4 Bytes */ 5404b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_slot { 5504b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t checksum; 5604b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 5704b6cca3Slucy wang - Sun Microsystems - Beijing China }; 5804b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_slot mcp_slot_t; 5904b6cca3Slucy wang - Sun Microsystems - Beijing China 6004b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW_NDIS 6104b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8-byte descriptor, exclusively used by NDIS drivers. */ 6204b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_slot_8 { 6304b6cca3Slucy wang - Sun Microsystems - Beijing China /* Place hash value at the top so it gets written before length. 6404b6cca3Slucy wang - Sun Microsystems - Beijing China * The driver polls length. 6504b6cca3Slucy wang - Sun Microsystems - Beijing China */ 6604b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t hash; 6704b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t checksum; 6804b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 6904b6cca3Slucy wang - Sun Microsystems - Beijing China }; 7004b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_slot_8 mcp_slot_8_t; 7104b6cca3Slucy wang - Sun Microsystems - Beijing China 7204b6cca3Slucy wang - Sun Microsystems - Beijing China /* Two bits of length in mcp_slot are used to indicate hash type. */ 7304b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_NULL (0 << 14) /* bit 15:14 = 00 */ 7404b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_IPV4 (1 << 14) /* bit 15:14 = 01 */ 7504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TCP_IPV4 (2 << 14) /* bit 15:14 = 10 */ 7604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_MASK (3 << 14) /* bit 15:14 = 11 */ 7704b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 7804b6cca3Slucy wang - Sun Microsystems - Beijing China 7904b6cca3Slucy wang - Sun Microsystems - Beijing China /* 64 Bytes */ 8004b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_cmd { 8104b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t cmd; 8204b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data0; /* will be low portion if data > 32 bits */ 8304b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 */ 8404b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data1; /* will be high portion if data > 32 bits */ 8504b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data2; /* currently unused.. */ 8604b6cca3Slucy wang - Sun Microsystems - Beijing China /* 16 */ 8704b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_dma_addr response_addr; 8804b6cca3Slucy wang - Sun Microsystems - Beijing China /* 24 */ 8904b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad[40]; 9004b6cca3Slucy wang - Sun Microsystems - Beijing China }; 9104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_cmd mcp_cmd_t; 9204b6cca3Slucy wang - Sun Microsystems - Beijing China 9304b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 9404b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_cmd_response { 9504b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t data; 9604b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t result; 9704b6cca3Slucy wang - Sun Microsystems - Beijing China }; 9804b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_cmd_response mcp_cmd_response_t; 9904b6cca3Slucy wang - Sun Microsystems - Beijing China 10004b6cca3Slucy wang - Sun Microsystems - Beijing China 10104b6cca3Slucy wang - Sun Microsystems - Beijing China 102*55fea89dSDan Cross /* 10304b6cca3Slucy wang - Sun Microsystems - Beijing China flags used in mcp_kreq_ether_send_t: 10404b6cca3Slucy wang - Sun Microsystems - Beijing China 10504b6cca3Slucy wang - Sun Microsystems - Beijing China The SMALL flag is only needed in the first segment. It is raised 10604b6cca3Slucy wang - Sun Microsystems - Beijing China for packets that are total less or equal 512 bytes. 10704b6cca3Slucy wang - Sun Microsystems - Beijing China 10804b6cca3Slucy wang - Sun Microsystems - Beijing China The CKSUM flag must be set in all segments. 10904b6cca3Slucy wang - Sun Microsystems - Beijing China 11004b6cca3Slucy wang - Sun Microsystems - Beijing China The PADDED flags is set if the packet needs to be padded, and it 11104b6cca3Slucy wang - Sun Microsystems - Beijing China must be set for all segments. 11204b6cca3Slucy wang - Sun Microsystems - Beijing China 11304b6cca3Slucy wang - Sun Microsystems - Beijing China The MXGEFW_FLAGS_ALIGN_ODD must be set if the cumulative 11404b6cca3Slucy wang - Sun Microsystems - Beijing China length of all previous segments was odd. 11504b6cca3Slucy wang - Sun Microsystems - Beijing China */ 11604b6cca3Slucy wang - Sun Microsystems - Beijing China 11704b6cca3Slucy wang - Sun Microsystems - Beijing China 11804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_SMALL 0x1 11904b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_HDR 0x1 12004b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_FIRST 0x2 12104b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_ALIGN_ODD 0x4 12204b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_CKSUM 0x8 12304b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_LAST 0x8 12404b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_NO_TSO 0x10 12504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_CHOP 0x10 12604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_FLAGS_TSO_PLD 0x20 12704b6cca3Slucy wang - Sun Microsystems - Beijing China 12804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SEND_SMALL_SIZE 1520 12904b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_MAX_MTU 9400 13004b6cca3Slucy wang - Sun Microsystems - Beijing China 13104b6cca3Slucy wang - Sun Microsystems - Beijing China union mcp_pso_or_cumlen { 13204b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t pseudo_hdr_offset; 13304b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t cum_len; 13404b6cca3Slucy wang - Sun Microsystems - Beijing China }; 13504b6cca3Slucy wang - Sun Microsystems - Beijing China typedef union mcp_pso_or_cumlen mcp_pso_or_cumlen_t; 13604b6cca3Slucy wang - Sun Microsystems - Beijing China 13704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_MAX_SEND_DESC 12 13804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_PAD 2 13904b6cca3Slucy wang - Sun Microsystems - Beijing China 14004b6cca3Slucy wang - Sun Microsystems - Beijing China /* 16 Bytes */ 14104b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_kreq_ether_send { 14204b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_high; 14304b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_low; 14404b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t pseudo_hdr_offset; 14504b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t length; 14604b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad; 14704b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t rdma_count; 14804b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t cksum_offset; /* where to start computing cksum */ 14904b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t flags; /* as defined above */ 15004b6cca3Slucy wang - Sun Microsystems - Beijing China }; 15104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_kreq_ether_send mcp_kreq_ether_send_t; 15204b6cca3Slucy wang - Sun Microsystems - Beijing China 15304b6cca3Slucy wang - Sun Microsystems - Beijing China /* 8 Bytes */ 15404b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_kreq_ether_recv { 15504b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_high; 15604b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t addr_low; 15704b6cca3Slucy wang - Sun Microsystems - Beijing China }; 15804b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_kreq_ether_recv mcp_kreq_ether_recv_t; 15904b6cca3Slucy wang - Sun Microsystems - Beijing China 16004b6cca3Slucy wang - Sun Microsystems - Beijing China 16104b6cca3Slucy wang - Sun Microsystems - Beijing China /* Commands */ 16204b6cca3Slucy wang - Sun Microsystems - Beijing China 16304b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_BOOT_HANDOFF 0xfc0000 16404b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_BOOT_DUMMY_RDMA 0xfc01c0 16504b6cca3Slucy wang - Sun Microsystems - Beijing China 16604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_CMD 0xf80000 16704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_4 0x200000 16804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_1 0x240000 16904b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_2 0x280000 17004b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_3 0x2c0000 17104b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_RECV_SMALL 0x300000 17204b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_RECV_BIG 0x340000 17304b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_GO 0x380000 17404b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_STOP 0x3C0000 17504b6cca3Slucy wang - Sun Microsystems - Beijing China 17604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND(n) (0x200000 + (((n) & 0x03) * 0x40000)) 17704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_ETH_SEND_OFFSET(n) (MXGEFW_ETH_SEND(n) - MXGEFW_ETH_SEND_4) 17804b6cca3Slucy wang - Sun Microsystems - Beijing China 17904b6cca3Slucy wang - Sun Microsystems - Beijing China enum myri10ge_mcp_cmd_type { 18004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NONE = 0, 18104b6cca3Slucy wang - Sun Microsystems - Beijing China /* Reset the mcp, it is left in a safe state, waiting 18204b6cca3Slucy wang - Sun Microsystems - Beijing China for the driver to set all its parameters */ 18304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET = 1, 18404b6cca3Slucy wang - Sun Microsystems - Beijing China 18504b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the version number of the current firmware.. 18604b6cca3Slucy wang - Sun Microsystems - Beijing China (may be available in the eeprom strings..? */ 18704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_GET_MCP_VERSION = 2, 18804b6cca3Slucy wang - Sun Microsystems - Beijing China 18904b6cca3Slucy wang - Sun Microsystems - Beijing China 19004b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which must be set by the driver before it can 19104b6cca3Slucy wang - Sun Microsystems - Beijing China issue MXGEFW_CMD_ETHERNET_UP. They persist until the next 19204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET is issued */ 19304b6cca3Slucy wang - Sun Microsystems - Beijing China 19404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_INTRQ_DMA = 3, 19504b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = LSW of the host address 19604b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = MSW of the host address 19704b6cca3Slucy wang - Sun Microsystems - Beijing China * data2 = slice number if multiple slices are used 19804b6cca3Slucy wang - Sun Microsystems - Beijing China */ 199*55fea89dSDan Cross 20004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_BIG_BUFFER_SIZE = 4, /* in bytes, power of 2 */ 20104b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_SMALL_BUFFER_SIZE = 5, /* in bytes */ 20204b6cca3Slucy wang - Sun Microsystems - Beijing China 203*55fea89dSDan Cross 204*55fea89dSDan Cross /* Parameters which refer to lanai SRAM addresses where the 20504b6cca3Slucy wang - Sun Microsystems - Beijing China driver must issue PIO writes for various things */ 20604b6cca3Slucy wang - Sun Microsystems - Beijing China 20704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SEND_OFFSET = 6, 20804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SMALL_RX_OFFSET = 7, 20904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_BIG_RX_OFFSET = 8, 21004b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = slice number if multiple slices are used */ 211*55fea89dSDan Cross 21204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_IRQ_ACK_OFFSET = 9, 21304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_IRQ_DEASSERT_OFFSET = 10, 21404b6cca3Slucy wang - Sun Microsystems - Beijing China 21504b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which refer to rings stored on the MCP, 21604b6cca3Slucy wang - Sun Microsystems - Beijing China and whose size is controlled by the mcp */ 21704b6cca3Slucy wang - Sun Microsystems - Beijing China 21804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_SEND_RING_SIZE = 11, /* in bytes */ 21904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RX_RING_SIZE = 12, /* in bytes */ 22004b6cca3Slucy wang - Sun Microsystems - Beijing China 22104b6cca3Slucy wang - Sun Microsystems - Beijing China /* Parameters which refer to rings stored in the host, 22204b6cca3Slucy wang - Sun Microsystems - Beijing China and whose size is controlled by the host. Note that 223*55fea89dSDan Cross all must be physically contiguous and must contain 22404b6cca3Slucy wang - Sun Microsystems - Beijing China a power of 2 number of entries. */ 22504b6cca3Slucy wang - Sun Microsystems - Beijing China 22604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_INTRQ_SIZE = 13, /* in bytes */ 22704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_CMD_SET_INTRQ_SIZE_FLAG_NO_STRICT_SIZE_CHECK (1 << 31) 22804b6cca3Slucy wang - Sun Microsystems - Beijing China 22904b6cca3Slucy wang - Sun Microsystems - Beijing China /* command to bring ethernet interface up. Above parameters 23004b6cca3Slucy wang - Sun Microsystems - Beijing China (plus mtu & mac address) must have been exchanged prior 23104b6cca3Slucy wang - Sun Microsystems - Beijing China to issuing this command */ 23204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ETHERNET_UP = 14, 23304b6cca3Slucy wang - Sun Microsystems - Beijing China 23404b6cca3Slucy wang - Sun Microsystems - Beijing China /* command to bring ethernet interface down. No further sends 23504b6cca3Slucy wang - Sun Microsystems - Beijing China or receives may be processed until an MXGEFW_CMD_ETHERNET_UP 23604b6cca3Slucy wang - Sun Microsystems - Beijing China is issued, and all interrupt queues must be flushed prior 23704b6cca3Slucy wang - Sun Microsystems - Beijing China to ack'ing this command */ 23804b6cca3Slucy wang - Sun Microsystems - Beijing China 23904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ETHERNET_DOWN = 15, 24004b6cca3Slucy wang - Sun Microsystems - Beijing China 24104b6cca3Slucy wang - Sun Microsystems - Beijing China /* commands the driver may issue live, without resetting 24204b6cca3Slucy wang - Sun Microsystems - Beijing China the nic. Note that increasing the mtu "live" should 24304b6cca3Slucy wang - Sun Microsystems - Beijing China only be done if the driver has already supplied buffers 24404b6cca3Slucy wang - Sun Microsystems - Beijing China sufficiently large to handle the new mtu. Decreasing 24504b6cca3Slucy wang - Sun Microsystems - Beijing China the mtu live is safe */ 24604b6cca3Slucy wang - Sun Microsystems - Beijing China 24704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_MTU = 16, 24804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_INTR_COAL_DELAY_OFFSET = 17, /* in microseconds */ 24904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_INTERVAL = 18, /* in microseconds */ 25004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_DMA_OBSOLETE = 19, /* replaced by SET_STATS_DMA_V2 */ 25104b6cca3Slucy wang - Sun Microsystems - Beijing China 25204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_PROMISC = 20, 25304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_PROMISC = 21, 25404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_SET_MAC_ADDRESS = 22, 25504b6cca3Slucy wang - Sun Microsystems - Beijing China 25604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_FLOW_CONTROL = 23, 25704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_FLOW_CONTROL = 24, 25804b6cca3Slucy wang - Sun Microsystems - Beijing China 25904b6cca3Slucy wang - Sun Microsystems - Beijing China /* do a DMA test 26004b6cca3Slucy wang - Sun Microsystems - Beijing China data0,data1 = DMA address 26104b6cca3Slucy wang - Sun Microsystems - Beijing China data2 = RDMA length (MSH), WDMA length (LSH) 26204b6cca3Slucy wang - Sun Microsystems - Beijing China command return data = repetitions (MSH), 0.5-ms ticks (LSH) 26304b6cca3Slucy wang - Sun Microsystems - Beijing China */ 26404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DMA_TEST = 25, 26504b6cca3Slucy wang - Sun Microsystems - Beijing China 26604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_ENABLE_ALLMULTI = 26, 26704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_DISABLE_ALLMULTI = 27, 26804b6cca3Slucy wang - Sun Microsystems - Beijing China 26904b6cca3Slucy wang - Sun Microsystems - Beijing China /* returns MXGEFW_CMD_ERROR_MULTICAST 27004b6cca3Slucy wang - Sun Microsystems - Beijing China if there is no room in the cache 27104b6cca3Slucy wang - Sun Microsystems - Beijing China data0,MSH(data1) = multicast group address */ 27204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_JOIN_MULTICAST_GROUP = 28, 27304b6cca3Slucy wang - Sun Microsystems - Beijing China /* returns MXGEFW_CMD_ERROR_MULTICAST 27404b6cca3Slucy wang - Sun Microsystems - Beijing China if the address is not in the cache, 27504b6cca3Slucy wang - Sun Microsystems - Beijing China or is equal to FF-FF-FF-FF-FF-FF 27604b6cca3Slucy wang - Sun Microsystems - Beijing China data0,MSH(data1) = multicast group address */ 27704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_LEAVE_MULTICAST_GROUP = 29, 27804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_LEAVE_ALL_MULTICAST_GROUPS = 30, 27904b6cca3Slucy wang - Sun Microsystems - Beijing China 28004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_STATS_DMA_V2 = 31, 28104b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0, data1 = bus addr, 28204b6cca3Slucy wang - Sun Microsystems - Beijing China * data2 = sizeof(struct mcp_irq_data) from driver point of view, allows 28304b6cca3Slucy wang - Sun Microsystems - Beijing China * adding new stuff to mcp_irq_data without changing the ABI 28404b6cca3Slucy wang - Sun Microsystems - Beijing China * 28504b6cca3Slucy wang - Sun Microsystems - Beijing China * If multiple slices are used, data2 contains both the size of the 28604b6cca3Slucy wang - Sun Microsystems - Beijing China * structure (in the lower 16 bits) and the slice number 28704b6cca3Slucy wang - Sun Microsystems - Beijing China * (in the upper 16 bits). 28804b6cca3Slucy wang - Sun Microsystems - Beijing China */ 28904b6cca3Slucy wang - Sun Microsystems - Beijing China 29004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNALIGNED_TEST = 32, 29104b6cca3Slucy wang - Sun Microsystems - Beijing China /* same than DMA_TEST (same args) but abort with UNALIGNED on unaligned 29204b6cca3Slucy wang - Sun Microsystems - Beijing China chipset */ 29304b6cca3Slucy wang - Sun Microsystems - Beijing China 29404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNALIGNED_STATUS = 33, 29504b6cca3Slucy wang - Sun Microsystems - Beijing China /* return data = boolean, true if the chipset is known to be unaligned */ 29604b6cca3Slucy wang - Sun Microsystems - Beijing China 29704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ALWAYS_USE_N_BIG_BUFFERS = 34, 29804b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = number of big buffers to use. It must be 0 or a power of 2. 29904b6cca3Slucy wang - Sun Microsystems - Beijing China * 0 indicates that the NIC consumes as many buffers as they are required 30004b6cca3Slucy wang - Sun Microsystems - Beijing China * for packet. This is the default behavior. 30104b6cca3Slucy wang - Sun Microsystems - Beijing China * A power of 2 number indicates that the NIC always uses the specified 30204b6cca3Slucy wang - Sun Microsystems - Beijing China * number of buffers for each big receive packet. 30304b6cca3Slucy wang - Sun Microsystems - Beijing China * It is up to the driver to ensure that this value is big enough for 30404b6cca3Slucy wang - Sun Microsystems - Beijing China * the NIC to be able to receive maximum-sized packets. 30504b6cca3Slucy wang - Sun Microsystems - Beijing China */ 30604b6cca3Slucy wang - Sun Microsystems - Beijing China 30704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_MAX_RSS_QUEUES = 35, 30804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ENABLE_RSS_QUEUES = 36, 30904b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = number of slices n (0, 1, ..., n-1) to enable 31004b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = interrupt mode | use of multiple transmit queues. 31104b6cca3Slucy wang - Sun Microsystems - Beijing China * 0=share one INTx/MSI. 31204b6cca3Slucy wang - Sun Microsystems - Beijing China * 1=use one MSI-X per queue. 31304b6cca3Slucy wang - Sun Microsystems - Beijing China * If all queues share one interrupt, the driver must have set 31404b6cca3Slucy wang - Sun Microsystems - Beijing China * RSS_SHARED_INTERRUPT_DMA before enabling queues. 31504b6cca3Slucy wang - Sun Microsystems - Beijing China * 2=enable both receive and send queues. 31604b6cca3Slucy wang - Sun Microsystems - Beijing China * Without this bit set, only one send queue (slice 0's send queue) 31704b6cca3Slucy wang - Sun Microsystems - Beijing China * is enabled. The receive queues are always enabled. 31804b6cca3Slucy wang - Sun Microsystems - Beijing China */ 31904b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_INTR_MODE_SHARED 0x0 32004b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_INTR_MODE_ONE_PER_SLICE 0x1 32104b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_SLICE_ENABLE_MULTIPLE_TX_QUEUES 0x2 322*55fea89dSDan Cross 32304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_SHARED_INTERRUPT_MASK_OFFSET = 37, 32404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_SHARED_INTERRUPT_DMA = 38, 32504b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0, data1 = bus address lsw, msw */ 32604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_TABLE_OFFSET = 39, 32704b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the offset of the indirection table */ 32804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_TABLE_SIZE = 40, 32904b6cca3Slucy wang - Sun Microsystems - Beijing China /* set the size of the indirection table */ 33004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_RSS_KEY_OFFSET = 41, 33104b6cca3Slucy wang - Sun Microsystems - Beijing China /* get the offset of the secret key */ 33204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RSS_KEY_UPDATED = 42, 33304b6cca3Slucy wang - Sun Microsystems - Beijing China /* tell nic that the secret key's been updated */ 33404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_ENABLE = 43, 33504b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = enable/disable rss 33604b6cca3Slucy wang - Sun Microsystems - Beijing China * 0: disable rss. nic does not distribute receive packets. 33704b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: enable rss. nic distributes receive packets among queues. 33804b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 = hash type 33904b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: IPV4 (required by RSS) 34004b6cca3Slucy wang - Sun Microsystems - Beijing China * 2: TCP_IPV4 (required by RSS) 34104b6cca3Slucy wang - Sun Microsystems - Beijing China * 3: IPV4 | TCP_IPV4 (required by RSS) 34204b6cca3Slucy wang - Sun Microsystems - Beijing China * 4: source port 34304b6cca3Slucy wang - Sun Microsystems - Beijing China * 5: source port + destination port 34404b6cca3Slucy wang - Sun Microsystems - Beijing China */ 34504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_IPV4 0x1 34604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_TCP_IPV4 0x2 34704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_SRC_PORT 0x4 34804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_SRC_DST_PORT 0x5 34904b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_HASH_TYPE_MAX 0x5 350*55fea89dSDan Cross 35104b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_MAX_TSO6_HDR_SIZE = 44, 35204b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return data = the max. size of the entire headers of a IPv6 TSO packet. 35304b6cca3Slucy wang - Sun Microsystems - Beijing China * If the header size of a IPv6 TSO packet is larger than the specified 35404b6cca3Slucy wang - Sun Microsystems - Beijing China * value, then the driver must not use TSO. 35504b6cca3Slucy wang - Sun Microsystems - Beijing China * This size restriction only applies to IPv6 TSO. 35604b6cca3Slucy wang - Sun Microsystems - Beijing China * For IPv4 TSO, the maximum size of the headers is fixed, and the NIC 35704b6cca3Slucy wang - Sun Microsystems - Beijing China * always has enough header buffer to store maximum-sized headers. 35804b6cca3Slucy wang - Sun Microsystems - Beijing China */ 359*55fea89dSDan Cross 36004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_TSO_MODE = 45, 36104b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = TSO mode. 36204b6cca3Slucy wang - Sun Microsystems - Beijing China * 0: Linux/FreeBSD style (NIC default) 36304b6cca3Slucy wang - Sun Microsystems - Beijing China * 1: NDIS/NetBSD style 36404b6cca3Slucy wang - Sun Microsystems - Beijing China */ 36504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_TSO_MODE_LINUX 0 36604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_TSO_MODE_NDIS 1 36704b6cca3Slucy wang - Sun Microsystems - Beijing China 36804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_MDIO_READ = 46, 36904b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = dev_addr (PMA/PMD or PCS ...), data1 = register/addr */ 37004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_MDIO_WRITE = 47, 37104b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = dev_addr, data1 = register/addr, data2 = value */ 37204b6cca3Slucy wang - Sun Microsystems - Beijing China 37304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_I2C_READ = 48, 37404b6cca3Slucy wang - Sun Microsystems - Beijing China /* Starts to get a fresh copy of one byte or of the module i2c table, the 37504b6cca3Slucy wang - Sun Microsystems - Beijing China * obtained data is cached inside the xaui-xfi chip : 37604b6cca3Slucy wang - Sun Microsystems - Beijing China * data0 : 0 => get one byte, 1=> get 256 bytes 37704b6cca3Slucy wang - Sun Microsystems - Beijing China * data1 : If data0 == 0: location to refresh 37804b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 7:0 register location 37904b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 8:15 is the i2c slave addr (0 is interpreted as 0xA1) 38004b6cca3Slucy wang - Sun Microsystems - Beijing China * bit 23:16 is the i2c bus number (for multi-port NICs) 38104b6cca3Slucy wang - Sun Microsystems - Beijing China * If data0 == 1: unused 38204b6cca3Slucy wang - Sun Microsystems - Beijing China * The operation might take ~1ms for a single byte or ~65ms when refreshing all 256 bytes 38304b6cca3Slucy wang - Sun Microsystems - Beijing China * During the i2c operation, MXGEFW_CMD_I2C_READ or MXGEFW_CMD_I2C_BYTE attempts 38404b6cca3Slucy wang - Sun Microsystems - Beijing China * will return MXGEFW_CMD_ERROR_BUSY 38504b6cca3Slucy wang - Sun Microsystems - Beijing China */ 38604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_I2C_BYTE = 49, 38704b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return the last obtained copy of a given byte in the xfp i2c table 38804b6cca3Slucy wang - Sun Microsystems - Beijing China * (copy cached during the last relevant MXGEFW_CMD_I2C_READ) 38904b6cca3Slucy wang - Sun Microsystems - Beijing China * data0 : index of the desired table entry 39004b6cca3Slucy wang - Sun Microsystems - Beijing China * Return data = the byte stored at the requested index in the table 39104b6cca3Slucy wang - Sun Microsystems - Beijing China */ 39204b6cca3Slucy wang - Sun Microsystems - Beijing China 39304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_VPUMP_OFFSET = 50, 39404b6cca3Slucy wang - Sun Microsystems - Beijing China /* Return data = NIC memory offset of mcp_vpump_public_global */ 39504b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RESET_VPUMP = 51, 39604b6cca3Slucy wang - Sun Microsystems - Beijing China /* Resets the VPUMP state */ 39704b6cca3Slucy wang - Sun Microsystems - Beijing China 39804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_RSS_MCP_SLOT_TYPE = 52, 39904b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = mcp_slot type to use. 40004b6cca3Slucy wang - Sun Microsystems - Beijing China * 0 = the default 4B mcp_slot 40104b6cca3Slucy wang - Sun Microsystems - Beijing China * 1 = 8B mcp_slot_8 40204b6cca3Slucy wang - Sun Microsystems - Beijing China */ 40304b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_MCP_SLOT_TYPE_MIN 0 40404b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_RSS_MCP_SLOT_TYPE_WITH_HASH 1 40504b6cca3Slucy wang - Sun Microsystems - Beijing China 40604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_SET_THROTTLE_FACTOR = 53, 40704b6cca3Slucy wang - Sun Microsystems - Beijing China /* set the throttle factor for ethp_z8e 40804b6cca3Slucy wang - Sun Microsystems - Beijing China data0 = throttle_factor 40904b6cca3Slucy wang - Sun Microsystems - Beijing China throttle_factor = 256 * pcie-raw-speed / tx_speed 41004b6cca3Slucy wang - Sun Microsystems - Beijing China tx_speed = 256 * pcie-raw-speed / throttle_factor 41104b6cca3Slucy wang - Sun Microsystems - Beijing China 41204b6cca3Slucy wang - Sun Microsystems - Beijing China For PCI-E x8: pcie-raw-speed == 16Gb/s 41304b6cca3Slucy wang - Sun Microsystems - Beijing China For PCI-E x4: pcie-raw-speed == 8Gb/s 41404b6cca3Slucy wang - Sun Microsystems - Beijing China 41504b6cca3Slucy wang - Sun Microsystems - Beijing China ex1: throttle_factor == 0x1a0 (416), tx_speed == 1.23GB/s == 9.846 Gb/s 41604b6cca3Slucy wang - Sun Microsystems - Beijing China ex2: throttle_factor == 0x200 (512), tx_speed == 1.0GB/s == 8 Gb/s 41704b6cca3Slucy wang - Sun Microsystems - Beijing China 41804b6cca3Slucy wang - Sun Microsystems - Beijing China with tx_boundary == 2048, max-throttle-factor == 8191 => min-speed == 500Mb/s 41904b6cca3Slucy wang - Sun Microsystems - Beijing China with tx_boundary == 4096, max-throttle-factor == 4095 => min-speed == 1Gb/s 42004b6cca3Slucy wang - Sun Microsystems - Beijing China */ 421*55fea89dSDan Cross 42204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_VPUMP_UP = 54, 42304b6cca3Slucy wang - Sun Microsystems - Beijing China /* Allocates VPump Connection, Send Request and Zero copy buffer address tables */ 42404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_VPUMP_CLK = 55, 42504b6cca3Slucy wang - Sun Microsystems - Beijing China /* Get the lanai clock */ 42604b6cca3Slucy wang - Sun Microsystems - Beijing China 42704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_GET_DCA_OFFSET = 56, 42804b6cca3Slucy wang - Sun Microsystems - Beijing China /* offset of dca control for WDMAs */ 42904b6cca3Slucy wang - Sun Microsystems - Beijing China 43004b6cca3Slucy wang - Sun Microsystems - Beijing China /* VMWare NetQueue commands */ 43104b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_GET_FILTERS_PER_QUEUE = 57, 43204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_ADD_FILTER = 58, 43304b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = filter_id << 16 | queue << 8 | type */ 43404b6cca3Slucy wang - Sun Microsystems - Beijing China /* data1 = MS4 of MAC Addr */ 43504b6cca3Slucy wang - Sun Microsystems - Beijing China /* data2 = LS2_MAC << 16 | VLAN_tag */ 43604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_DEL_FILTER = 59, 43704b6cca3Slucy wang - Sun Microsystems - Beijing China /* data0 = filter_id */ 43804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY1 = 60, 43904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY2 = 61, 44004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY3 = 62, 44104b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_NETQ_QUERY4 = 63, 44204b6cca3Slucy wang - Sun Microsystems - Beijing China 44304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_RELAX_RXBUFFER_ALIGNMENT = 64, 44404b6cca3Slucy wang - Sun Microsystems - Beijing China /* When set, small receive buffers can cross page boundaries. 44504b6cca3Slucy wang - Sun Microsystems - Beijing China * Both small and big receive buffers may start at any address. 44604b6cca3Slucy wang - Sun Microsystems - Beijing China * This option has performance implications, so use with caution. 44704b6cca3Slucy wang - Sun Microsystems - Beijing China */ 44804b6cca3Slucy wang - Sun Microsystems - Beijing China }; 44904b6cca3Slucy wang - Sun Microsystems - Beijing China typedef enum myri10ge_mcp_cmd_type myri10ge_mcp_cmd_type_t; 45004b6cca3Slucy wang - Sun Microsystems - Beijing China 45104b6cca3Slucy wang - Sun Microsystems - Beijing China 45204b6cca3Slucy wang - Sun Microsystems - Beijing China enum myri10ge_mcp_cmd_status { 45304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_OK = 0, 45404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_UNKNOWN = 1, 45504b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_RANGE = 2, 45604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BUSY = 3, 45704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_EMPTY = 4, 45804b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_CLOSED = 5, 45904b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_HASH_ERROR = 6, 46004b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BAD_PORT = 7, 46104b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_RESOURCES = 8, 46204b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_MULTICAST = 9, 46304b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_UNALIGNED = 10, 46404b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_NO_MDIO = 11, 46504b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_I2C_FAILURE = 12, 46604b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_I2C_ABSENT = 13, 46704b6cca3Slucy wang - Sun Microsystems - Beijing China MXGEFW_CMD_ERROR_BAD_PCIE_LINK = 14 46804b6cca3Slucy wang - Sun Microsystems - Beijing China }; 46904b6cca3Slucy wang - Sun Microsystems - Beijing China typedef enum myri10ge_mcp_cmd_status myri10ge_mcp_cmd_status_t; 47004b6cca3Slucy wang - Sun Microsystems - Beijing China 47104b6cca3Slucy wang - Sun Microsystems - Beijing China 47204b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_OLD_IRQ_DATA_LEN 40 47304b6cca3Slucy wang - Sun Microsystems - Beijing China 47404b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_irq_data { 47504b6cca3Slucy wang - Sun Microsystems - Beijing China /* add new counters at the beginning */ 47604b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t future_use[1]; 47704b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_pause; 47804b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_unicast_filtered; 47904b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_bad_crc32; 48004b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_bad_phy; 48104b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_multicast_filtered; 48204b6cca3Slucy wang - Sun Microsystems - Beijing China /* 40 Bytes */ 48304b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t send_done_count; 48404b6cca3Slucy wang - Sun Microsystems - Beijing China 48504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_DOWN 0 48604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_UP 1 48704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_MYRINET 2 48804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_LINK_UNKNOWN 3 48904b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t link_up; 49004b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_link_overflow; 49104b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_link_error_or_filtered; 49204b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_runt; 49304b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_overrun; 49404b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_no_small_buffer; 49504b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t dropped_no_big_buffer; 49604b6cca3Slucy wang - Sun Microsystems - Beijing China uint32_t rdma_tags_available; 49704b6cca3Slucy wang - Sun Microsystems - Beijing China 49804b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t tx_stopped; 49904b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t link_down; 50004b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t stats_updated; 50104b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t valid; 50204b6cca3Slucy wang - Sun Microsystems - Beijing China }; 50304b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct mcp_irq_data mcp_irq_data_t; 50404b6cca3Slucy wang - Sun Microsystems - Beijing China 50504b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MXGEFW_NDIS 50604b6cca3Slucy wang - Sun Microsystems - Beijing China /* Exclusively used by NDIS drivers */ 50704b6cca3Slucy wang - Sun Microsystems - Beijing China struct mcp_rss_shared_interrupt { 50804b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t pad[2]; 50904b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t queue; 51004b6cca3Slucy wang - Sun Microsystems - Beijing China uint8_t valid; 51104b6cca3Slucy wang - Sun Microsystems - Beijing China }; 51204b6cca3Slucy wang - Sun Microsystems - Beijing China #endif 51304b6cca3Slucy wang - Sun Microsystems - Beijing China 51404b6cca3Slucy wang - Sun Microsystems - Beijing China /* definitions for NETQ filter type */ 51504b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_NONE 0 51604b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_MACADDR 1 51704b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_VLAN 2 51804b6cca3Slucy wang - Sun Microsystems - Beijing China #define MXGEFW_NETQ_FILTERTYPE_VLANMACADDR 3 51904b6cca3Slucy wang - Sun Microsystems - Beijing China 52004b6cca3Slucy wang - Sun Microsystems - Beijing China #endif /* _myri10ge_mcp_h */ 521