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