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_VAR_H
2804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_VAR_H
2904b6cca3Slucy wang - Sun Microsystems - Beijing China 
3004b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef	__cplusplus
3104b6cca3Slucy wang - Sun Microsystems - Beijing China extern "C" {
3204b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
3304b6cca3Slucy wang - Sun Microsystems - Beijing China 
3404b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/types.h>
3504b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/errno.h>
3604b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/param.h>
3704b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/atomic.h>
3804b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/stropts.h>
3904b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/stream.h>
4004b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/kmem.h>
4104b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/ksynch.h>
4204b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/stat.h>
4304b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/modctl.h>
4404b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/debug.h>
4504b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/dlpi.h>
4604b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/ethernet.h>
4704b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/mac_provider.h>
4804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MAC_CAPAB_POLL 0
4904b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MC_RESOURCES 0
5004b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/mac_ether.h>
5104b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef MYRICOM_PRIV
5204b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/vlan.h>
5304b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
5404b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/pci.h>
5504b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/pcie.h>
5604b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/ddi.h>
5704b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/sunddi.h>
5804b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/strsubr.h>  	/* for hw cksum stuff */
5904b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/pattr.h>		/* for hw cksum stuff */
6004b6cca3Slucy wang - Sun Microsystems - Beijing China #include <netinet/in.h>		/* for hw cksum stuff */
6104b6cca3Slucy wang - Sun Microsystems - Beijing China #include <netinet/ip.h>		/* for hw cksum stuff */
6204b6cca3Slucy wang - Sun Microsystems - Beijing China #include <netinet/ip6.h>	/* for hw cksum stuff */
6304b6cca3Slucy wang - Sun Microsystems - Beijing China #include <netinet/tcp.h>	/* for hw cksum stuff */
6404b6cca3Slucy wang - Sun Microsystems - Beijing China #include <netinet/udp.h>	/* for hw cksum stuff */
6504b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/strsun.h>
6604b6cca3Slucy wang - Sun Microsystems - Beijing China #include <inet/common.h>
6704b6cca3Slucy wang - Sun Microsystems - Beijing China #include <inet/mi.h>
6804b6cca3Slucy wang - Sun Microsystems - Beijing China #include <inet/nd.h>
6904b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/zmod.h>
7004b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/cpuvar.h>
7104b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/proc.h>
7204b6cca3Slucy wang - Sun Microsystems - Beijing China #include <sys/callb.h>
7304b6cca3Slucy wang - Sun Microsystems - Beijing China 
7404b6cca3Slucy wang - Sun Microsystems - Beijing China #include "myri10ge_mcp.h"
7504b6cca3Slucy wang - Sun Microsystems - Beijing China #include "myri10ge_version.h"
7604b6cca3Slucy wang - Sun Microsystems - Beijing China 
7704b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_FW_OFFSET 1024*1024
7804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_EEPROM_STRINGS_SIZE 256
7904b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_HIGHPART_TO_U32(X) \
8004b6cca3Slucy wang - Sun Microsystems - Beijing China (sizeof (X) == 8) ? ((uint32_t)((uint64_t)(X) >> 32)) : (0)
8104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_LOWPART_TO_U32(X) ((uint32_t)(X))
8204b6cca3Slucy wang - Sun Microsystems - Beijing China 
8304b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_DDI_REG_SET_32_BIT_MEMORY_SPACE 2
8404b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_DDI_REG_SET_64_BIT_MEMORY_SPACE 3
8504b6cca3Slucy wang - Sun Microsystems - Beijing China 
8604b6cca3Slucy wang - Sun Microsystems - Beijing China /*
8704b6cca3Slucy wang - Sun Microsystems - Beijing China  * Max descriptors a TSO send can use; worst case is every descriptor
8804b6cca3Slucy wang - Sun Microsystems - Beijing China  * crosses a 2KB boundary, as do the headers
8904b6cca3Slucy wang - Sun Microsystems - Beijing China  */
9004b6cca3Slucy wang - Sun Microsystems - Beijing China 
9104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_MAX_SEND_DESC_TSO (2 + (65536 / 2048) * 2)
9204b6cca3Slucy wang - Sun Microsystems - Beijing China 
9304b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef MYRICOM_PRIV
9404b6cca3Slucy wang - Sun Microsystems - Beijing China #define	VLAN_TAGSZ 4
9504b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
9604b6cca3Slucy wang - Sun Microsystems - Beijing China 
9704b6cca3Slucy wang - Sun Microsystems - Beijing China #if defined DDI_INTR_IS_MSI_OR_MSIX
9804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_USE_MSI 1
9904b6cca3Slucy wang - Sun Microsystems - Beijing China #else
10004b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_USE_MSI 0
10104b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
10204b6cca3Slucy wang - Sun Microsystems - Beijing China 
10304b6cca3Slucy wang - Sun Microsystems - Beijing China 
10404b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_dma_stuff {
10504b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_dma_handle_t handle;
10604b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_acc_handle_t acc_handle;
10704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t low;
10804b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t high;
10904b6cca3Slucy wang - Sun Microsystems - Beijing China };
11004b6cca3Slucy wang - Sun Microsystems - Beijing China 
11104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct myri10ge_mblkq {
11204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_priv *mgp;
11304b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t lock;
11404b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t *head;
11504b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t *tail;
11604b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned long cnt;
11704b6cca3Slucy wang - Sun Microsystems - Beijing China } myri10ge_mblkq_t;
11804b6cca3Slucy wang - Sun Microsystems - Beijing China 
11904b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct {
12004b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_slot_t *entry;
12104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_dma_stuff dma;
12204b6cca3Slucy wang - Sun Microsystems - Beijing China 	int cnt;
12304b6cca3Slucy wang - Sun Microsystems - Beijing China 	int idx;
12404b6cca3Slucy wang - Sun Microsystems - Beijing China } myri10ge_rx_done_t;
12504b6cca3Slucy wang - Sun Microsystems - Beijing China 
12604b6cca3Slucy wang - Sun Microsystems - Beijing China 
12704b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct
12804b6cca3Slucy wang - Sun Microsystems - Beijing China {
12904b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t data0;
13004b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t data1;
13104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t data2;
13204b6cca3Slucy wang - Sun Microsystems - Beijing China } myri10ge_cmd_t;
13304b6cca3Slucy wang - Sun Microsystems - Beijing China 
13404b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_pci_saved_state {
13504b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t base[16];
13604b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t msi_addr_low;
13704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t msi_addr_high;
13804b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t msi_data_32;
13904b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t msi_data_64;
14004b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t msi_ctrl;
14104b6cca3Slucy wang - Sun Microsystems - Beijing China };
14204b6cca3Slucy wang - Sun Microsystems - Beijing China 
14304b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_jpool_entry;
14404b6cca3Slucy wang - Sun Microsystems - Beijing China 
14504b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_jpool_entry {
14604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_entry *next;
14704b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_dma_handle_t dma_handle;
14804b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_acc_handle_t acc_handle;
14904b6cca3Slucy wang - Sun Microsystems - Beijing China 	caddr_t buf;
15004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_slice_state *ss;
15104b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_dma_addr_t dma;  /* Kept in network byte order */
15204b6cca3Slucy wang - Sun Microsystems - Beijing China 	frtn_t free_func;
15304b6cca3Slucy wang - Sun Microsystems - Beijing China };
15404b6cca3Slucy wang - Sun Microsystems - Beijing China 
15504b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_CPU_CACHE_SZ	64
15604b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_per_cpu_jpool {
15704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_entry *head;
15804b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint8_t _pad[MYRI10GE_CPU_CACHE_SZ - sizeof (void *)];
15904b6cca3Slucy wang - Sun Microsystems - Beijing China };
16004b6cca3Slucy wang - Sun Microsystems - Beijing China 
16104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_MAX_CPUS	64
16204b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_MAX_CPU_MASK	(64 - 1)
16304b6cca3Slucy wang - Sun Microsystems - Beijing China 
16404b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_jpool_stuff {
16504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_entry *head;
16604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_per_cpu_jpool cpu[MYRI10GE_MAX_CPUS];
16704b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t mtx;
16804b6cca3Slucy wang - Sun Microsystems - Beijing China 	int num_alloc;
16904b6cca3Slucy wang - Sun Microsystems - Beijing China 	int low_water;
17004b6cca3Slucy wang - Sun Microsystems - Beijing China };
17104b6cca3Slucy wang - Sun Microsystems - Beijing China 
17204b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_ring_stats
17304b6cca3Slucy wang - Sun Microsystems - Beijing China {
17404b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t multixmt;
17504b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t brdcstxmt;
17604b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t opackets;
17704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t obytes;
17804b6cca3Slucy wang - Sun Microsystems - Beijing China };
17904b6cca3Slucy wang - Sun Microsystems - Beijing China 
18004b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_rx_ring_stats
18104b6cca3Slucy wang - Sun Microsystems - Beijing China {
18204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t multircv;
18304b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t brdcstrcv;
18404b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t ipackets;
18504b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t ibytes;
18604b6cca3Slucy wang - Sun Microsystems - Beijing China };
18704b6cca3Slucy wang - Sun Microsystems - Beijing China 
18804b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_ring_entry_stats
18904b6cca3Slucy wang - Sun Microsystems - Beijing China {
19004b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t  obytes;
19104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t  opackets;
19204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint8_t	  brdcstxmt;
19304b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint8_t	  multixmt;
19404b6cca3Slucy wang - Sun Microsystems - Beijing China };
19504b6cca3Slucy wang - Sun Microsystems - Beijing China 
19604b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_pkt_stats {
19704b6cca3Slucy wang - Sun Microsystems - Beijing China 	union {
19804b6cca3Slucy wang - Sun Microsystems - Beijing China 		uint64_t all;
19904b6cca3Slucy wang - Sun Microsystems - Beijing China 		struct myri10ge_tx_ring_entry_stats s;
20004b6cca3Slucy wang - Sun Microsystems - Beijing China 	} un;
20104b6cca3Slucy wang - Sun Microsystems - Beijing China };
20204b6cca3Slucy wang - Sun Microsystems - Beijing China 
20304b6cca3Slucy wang - Sun Microsystems - Beijing China #define	ostat stat.un.s
20404b6cca3Slucy wang - Sun Microsystems - Beijing China 
20504b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_dma_handle {
20604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_dma_handle *next;
20704b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_dma_handle_t h;
20804b6cca3Slucy wang - Sun Microsystems - Beijing China };
20904b6cca3Slucy wang - Sun Microsystems - Beijing China 
21004b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_dma_handle_head {
21104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_dma_handle *head;
21204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_dma_handle *tail;
21304b6cca3Slucy wang - Sun Microsystems - Beijing China };
21404b6cca3Slucy wang - Sun Microsystems - Beijing China 
21504b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_rx_buffer_state {
21604b6cca3Slucy wang - Sun Microsystems - Beijing China 	caddr_t ptr;
21704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_entry *j;
21804b6cca3Slucy wang - Sun Microsystems - Beijing China };
21904b6cca3Slucy wang - Sun Microsystems - Beijing China 
22004b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_buffer_state {
22104b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t *m;
22204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_dma_handle *handle;
22304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_pkt_stats stat;
22404b6cca3Slucy wang - Sun Microsystems - Beijing China };
22504b6cca3Slucy wang - Sun Microsystems - Beijing China 
22604b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_nic_stat {
22704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dma_force_physical;
22804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dma_read_bw_MBs;
22904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dma_write_bw_MBs;
23004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dma_read_write_bw_MBs;
23104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named lanes;
23204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_bad_crc32;
23304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_bad_phy;
23404b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_link_error_or_filtered;
23504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_link_overflow;
23604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_multicast_filtered;
23704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_no_big_buffer;
23804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_no_small_buffer;
23904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_overrun;
24004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_pause;
24104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_runt;
24204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named dropped_unicast_filtered;
24304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named link_changes;
24404b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named link_up;
24504b6cca3Slucy wang - Sun Microsystems - Beijing China };
24604b6cca3Slucy wang - Sun Microsystems - Beijing China 
24704b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_slice_stat {
24804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named lro_bad_csum;
24904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named lro_flushed;
25004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named lro_queued;
25104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_big;
25204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_bigbuf_firmware;
25304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_bigbuf_pool;
25404b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_bigbuf_smalls;
25504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_copy;
25604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_small;
25704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_big_nobuf;
25804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named rx_small_nobuf;
25904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named tx_activate;
26004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named tx_done;
26104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named tx_handles_alloced;
26204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named tx_req;
26304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_err;
26404b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_lowbuf;
26504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_lsobadflags;
26604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_pullup;
26704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_pullup_first;
26804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_sched;
26904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_stall;
27004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_stall_early;
27104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_stall_late;
27204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named xmit_zero_len;
27304b6cca3Slucy wang - Sun Microsystems - Beijing China };
27404b6cca3Slucy wang - Sun Microsystems - Beijing China 
27504b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_info {
27604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named driver_version;
27704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named firmware_version;
27804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named firmware_name;
27904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named interrupt_type;
28004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named product_code;
28104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct kstat_named serial_number;
28204b6cca3Slucy wang - Sun Microsystems - Beijing China };
28304b6cca3Slucy wang - Sun Microsystems - Beijing China 
28404b6cca3Slucy wang - Sun Microsystems - Beijing China 
28504b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_NIC_STAT_INC(field)					\
28604b6cca3Slucy wang - Sun Microsystems - Beijing China (((struct myri10ge_nic_stat *)mgp->ksp_stat->ks_data)->field.value.ul)++
28704b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_SLICE_STAT_INC(field)					\
28804b6cca3Slucy wang - Sun Microsystems - Beijing China (((struct myri10ge_slice_stat *)ss->ksp_stat->ks_data)->field.value.ul)++
28904b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_SLICE_STAT_ADD(field, val)				\
29004b6cca3Slucy wang - Sun Microsystems - Beijing China (((struct myri10ge_slice_stat *)ss->ksp_stat->ks_data)->field.value.ul) += val
29104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_SLICE_STAT_DEC(field)					\
29204b6cca3Slucy wang - Sun Microsystems - Beijing China (((struct myri10ge_slice_stat *)ss->ksp_stat->ks_data)->field.value.ul)--
29304b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_ATOMIC_SLICE_STAT_INC(field) 				\
294*1a5e258fSJosef 'Jeff' Sipek atomic_inc_ulong(&(((struct myri10ge_slice_stat *)			\
295*1a5e258fSJosef 'Jeff' Sipek 	ss->ksp_stat->ks_data)->field.value.ul))
29604b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_ATOMIC_SLICE_STAT_DEC(field) 				\
297*1a5e258fSJosef 'Jeff' Sipek atomic_dec_ulong(&(((struct myri10ge_slice_stat *)			\
298*1a5e258fSJosef 'Jeff' Sipek 	ss->ksp_stat->ks_data)->field.value.ul))
29904b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_SLICE_STAT(field)					\
30004b6cca3Slucy wang - Sun Microsystems - Beijing China (((struct myri10ge_slice_stat *)ss->ksp_stat->ks_data)->field.value.ul)
30104b6cca3Slucy wang - Sun Microsystems - Beijing China 
30204b6cca3Slucy wang - Sun Microsystems - Beijing China 
30304b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_tx_copybuf
30404b6cca3Slucy wang - Sun Microsystems - Beijing China {
30504b6cca3Slucy wang - Sun Microsystems - Beijing China 	caddr_t va;
30604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int len;
30704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_dma_stuff dma;
30804b6cca3Slucy wang - Sun Microsystems - Beijing China };
30904b6cca3Slucy wang - Sun Microsystems - Beijing China 
31004b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct
31104b6cca3Slucy wang - Sun Microsystems - Beijing China {
31204b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_kreq_ether_recv_t *lanai;	/* lanai ptr for recv ring */
31304b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_kreq_ether_recv_t *shadow;	/* host shadow of recv ring */
31404b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_rx_buffer_state *info;
31504b6cca3Slucy wang - Sun Microsystems - Beijing China 	int cnt;
31604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int alloc_fail;
31704b6cca3Slucy wang - Sun Microsystems - Beijing China 	int mask;			/* number of rx slots -1 */
31804b6cca3Slucy wang - Sun Microsystems - Beijing China 	boolean_t polling;
31904b6cca3Slucy wang - Sun Microsystems - Beijing China } myri10ge_rx_ring_t;
32004b6cca3Slucy wang - Sun Microsystems - Beijing China 
32104b6cca3Slucy wang - Sun Microsystems - Beijing China typedef struct
32204b6cca3Slucy wang - Sun Microsystems - Beijing China {
32304b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_kreq_ether_send_t *lanai;	/* lanai ptr for sendq	*/
32404b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *go;			/* doorbell to poll sendq */
32504b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *stop;			/* doorbell to !poll sendq */
32604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_buffer_state *info;
32704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_copybuf *cp;
32804b6cca3Slucy wang - Sun Microsystems - Beijing China 	int req;			/* transmits submitted	*/
32904b6cca3Slucy wang - Sun Microsystems - Beijing China 	int mask;			/* number of transmit slots -1 */
33004b6cca3Slucy wang - Sun Microsystems - Beijing China 	int done;			/* transmits completed	*/
33104b6cca3Slucy wang - Sun Microsystems - Beijing China 	int pkt_done;			/* packets completed */
33204b6cca3Slucy wang - Sun Microsystems - Beijing China 	int active;
33304b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t stall;
33404b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t stall_early;
33504b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t stall_late;
33604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int sched;
33704b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t lock;
33804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_ring_stats stats;
33904b6cca3Slucy wang - Sun Microsystems - Beijing China 	int watchdog_req;
34004b6cca3Slucy wang - Sun Microsystems - Beijing China 	int watchdog_done;
34104b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned long activate;
34204b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t handle_lock;
34304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_tx_dma_handle  *free_tx_handles;
34404b6cca3Slucy wang - Sun Microsystems - Beijing China 	mac_ring_handle_t rh;
34504b6cca3Slucy wang - Sun Microsystems - Beijing China } myri10ge_tx_ring_t;
34604b6cca3Slucy wang - Sun Microsystems - Beijing China 
34704b6cca3Slucy wang - Sun Microsystems - Beijing China struct lro_entry;
34804b6cca3Slucy wang - Sun Microsystems - Beijing China 
34904b6cca3Slucy wang - Sun Microsystems - Beijing China struct lro_entry
35004b6cca3Slucy wang - Sun Microsystems - Beijing China {
35104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct lro_entry *next;
35204b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t		*m_head;
35304b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t		*m_tail;
35404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int		timestamp;
35504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct ip	*ip;
35604b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	tsval;
35704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	tsecr;
35804b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	source_ip;
35904b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	dest_ip;
36004b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	next_seq;
36104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	ack_seq;
36204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	len;
36304b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t	data_csum;
36404b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t	window;
36504b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t	source_port;
36604b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t	dest_port;
36704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t	append_cnt;
36804b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint16_t	mss;
36904b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint8_t		flags;
37004b6cca3Slucy wang - Sun Microsystems - Beijing China };
37104b6cca3Slucy wang - Sun Microsystems - Beijing China 
37204b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_mblk_list
37304b6cca3Slucy wang - Sun Microsystems - Beijing China {
37404b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t *head;
37504b6cca3Slucy wang - Sun Microsystems - Beijing China 	mblk_t **tail;
37604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int cnt;
37704b6cca3Slucy wang - Sun Microsystems - Beijing China };
37804b6cca3Slucy wang - Sun Microsystems - Beijing China 
37904b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_priv;
38004b6cca3Slucy wang - Sun Microsystems - Beijing China 
38104b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_slice_state {
38204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_priv *mgp;
38304b6cca3Slucy wang - Sun Microsystems - Beijing China 	myri10ge_tx_ring_t tx;	/* transmit ring 	*/
38404b6cca3Slucy wang - Sun Microsystems - Beijing China 	myri10ge_rx_ring_t rx_small;
38504b6cca3Slucy wang - Sun Microsystems - Beijing China 	myri10ge_rx_ring_t rx_big;
38604b6cca3Slucy wang - Sun Microsystems - Beijing China 	myri10ge_rx_done_t rx_done;
38704b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_stuff jpool;
38804b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_rx_ring_stats rx_stats;
38904b6cca3Slucy wang - Sun Microsystems - Beijing China 	volatile uint32_t *irq_claim;
39004b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_irq_data_t *fw_stats;
39104b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct lro_entry *lro_active;
39204b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct lro_entry *lro_free;
39304b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_dma_stuff fw_stats_dma;
39404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int jbufs_for_smalls;
39504b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_jpool_entry *small_jpool;
39604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int j_rx_cnt;
39704b6cca3Slucy wang - Sun Microsystems - Beijing China 	mac_resource_handle_t mrh;
39804b6cca3Slucy wang - Sun Microsystems - Beijing China 	kstat_t *ksp_stat;
39904b6cca3Slucy wang - Sun Microsystems - Beijing China 	mac_ring_handle_t rx_rh;
40004b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t rx_lock;
40104b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t poll_lock;
40204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint64_t rx_gen_num;
40304b6cca3Slucy wang - Sun Microsystems - Beijing China 	boolean_t rx_polling;
40404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int rx_token;
40504b6cca3Slucy wang - Sun Microsystems - Beijing China 	int watchdog_rx_copy;
40604b6cca3Slucy wang - Sun Microsystems - Beijing China };
40704b6cca3Slucy wang - Sun Microsystems - Beijing China 
40804b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_priv {
40904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_slice_state *ss;
41004b6cca3Slucy wang - Sun Microsystems - Beijing China 	int max_intr_slots;
41104b6cca3Slucy wang - Sun Microsystems - Beijing China 	int num_slices;
41204b6cca3Slucy wang - Sun Microsystems - Beijing China 	dev_info_t *dip;
41304b6cca3Slucy wang - Sun Microsystems - Beijing China 	mac_handle_t mh;
41404b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_acc_handle_t io_handle;
41504b6cca3Slucy wang - Sun Microsystems - Beijing China 	int tx_boundary;
41604b6cca3Slucy wang - Sun Microsystems - Beijing China 	int watchdog_rx_pause;
41704b6cca3Slucy wang - Sun Microsystems - Beijing China 	kstat_t *ksp_stat;
41804b6cca3Slucy wang - Sun Microsystems - Beijing China 	kstat_t *ksp_info;
41904b6cca3Slucy wang - Sun Microsystems - Beijing China 	int running;			/* running? 		*/
42004b6cca3Slucy wang - Sun Microsystems - Beijing China 	int csum_flag;			/* rx_csums? 		*/
42104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint8_t	mac_addr[6];		/* eeprom mac address */
42204b6cca3Slucy wang - Sun Microsystems - Beijing China 	volatile uint8_t *sram;
42304b6cca3Slucy wang - Sun Microsystems - Beijing China 	int sram_size;
42404b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned long  board_span;
42504b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned long iomem_base;
42604b6cca3Slucy wang - Sun Microsystems - Beijing China 	volatile uint32_t *irq_deassert;
42704b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *mac_addr_string;
42804b6cca3Slucy wang - Sun Microsystems - Beijing China 	mcp_cmd_response_t *cmd;
42904b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_dma_stuff cmd_dma;
43004b6cca3Slucy wang - Sun Microsystems - Beijing China 	int msi_enabled;
43104b6cca3Slucy wang - Sun Microsystems - Beijing China 	int link_state;
43204b6cca3Slucy wang - Sun Microsystems - Beijing China 	int rdma_tags_available;
43304b6cca3Slucy wang - Sun Microsystems - Beijing China 	int intr_coal_delay;
43404b6cca3Slucy wang - Sun Microsystems - Beijing China 	volatile uint32_t *intr_coal_delay_ptr;
43504b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t cmd_lock;
43604b6cca3Slucy wang - Sun Microsystems - Beijing China 	kmutex_t intrlock;
43704b6cca3Slucy wang - Sun Microsystems - Beijing China 	int down_cnt;
43804b6cca3Slucy wang - Sun Microsystems - Beijing China 	int watchdog_resets;
43904b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned char *eth_z8e;
44004b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned int eth_z8e_length;
44104b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_iblock_cookie_t icookie;
44204b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_intr_handle_t *htable;
44304b6cca3Slucy wang - Sun Microsystems - Beijing China 	int intr_size;
44404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int intr_cnt;
44504b6cca3Slucy wang - Sun Microsystems - Beijing China 	int intr_cap;
44604b6cca3Slucy wang - Sun Microsystems - Beijing China 	unsigned int intr_pri;
44704b6cca3Slucy wang - Sun Microsystems - Beijing China 	int ddi_intr_type;
44804b6cca3Slucy wang - Sun Microsystems - Beijing China 	int pause;
44904b6cca3Slucy wang - Sun Microsystems - Beijing China 	timeout_id_t timer_id;
45004b6cca3Slucy wang - Sun Microsystems - Beijing China 	clock_t timer_ticks;
45104b6cca3Slucy wang - Sun Microsystems - Beijing China 	int vso;
45204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t mcp_index;
45304b6cca3Slucy wang - Sun Microsystems - Beijing China 	char fw_version[128];
45404b6cca3Slucy wang - Sun Microsystems - Beijing China 	char name[32];
45504b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *fw_name;
45604b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *intr_type;
45704b6cca3Slucy wang - Sun Microsystems - Beijing China 	char eeprom_strings[MYRI10GE_EEPROM_STRINGS_SIZE];
45804b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *sn_str;
45904b6cca3Slucy wang - Sun Microsystems - Beijing China 	char *pc_str;
46004b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t read_dma;
46104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t write_dma;
46204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t read_write_dma;
46304b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t pcie_link_width;
46404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int max_read_request_4k;
46504b6cca3Slucy wang - Sun Microsystems - Beijing China 	caddr_t nd_head;
46604b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_priv *next;
46704b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint_t refcnt;
46804b6cca3Slucy wang - Sun Microsystems - Beijing China 	int reg_set;
46904b6cca3Slucy wang - Sun Microsystems - Beijing China 	int features;
47004b6cca3Slucy wang - Sun Microsystems - Beijing China 	struct myri10ge_pci_saved_state pci_saved_state;
47104b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t *toeplitz_hash_table;
47204b6cca3Slucy wang - Sun Microsystems - Beijing China 	uint32_t rss_key[8];
47304b6cca3Slucy wang - Sun Microsystems - Beijing China 	ddi_acc_handle_t cfg_hdl;
47404b6cca3Slucy wang - Sun Microsystems - Beijing China 	int macaddr_cnt;
47504b6cca3Slucy wang - Sun Microsystems - Beijing China };
47604b6cca3Slucy wang - Sun Microsystems - Beijing China 
47704b6cca3Slucy wang - Sun Microsystems - Beijing China /* features bitmask */
47804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_TSO 1
47904b6cca3Slucy wang - Sun Microsystems - Beijing China 
48004b6cca3Slucy wang - Sun Microsystems - Beijing China #if defined(__GNUC__)
48104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	likely(x)	__builtin_expect((x), 1)
48204b6cca3Slucy wang - Sun Microsystems - Beijing China #define	unlikely(x)	__builtin_expect((x), 0)
48304b6cca3Slucy wang - Sun Microsystems - Beijing China #else
48404b6cca3Slucy wang - Sun Microsystems - Beijing China #define	likely(x)	(x)
48504b6cca3Slucy wang - Sun Microsystems - Beijing China #define	unlikely(x)	(x)
48604b6cca3Slucy wang - Sun Microsystems - Beijing China #endif /* defined(__GNUC__) */
48704b6cca3Slucy wang - Sun Microsystems - Beijing China 
48804b6cca3Slucy wang - Sun Microsystems - Beijing China #define	mb membar_producer
48904b6cca3Slucy wang - Sun Microsystems - Beijing China 
49004b6cca3Slucy wang - Sun Microsystems - Beijing China struct myri10ge_priv *myri10ge_get_instance(uint_t unit);
49104b6cca3Slucy wang - Sun Microsystems - Beijing China void myri10ge_put_instance(struct myri10ge_priv *);
49204b6cca3Slucy wang - Sun Microsystems - Beijing China int myri10ge_send_cmd(struct myri10ge_priv *mgp, uint32_t cmd,
49304b6cca3Slucy wang - Sun Microsystems - Beijing China     myri10ge_cmd_t *data);
49404b6cca3Slucy wang - Sun Microsystems - Beijing China caddr_t myri10ge_dma_alloc(dev_info_t *dip, size_t len,
49504b6cca3Slucy wang - Sun Microsystems - Beijing China     ddi_dma_attr_t *attr, ddi_device_acc_attr_t  *accattr,
49604b6cca3Slucy wang - Sun Microsystems - Beijing China     uint_t alloc_flags, int bind_flags, struct myri10ge_dma_stuff *dma,
49704b6cca3Slucy wang - Sun Microsystems - Beijing China     int warn, int (*waitfp)(caddr_t));
49804b6cca3Slucy wang - Sun Microsystems - Beijing China void myri10ge_dma_free(struct myri10ge_dma_stuff *dma);
49904b6cca3Slucy wang - Sun Microsystems - Beijing China 
50004b6cca3Slucy wang - Sun Microsystems - Beijing China void myri10ge_lro_flush(struct myri10ge_slice_state *ss,
50104b6cca3Slucy wang - Sun Microsystems - Beijing China     struct lro_entry *lro, struct myri10ge_mblk_list *mbl);
50204b6cca3Slucy wang - Sun Microsystems - Beijing China int myri10ge_lro_rx(struct myri10ge_slice_state *ss, mblk_t *m_head,
50304b6cca3Slucy wang - Sun Microsystems - Beijing China     uint32_t csum, struct myri10ge_mblk_list *mbl);
50404b6cca3Slucy wang - Sun Microsystems - Beijing China void myri10ge_mbl_append(struct myri10ge_slice_state *ss,
50504b6cca3Slucy wang - Sun Microsystems - Beijing China     struct myri10ge_mblk_list *mbl, mblk_t *mp);
50604b6cca3Slucy wang - Sun Microsystems - Beijing China uint16_t myri10ge_csum_generic(uint16_t *raw, int len);
50704b6cca3Slucy wang - Sun Microsystems - Beijing China extern int myri10ge_lro_max_aggr;
50804b6cca3Slucy wang - Sun Microsystems - Beijing China extern int myri10ge_mtu;
50904b6cca3Slucy wang - Sun Microsystems - Beijing China 
51004b6cca3Slucy wang - Sun Microsystems - Beijing China #ifndef ETHERNET_HEADER_SIZE
51104b6cca3Slucy wang - Sun Microsystems - Beijing China #define	ETHERNET_HEADER_SIZE 14
51204b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
51304b6cca3Slucy wang - Sun Microsystems - Beijing China 
51404b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_TOEPLITZ_HASH	(MXGEFW_RSS_HASH_TYPE_TCP_IPV4|\
51504b6cca3Slucy wang - Sun Microsystems - Beijing China 	    MXGEFW_RSS_HASH_TYPE_IPV4)
51604b6cca3Slucy wang - Sun Microsystems - Beijing China #define	MYRI10GE_POLL_NULL INT_MAX
51704b6cca3Slucy wang - Sun Microsystems - Beijing China 
51804b6cca3Slucy wang - Sun Microsystems - Beijing China /*
51904b6cca3Slucy wang - Sun Microsystems - Beijing China  *  This file uses MyriGE driver indentation.
52004b6cca3Slucy wang - Sun Microsystems - Beijing China  *
52104b6cca3Slucy wang - Sun Microsystems - Beijing China  * Local Variables:
52204b6cca3Slucy wang - Sun Microsystems - Beijing China  * c-file-style:"sun"
52304b6cca3Slucy wang - Sun Microsystems - Beijing China  * tab-width:8
52404b6cca3Slucy wang - Sun Microsystems - Beijing China  * End:
52504b6cca3Slucy wang - Sun Microsystems - Beijing China  */
52604b6cca3Slucy wang - Sun Microsystems - Beijing China 
52704b6cca3Slucy wang - Sun Microsystems - Beijing China #ifdef	__cplusplus
52804b6cca3Slucy wang - Sun Microsystems - Beijing China }
52904b6cca3Slucy wang - Sun Microsystems - Beijing China #endif
53004b6cca3Slucy wang - Sun Microsystems - Beijing China 
53104b6cca3Slucy wang - Sun Microsystems - Beijing China #endif /* MYRI10GE_VAR_H */
532