19a5557fdSlucy wang - Sun Microsystems - Beijing China /*
29a5557fdSlucy wang - Sun Microsystems - Beijing China  * CDDL HEADER START
39a5557fdSlucy wang - Sun Microsystems - Beijing China  *
49a5557fdSlucy wang - Sun Microsystems - Beijing China  * The contents of this file are subject to the terms of the
59a5557fdSlucy wang - Sun Microsystems - Beijing China  * Common Development and Distribution License (the "License").
69a5557fdSlucy wang - Sun Microsystems - Beijing China  * You may not use this file except in compliance with the License.
79a5557fdSlucy wang - Sun Microsystems - Beijing China  *
89a5557fdSlucy wang - Sun Microsystems - Beijing China  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
99a5557fdSlucy wang - Sun Microsystems - Beijing China  * or http://www.opensolaris.org/os/licensing.
109a5557fdSlucy wang - Sun Microsystems - Beijing China  * See the License for the specific language governing permissions
119a5557fdSlucy wang - Sun Microsystems - Beijing China  * and limitations under the License.
129a5557fdSlucy wang - Sun Microsystems - Beijing China  *
139a5557fdSlucy wang - Sun Microsystems - Beijing China  * When distributing Covered Code, include this CDDL HEADER in each
149a5557fdSlucy wang - Sun Microsystems - Beijing China  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
159a5557fdSlucy wang - Sun Microsystems - Beijing China  * If applicable, add the following below this CDDL HEADER, with the
169a5557fdSlucy wang - Sun Microsystems - Beijing China  * fields enclosed by brackets "[]" replaced with your own identifying
179a5557fdSlucy wang - Sun Microsystems - Beijing China  * information: Portions Copyright [yyyy] [name of copyright owner]
189a5557fdSlucy wang - Sun Microsystems - Beijing China  *
199a5557fdSlucy wang - Sun Microsystems - Beijing China  * CDDL HEADER END
209a5557fdSlucy wang - Sun Microsystems - Beijing China  */
21*93833965Sjing xiong ERI-SUN 
229a5557fdSlucy wang - Sun Microsystems - Beijing China /*
239a5557fdSlucy wang - Sun Microsystems - Beijing China  * Copyright 2008 NetXen, Inc.  All rights reserved.
249a5557fdSlucy wang - Sun Microsystems - Beijing China  * Use is subject to license terms.
259a5557fdSlucy wang - Sun Microsystems - Beijing China  */
269a5557fdSlucy wang - Sun Microsystems - Beijing China /*
279a5557fdSlucy wang - Sun Microsystems - Beijing China  * Data types and structure for HAL - NIC interface.
289a5557fdSlucy wang - Sun Microsystems - Beijing China  *
299a5557fdSlucy wang - Sun Microsystems - Beijing China  */
309a5557fdSlucy wang - Sun Microsystems - Beijing China 
319a5557fdSlucy wang - Sun Microsystems - Beijing China #ifndef _NXHAL_NIC_INTERFACE_H_
329a5557fdSlucy wang - Sun Microsystems - Beijing China #define	_NXHAL_NIC_INTERFACE_H_
339a5557fdSlucy wang - Sun Microsystems - Beijing China 
34*93833965Sjing xiong ERI-SUN #ifdef __cplusplus
35*93833965Sjing xiong ERI-SUN extern "C" {
36*93833965Sjing xiong ERI-SUN #endif
37*93833965Sjing xiong ERI-SUN 
389a5557fdSlucy wang - Sun Microsystems - Beijing China /*
399a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Simple Types
409a5557fdSlucy wang - Sun Microsystems - Beijing China  */
419a5557fdSlucy wang - Sun Microsystems - Beijing China 
429a5557fdSlucy wang - Sun Microsystems - Beijing China typedef	U32	nx_reg_addr_t;
439a5557fdSlucy wang - Sun Microsystems - Beijing China 
449a5557fdSlucy wang - Sun Microsystems - Beijing China /*
459a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Root crb-based firmware commands
469a5557fdSlucy wang - Sun Microsystems - Beijing China  */
479a5557fdSlucy wang - Sun Microsystems - Beijing China 
489a5557fdSlucy wang - Sun Microsystems - Beijing China /*
499a5557fdSlucy wang - Sun Microsystems - Beijing China  * CRB Root Command
509a5557fdSlucy wang - Sun Microsystems - Beijing China  * A single set of crbs is used across all physical/virtual
519a5557fdSlucy wang - Sun Microsystems - Beijing China  * functions for capability queries, initialization, and
529a5557fdSlucy wang - Sun Microsystems - Beijing China  * context creation/destruction.
539a5557fdSlucy wang - Sun Microsystems - Beijing China  *
549a5557fdSlucy wang - Sun Microsystems - Beijing China  * There are 4 CRBS:
559a5557fdSlucy wang - Sun Microsystems - Beijing China  *					Command/Response CRB
569a5557fdSlucy wang - Sun Microsystems - Beijing China  *					Argument1 CRB
579a5557fdSlucy wang - Sun Microsystems - Beijing China  *					Argument2 CRB
589a5557fdSlucy wang - Sun Microsystems - Beijing China  *					Argument3 CRB
599a5557fdSlucy wang - Sun Microsystems - Beijing China  *					Signature CRB
609a5557fdSlucy wang - Sun Microsystems - Beijing China  *
619a5557fdSlucy wang - Sun Microsystems - Beijing China  * The cmd/rsp crb is always intiated by the host via
629a5557fdSlucy wang - Sun Microsystems - Beijing China  * a command code and always responded by the card with
639a5557fdSlucy wang - Sun Microsystems - Beijing China  * a response code. The cmd and rsp codes are disjoint.
649a5557fdSlucy wang - Sun Microsystems - Beijing China  * The sequence of use is always CMD, RSP, CLEAR CMD.
659a5557fdSlucy wang - Sun Microsystems - Beijing China  *
669a5557fdSlucy wang - Sun Microsystems - Beijing China  * The arguments are for passing in command specific
679a5557fdSlucy wang - Sun Microsystems - Beijing China  * and response specific parameters/data.
689a5557fdSlucy wang - Sun Microsystems - Beijing China  *
699a5557fdSlucy wang - Sun Microsystems - Beijing China  * The signature is composed of a magic value, the
709a5557fdSlucy wang - Sun Microsystems - Beijing China  * pci function id, and a command sequence id:
719a5557fdSlucy wang - Sun Microsystems - Beijing China  *		[7:0]  = pci function
729a5557fdSlucy wang - Sun Microsystems - Beijing China  *		[15:8]  = version
739a5557fdSlucy wang - Sun Microsystems - Beijing China  *		[31:16] = magic of 0xcafe
749a5557fdSlucy wang - Sun Microsystems - Beijing China  *
759a5557fdSlucy wang - Sun Microsystems - Beijing China  *	The pci function allows the card to take correct
769a5557fdSlucy wang - Sun Microsystems - Beijing China  *	action for the given particular commands.
779a5557fdSlucy wang - Sun Microsystems - Beijing China  *	The firmware will attempt to detect
789a5557fdSlucy wang - Sun Microsystems - Beijing China  *	an errant driver that has died while holding
799a5557fdSlucy wang - Sun Microsystems - Beijing China  *	the root crb hardware lock. Such an error condition
809a5557fdSlucy wang - Sun Microsystems - Beijing China  *	shows up as the cmd/rsp crb stuck in a non-clear state.
819a5557fdSlucy wang - Sun Microsystems - Beijing China  *
829a5557fdSlucy wang - Sun Microsystems - Beijing China  * Interface Sequence:
839a5557fdSlucy wang - Sun Microsystems - Beijing China  *	 Host always makes requests and firmware always responds.
849a5557fdSlucy wang - Sun Microsystems - Beijing China  *	 Note that data field is always set prior to command field.
859a5557fdSlucy wang - Sun Microsystems - Beijing China  *
869a5557fdSlucy wang - Sun Microsystems - Beijing China  *		[READ]             CMD/RSP CRB      ARGUMENT FIELD
879a5557fdSlucy wang - Sun Microsystems - Beijing China  *		Host grab lock
889a5557fdSlucy wang - Sun Microsystems - Beijing China  *		Host  ->           CMD              optional parameter
899a5557fdSlucy wang - Sun Microsystems - Beijing China  *		FW   <-  (Good)    RSP-OK           DATA
909a5557fdSlucy wang - Sun Microsystems - Beijing China  *		FW   <-  (Fail)    RSP-FAIL         optional failure code
919a5557fdSlucy wang - Sun Microsystems - Beijing China  *		Host ->            CLEAR
929a5557fdSlucy wang - Sun Microsystems - Beijing China  *		Host release lock
939a5557fdSlucy wang - Sun Microsystems - Beijing China  *
949a5557fdSlucy wang - Sun Microsystems - Beijing China  * [WRITE]            CMD/RSP CRB      ARGUMENT FIELD
959a5557fdSlucy wang - Sun Microsystems - Beijing China  * Host grab lock
969a5557fdSlucy wang - Sun Microsystems - Beijing China  * Host  ->           CMD              DATA
979a5557fdSlucy wang - Sun Microsystems - Beijing China  * FW   <-  (Good)    RSP-OK           optional write status
989a5557fdSlucy wang - Sun Microsystems - Beijing China  * FW   <-  (Write)   RSP-FAIL         optional failure code
999a5557fdSlucy wang - Sun Microsystems - Beijing China  * Host ->            CLEAR
1009a5557fdSlucy wang - Sun Microsystems - Beijing China  * Host release lock
1019a5557fdSlucy wang - Sun Microsystems - Beijing China  */
1029a5557fdSlucy wang - Sun Microsystems - Beijing China 
1039a5557fdSlucy wang - Sun Microsystems - Beijing China 
1049a5557fdSlucy wang - Sun Microsystems - Beijing China /*
1059a5557fdSlucy wang - Sun Microsystems - Beijing China  *        CMD/RSP
1069a5557fdSlucy wang - Sun Microsystems - Beijing China  */
1079a5557fdSlucy wang - Sun Microsystems - Beijing China 
1089a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_SIGNATURE_TO_PCIFN(sign)    ((sign) & 0xff)
1099a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_SIGNATURE_TO_VERSION(sign)  (((sign)>>8) & 0xff)
1109a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_SIGNATURE_TO_MAGIC(sign)    (((sign)>>16) & 0xffff)
1119a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_SIGNATURE_VALID(sign)       \
1129a5557fdSlucy wang - Sun Microsystems - Beijing China 	(NX_CDRP_SIGNATURE_TO_MAGIC(sign) == 0xcafe && \
1139a5557fdSlucy wang - Sun Microsystems - Beijing China 	    NX_CDRP_SIGNATURE_TO_PCIFN(sign) < 8)
1149a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_SIGNATURE_MAKE(pcifn, version) \
1159a5557fdSlucy wang - Sun Microsystems - Beijing China 	(((pcifn) & 0xff) |		      \
1169a5557fdSlucy wang - Sun Microsystems - Beijing China 	    (((version) & 0xff) << 8) |	      \
1179a5557fdSlucy wang - Sun Microsystems - Beijing China 	    ((u32)0xcafe << 16))
1189a5557fdSlucy wang - Sun Microsystems - Beijing China 
1199a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CLEAR			0x00000000
1209a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_BIT			0x80000000
1219a5557fdSlucy wang - Sun Microsystems - Beijing China 
1229a5557fdSlucy wang - Sun Microsystems - Beijing China /*
1239a5557fdSlucy wang - Sun Microsystems - Beijing China  * All responses must have the NX_CDRP_CMD_BIT cleared
1249a5557fdSlucy wang - Sun Microsystems - Beijing China  * in the crb NX_CDRP_CRB_OFFSET.
1259a5557fdSlucy wang - Sun Microsystems - Beijing China  */
1269a5557fdSlucy wang - Sun Microsystems - Beijing China 
1279a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_FORM_RSP(rsp)		(rsp)
1289a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_IS_RSP(rsp)			(((rsp) & NX_CDRP_CMD_BIT) == 0)
1299a5557fdSlucy wang - Sun Microsystems - Beijing China 
1309a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_RSP_OK				0x00000001
1319a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_RSP_FAIL			0x00000002
1329a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_RSP_TIMEOUT			0x00000003
1339a5557fdSlucy wang - Sun Microsystems - Beijing China 
1349a5557fdSlucy wang - Sun Microsystems - Beijing China /*
1359a5557fdSlucy wang - Sun Microsystems - Beijing China  * All commands must have the NX_CDRP_CMD_BIT set in
1369a5557fdSlucy wang - Sun Microsystems - Beijing China  * the crb NX_CDRP_CRB_OFFSET.
1379a5557fdSlucy wang - Sun Microsystems - Beijing China  * The macros below do not have it explicitly set to
1389a5557fdSlucy wang - Sun Microsystems - Beijing China  * allow their use in lookup tables
1399a5557fdSlucy wang - Sun Microsystems - Beijing China  */
1409a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_FORM_CMD(cmd)	(NX_CDRP_CMD_BIT | (cmd))
1419a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_IS_CMD(cmd)		(((cmd) & NX_CDRP_CMD_BIT) != 0)
1429a5557fdSlucy wang - Sun Microsystems - Beijing China 
1439a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Capability Vector [RSP] Capability Vector */
1449a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_SUBMIT_CAPABILITIES		0x00000001
1459a5557fdSlucy wang - Sun Microsystems - Beijing China 
1469a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] Query Value */
1479a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_READ_MAX_RDS_PER_CTX    0x00000002
1489a5557fdSlucy wang - Sun Microsystems - Beijing China 
1499a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] Query Value */
1509a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_READ_MAX_SDS_PER_CTX    0x00000003
1519a5557fdSlucy wang - Sun Microsystems - Beijing China 
1529a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] Query Value */
1539a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_READ_MAX_RULES_PER_CTX  0x00000004
1549a5557fdSlucy wang - Sun Microsystems - Beijing China 
1559a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] Query Value */
1569a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_READ_MAX_RX_CTX			0x00000005
1579a5557fdSlucy wang - Sun Microsystems - Beijing China 
1589a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] Query Value */
1599a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_READ_MAX_TX_CTX			0x00000006
1609a5557fdSlucy wang - Sun Microsystems - Beijing China 
1619a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Rx Config DMA Addr [RSP] rcode */
1629a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_CREATE_RX_CTX			0x00000007
1639a5557fdSlucy wang - Sun Microsystems - Beijing China 
1649a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Rx Context Handle, Reset Kind [RSP] rcode */
1659a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_DESTROY_RX_CTX			0x00000008
1669a5557fdSlucy wang - Sun Microsystems - Beijing China 
1679a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Tx Config DMA Addr [RSP] rcode */
1689a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_CREATE_TX_CTX			0x00000009
1699a5557fdSlucy wang - Sun Microsystems - Beijing China 
1709a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Tx Context Handle, Reset Kind [RSP] rcode */
1719a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_DESTROY_TX_CTX			0x0000000a
1729a5557fdSlucy wang - Sun Microsystems - Beijing China 
1739a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Stat setup dma addr - [RSP] Handle, rcode */
1749a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_SETUP_STATISTICS		0x0000000e
1759a5557fdSlucy wang - Sun Microsystems - Beijing China 
1769a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Handle - [RSP] rcode */
1779a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_GET_STATISTICS			0x0000000f
1789a5557fdSlucy wang - Sun Microsystems - Beijing China 
1799a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] Handle - [RSP] rcode */
1809a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_DELETE_STATISTICS		0x00000010
1819a5557fdSlucy wang - Sun Microsystems - Beijing China 
1829a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] - [RSP] rcode */
1839a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_GEN_INT					0x00000011
1849a5557fdSlucy wang - Sun Microsystems - Beijing China 
1859a5557fdSlucy wang - Sun Microsystems - Beijing China /* [CMD] MTU - [RSP] rcode */
1869a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_SET_MTU					0x00000012
1879a5557fdSlucy wang - Sun Microsystems - Beijing China 
1889a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CDRP_CMD_MAX						0x00000013
1899a5557fdSlucy wang - Sun Microsystems - Beijing China 
1909a5557fdSlucy wang - Sun Microsystems - Beijing China /*
1919a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Capabilities
1929a5557fdSlucy wang - Sun Microsystems - Beijing China  */
1939a5557fdSlucy wang - Sun Microsystems - Beijing China 
1949a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP_BIT(class, bit)				(1 << bit)
1959a5557fdSlucy wang - Sun Microsystems - Beijing China 
1969a5557fdSlucy wang - Sun Microsystems - Beijing China /* Class 0 (i.e. ARGS 1) */
1979a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LEGACY_CONTEXT			NX_CAP_BIT(0, 0)
1989a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_MULTI_CONTEXT			NX_CAP_BIT(0, 1)
1999a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LEGACY_MN				NX_CAP_BIT(0, 2)
2009a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LEGACY_MS				NX_CAP_BIT(0, 3)
2019a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_CUT_THROUGH				NX_CAP_BIT(0, 4)
2029a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LRO						NX_CAP_BIT(0, 5)
2039a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LSO						NX_CAP_BIT(0, 6)
2049a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_JUMBO_CONTIGUOUS		NX_CAP_BIT(0, 7)
2059a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP0_LRO_CONTIGUOUS		    NX_CAP_BIT(0, 8)
2069a5557fdSlucy wang - Sun Microsystems - Beijing China 
2079a5557fdSlucy wang - Sun Microsystems - Beijing China /* Class 1 (i.e. ARGS 2) */
2089a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_NIC						NX_CAP_BIT(1, 0)
2099a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_PXE						NX_CAP_BIT(1, 1)
2109a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_CHIMNEY					NX_CAP_BIT(1, 2)
2119a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_LSA						NX_CAP_BIT(1, 3)
2129a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_RDMA					NX_CAP_BIT(1, 4)
2139a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_ISCSI					NX_CAP_BIT(1, 5)
2149a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_CAP1_FCOE					NX_CAP_BIT(1, 6)
2159a5557fdSlucy wang - Sun Microsystems - Beijing China 
2169a5557fdSlucy wang - Sun Microsystems - Beijing China /* Class 2 (i.e. ARGS 3) */
2179a5557fdSlucy wang - Sun Microsystems - Beijing China 
2189a5557fdSlucy wang - Sun Microsystems - Beijing China /*
2199a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Rules
2209a5557fdSlucy wang - Sun Microsystems - Beijing China  */
2219a5557fdSlucy wang - Sun Microsystems - Beijing China 
2229a5557fdSlucy wang - Sun Microsystems - Beijing China typedef	U32	nx_rx_rule_type_t;
2239a5557fdSlucy wang - Sun Microsystems - Beijing China 
2249a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_DEFAULT				0
2259a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_MAC					1
2269a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_MAC_VLAN				2
2279a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_MAC_RSS				3
2289a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_MAC_VLAN_RSS			4
2299a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULETYPE_MAX					5
2309a5557fdSlucy wang - Sun Microsystems - Beijing China 
2319a5557fdSlucy wang - Sun Microsystems - Beijing China typedef	U32	nx_rx_rule_cmd_t;
2329a5557fdSlucy wang - Sun Microsystems - Beijing China 
2339a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULECMD_ADD					0
2349a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULECMD_REMOVE				1
2359a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RX_RULECMD_MAX					2
2369a5557fdSlucy wang - Sun Microsystems - Beijing China 
2379a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_rx_rule_arg_s {
2389a5557fdSlucy wang - Sun Microsystems - Beijing China 	union {
2399a5557fdSlucy wang - Sun Microsystems - Beijing China 		struct {
2409a5557fdSlucy wang - Sun Microsystems - Beijing China 			char mac[6];
2419a5557fdSlucy wang - Sun Microsystems - Beijing China 		} m;
2429a5557fdSlucy wang - Sun Microsystems - Beijing China 		struct {
2439a5557fdSlucy wang - Sun Microsystems - Beijing China 			char mac[6];
2449a5557fdSlucy wang - Sun Microsystems - Beijing China 			char vlan;
2459a5557fdSlucy wang - Sun Microsystems - Beijing China 		} mv;
2469a5557fdSlucy wang - Sun Microsystems - Beijing China 		struct {
2479a5557fdSlucy wang - Sun Microsystems - Beijing China 			char mac[6];
2489a5557fdSlucy wang - Sun Microsystems - Beijing China 		} mr;
2499a5557fdSlucy wang - Sun Microsystems - Beijing China 		struct {
2509a5557fdSlucy wang - Sun Microsystems - Beijing China 			char mac[6];
2519a5557fdSlucy wang - Sun Microsystems - Beijing China 			char vlan;
2529a5557fdSlucy wang - Sun Microsystems - Beijing China 		} mvr;
2539a5557fdSlucy wang - Sun Microsystems - Beijing China 	} s1;
2549a5557fdSlucy wang - Sun Microsystems - Beijing China 	/* will be union of all the different args for rules */
2559a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 data;
2569a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_rx_rule_arg_t;
2579a5557fdSlucy wang - Sun Microsystems - Beijing China 
2589a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_rx_rule_s {
2599a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 id;
2609a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 active;
2619a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_arg_t arg;
2629a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_type_t type;
2639a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_rx_rule_t;
2649a5557fdSlucy wang - Sun Microsystems - Beijing China 
2659a5557fdSlucy wang - Sun Microsystems - Beijing China /* MSG - REQUIRES TX CONTEXT */
2669a5557fdSlucy wang - Sun Microsystems - Beijing China 
2679a5557fdSlucy wang - Sun Microsystems - Beijing China /*
2689a5557fdSlucy wang - Sun Microsystems - Beijing China  * The rules can be added/deleted from both the
2699a5557fdSlucy wang - Sun Microsystems - Beijing China  *  host and card sides so rq/rsp are similar.
2709a5557fdSlucy wang - Sun Microsystems - Beijing China  */
2719a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostmsg_rx_rule_s {
2729a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_cmd_t cmd;
2739a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_t rule;
2749a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostmsg_rx_rule_t;
2759a5557fdSlucy wang - Sun Microsystems - Beijing China 
2769a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardmsg_rx_rule_s {
2779a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rcode_t rcode;
2789a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_cmd_t cmd;
2799a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_rx_rule_t rule;
2809a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardmsg_rx_rule_t;
2819a5557fdSlucy wang - Sun Microsystems - Beijing China 
2829a5557fdSlucy wang - Sun Microsystems - Beijing China 
2839a5557fdSlucy wang - Sun Microsystems - Beijing China /*
2849a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Common to Rx/Tx contexts
2859a5557fdSlucy wang - Sun Microsystems - Beijing China  */
2869a5557fdSlucy wang - Sun Microsystems - Beijing China 
2879a5557fdSlucy wang - Sun Microsystems - Beijing China /*
2889a5557fdSlucy wang - Sun Microsystems - Beijing China  * Context states
2899a5557fdSlucy wang - Sun Microsystems - Beijing China  */
2909a5557fdSlucy wang - Sun Microsystems - Beijing China 
2919a5557fdSlucy wang - Sun Microsystems - Beijing China typedef U32 nx_host_ctx_state_t;
2929a5557fdSlucy wang - Sun Microsystems - Beijing China 
2939a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_FREED		0 /* Invalid state */
2949a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_ALLOCATED	1 /* Not committed */
2959a5557fdSlucy wang - Sun Microsystems - Beijing China /* The following states imply FW is aware of context */
2969a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_ACTIVE	2
2979a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_DISABLED	3
2989a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_QUIESCED	4
2999a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_CTX_STATE_MAX		5
3009a5557fdSlucy wang - Sun Microsystems - Beijing China 
3019a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3029a5557fdSlucy wang - Sun Microsystems - Beijing China  * Interrupt mask crb use must be set identically on the Tx
3039a5557fdSlucy wang - Sun Microsystems - Beijing China  * and Rx context configs across a pci function
3049a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3059a5557fdSlucy wang - Sun Microsystems - Beijing China 
3069a5557fdSlucy wang - Sun Microsystems - Beijing China /* Rx and Tx have unique interrupt/crb */
3079a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_INT_CRB_MODE_UNIQUE		0
3089a5557fdSlucy wang - Sun Microsystems - Beijing China /* Rx and Tx share a common interrupt/crb */
3099a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_INT_CRB_MODE_SHARED		1	/* <= LEGACY */
3109a5557fdSlucy wang - Sun Microsystems - Beijing China /* Rx does not use a crb */
3119a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_INT_CRB_MODE_NORX		2
3129a5557fdSlucy wang - Sun Microsystems - Beijing China /* Tx does not use a crb */
3139a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_INT_CRB_MODE_NOTX		3
3149a5557fdSlucy wang - Sun Microsystems - Beijing China /* Neither Rx nor Tx use a crb */
3159a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_INT_CRB_MODE_NORXTX		4
3169a5557fdSlucy wang - Sun Microsystems - Beijing China 
3179a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3189a5557fdSlucy wang - Sun Microsystems - Beijing China  * Destroy Rx/Tx
3199a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3209a5557fdSlucy wang - Sun Microsystems - Beijing China 
3219a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_DESTROY_CTX_RESET			0
3229a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_DESTROY_CTX_D3_RESET			1
3239a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_DESTROY_CTX_MAX				2
3249a5557fdSlucy wang - Sun Microsystems - Beijing China 
3259a5557fdSlucy wang - Sun Microsystems - Beijing China 
3269a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3279a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Tx
3289a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3299a5557fdSlucy wang - Sun Microsystems - Beijing China 
3309a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3319a5557fdSlucy wang - Sun Microsystems - Beijing China  * Components of the host-request for Tx context creation.
3329a5557fdSlucy wang - Sun Microsystems - Beijing China  * CRB - DOES NOT REQUIRE Rx/TX CONTEXT
3339a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3349a5557fdSlucy wang - Sun Microsystems - Beijing China 
3359a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_cds_ring_s {
3369a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_phys_addr;	/* Ring base addr */
3379a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 ring_size;		/* Ring entries */
3389a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 rsvd;		/* Padding */
3399a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_cds_ring_t;
3409a5557fdSlucy wang - Sun Microsystems - Beijing China 
3419a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_tx_ctx_s {
3429a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_rsp_dma_addr;	/* Response dma'd here */
3439a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 cmd_cons_dma_addr;	/*  */
3449a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 dummy_dma_addr;	/*  */
3459a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 capabilities[4];	/* Flag bit vector */
3469a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_int_crb_mode;	/* Interrupt crb usage */
3479a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 rsvd1;		/* Padding */
3489a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 rsvd2;		/* Padding */
3499a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 interrupt_ctl;
3509a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 msi_index;
3519a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 rsvd3;		/* Padding */
3529a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_hostrq_cds_ring_t cds_ring;	/* Desc of cds ring */
3539a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  reserved[128];	/* future expansion */
3549a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_tx_ctx_t;
3559a5557fdSlucy wang - Sun Microsystems - Beijing China 
3569a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardrsp_cds_ring_s {
3579a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_producer_crb;	/* Crb to use */
3589a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 interrupt_crb;	/* Crb to use */
3599a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardrsp_cds_ring_t;
3609a5557fdSlucy wang - Sun Microsystems - Beijing China 
3619a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardrsp_tx_ctx_s {
3629a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_ctx_state;	/* Starting state */
3639a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 context_id;		/* Handle for context */
3649a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  phys_port;		/* Physical id of port */
3659a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  virt_port;		/* Virtual/Logical id of port */
3669a5557fdSlucy wang - Sun Microsystems - Beijing China 	nx_cardrsp_cds_ring_t cds_ring;	/* Card cds settings */
3679a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  reserved[128];	/* future expansion */
3689a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardrsp_tx_ctx_t;
3699a5557fdSlucy wang - Sun Microsystems - Beijing China 
3709a5557fdSlucy wang - Sun Microsystems - Beijing China #define	SIZEOF_HOSTRQ_TX(HOSTRQ_TX) 			\
3719a5557fdSlucy wang - Sun Microsystems - Beijing China 		(sizeof (HOSTRQ_TX))
3729a5557fdSlucy wang - Sun Microsystems - Beijing China 
3739a5557fdSlucy wang - Sun Microsystems - Beijing China #define	SIZEOF_CARDRSP_TX(CARDRSP_TX) 			\
3749a5557fdSlucy wang - Sun Microsystems - Beijing China 		(sizeof (CARDRSP_TX))
3759a5557fdSlucy wang - Sun Microsystems - Beijing China 
3769a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3779a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Rx
3789a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3799a5557fdSlucy wang - Sun Microsystems - Beijing China 
3809a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3819a5557fdSlucy wang - Sun Microsystems - Beijing China  * RDS ring mapping to producer crbs
3829a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3839a5557fdSlucy wang - Sun Microsystems - Beijing China 
3849a5557fdSlucy wang - Sun Microsystems - Beijing China /* Each ring has a unique crb */
3859a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_RDS_CRB_MODE_UNIQUE    0	/* <= LEGACY */
3869a5557fdSlucy wang - Sun Microsystems - Beijing China 
3879a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3889a5557fdSlucy wang - Sun Microsystems - Beijing China  * All configured RDS Rings share common crb:
3899a5557fdSlucy wang - Sun Microsystems - Beijing China  *		1 Ring  - same as unique
3909a5557fdSlucy wang - Sun Microsystems - Beijing China  *		2 Rings - 16, 16
3919a5557fdSlucy wang - Sun Microsystems - Beijing China  *		3 Rings - 10, 10, 10
3929a5557fdSlucy wang - Sun Microsystems - Beijing China  */
3939a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_RDS_CRB_MODE_SHARED    1
3949a5557fdSlucy wang - Sun Microsystems - Beijing China 
3959a5557fdSlucy wang - Sun Microsystems - Beijing China /*
3969a5557fdSlucy wang - Sun Microsystems - Beijing China  * Bit usage is specified per-ring using the
3979a5557fdSlucy wang - Sun Microsystems - Beijing China  * ring's size. Sum of bit lengths must be <= 32.
3989a5557fdSlucy wang - Sun Microsystems - Beijing China  * Packing is [Ring N] ... [Ring 1][Ring 0]
3999a5557fdSlucy wang - Sun Microsystems - Beijing China  */
4009a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_RDS_CRB_MODE_CUSTOM		2
4019a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_HOST_RDS_CRB_MODE_MAX		3
4029a5557fdSlucy wang - Sun Microsystems - Beijing China 
4039a5557fdSlucy wang - Sun Microsystems - Beijing China 
4049a5557fdSlucy wang - Sun Microsystems - Beijing China /*
4059a5557fdSlucy wang - Sun Microsystems - Beijing China  * RDS Ting Types
4069a5557fdSlucy wang - Sun Microsystems - Beijing China  */
4079a5557fdSlucy wang - Sun Microsystems - Beijing China 
4089a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RDS_RING_TYPE_NORMAL		0
4099a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RDS_RING_TYPE_JUMBO		1
4109a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RDS_RING_TYPE_LRO		2
4119a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_RDS_RING_TYPE_MAX		3
4129a5557fdSlucy wang - Sun Microsystems - Beijing China 
4139a5557fdSlucy wang - Sun Microsystems - Beijing China /*
4149a5557fdSlucy wang - Sun Microsystems - Beijing China  * Components of the host-request for Rx context creation.
4159a5557fdSlucy wang - Sun Microsystems - Beijing China  * CRB - DOES NOT REQUIRE Rx/TX CONTEXT
4169a5557fdSlucy wang - Sun Microsystems - Beijing China  */
4179a5557fdSlucy wang - Sun Microsystems - Beijing China 
4189a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_sds_ring_s {
4199a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_phys_addr;	/* Ring base addr */
4209a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 ring_size;		/* Ring entries */
4219a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 msi_index;
4229a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 rsvd;		/* Padding */
4239a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_sds_ring_t;
4249a5557fdSlucy wang - Sun Microsystems - Beijing China 
4259a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_rds_ring_s {
4269a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_phys_addr;	/* Ring base addr */
4279a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 buff_size;		/* Packet buffer size */
4289a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 ring_size;		/* Ring entries */
4299a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 ring_kind;		/* Class of ring */
4309a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_rds_ring_t;
4319a5557fdSlucy wang - Sun Microsystems - Beijing China 
4329a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_rx_ctx_s {
4339a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_rsp_dma_addr;	/* Response dma'd here */
4349a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 capabilities[4];	/* Flag bit vector */
4359a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_int_crb_mode;	/* Interrupt crb usage */
4369a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_rds_crb_mode;	/* RDS crb usage */
437*93833965Sjing xiong ERI-SUN 	/* These ring offsets are relative to end of structure */
4389a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 rds_ring_offset;	/* Offset to RDS config */
4399a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 sds_ring_offset;	/* Offset to SDS config */
4409a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 num_rds_rings;	/* Count of RDS rings */
4419a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 num_sds_rings;	/* Count of SDS rings */
4429a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 rsvd1;		/* Padding */
4439a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 rsvd2;		/* Padding */
4449a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  reserved[128]; 	/* reserve space for future expansion */
4459a5557fdSlucy wang - Sun Microsystems - Beijing China 	/*
4469a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * MUST BE 64-bit aligned.
4479a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * The following is packed:
4489a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * - N hostrq_rds_rings
4499a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * - N hostrq_sds_rings
4509a5557fdSlucy wang - Sun Microsystems - Beijing China 	 */
4519a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_rx_ctx_t;
4529a5557fdSlucy wang - Sun Microsystems - Beijing China 
4539a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardrsp_rds_ring_s {
4549a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_producer_crb;	/* Crb to use */
4559a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 rsvd1;		/* Padding */
4569a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardrsp_rds_ring_t;
4579a5557fdSlucy wang - Sun Microsystems - Beijing China 
4589a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardrsp_sds_ring_s {
4599a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_consumer_crb;	/* Crb to use */
4609a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 interrupt_crb;	/* Crb to use */
4619a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardrsp_sds_ring_t;
4629a5557fdSlucy wang - Sun Microsystems - Beijing China 
4639a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_cardrsp_rx_ctx_s {
464*93833965Sjing xiong ERI-SUN 	/* These ring offsets are relative to end of structure */
4659a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 rds_ring_offset;	/* Offset to RDS config */
4669a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 sds_ring_offset;	/* Offset to SDS config */
4679a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_ctx_state;	/* Starting State */
4689a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 num_fn_per_port;	/* How many PCI fn share the port */
4699a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 num_rds_rings;	/* Count of RDS rings */
4709a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 num_sds_rings;	/* Count of SDS rings */
4719a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 context_id;		/* Handle for context */
4729a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  phys_port;		/* Physical id of port */
4739a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  virt_port;		/* Virtual/Logical id of port */
4749a5557fdSlucy wang - Sun Microsystems - Beijing China 	U8  reserved[128];	/* save space for future expansion */
4759a5557fdSlucy wang - Sun Microsystems - Beijing China 	/*
4769a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * MUST BE 64-bit aligned.
4779a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * The following is packed:
4789a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * - N cardrsp_rds_rings
4799a5557fdSlucy wang - Sun Microsystems - Beijing China 	 * - N cardrs_sds_rings
4809a5557fdSlucy wang - Sun Microsystems - Beijing China 	 */
4819a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_cardrsp_rx_ctx_t;
4829a5557fdSlucy wang - Sun Microsystems - Beijing China 
4839a5557fdSlucy wang - Sun Microsystems - Beijing China #define	SIZEOF_HOSTRQ_RX(HOSTRQ_RX, rds_rings, sds_rings)	\
4849a5557fdSlucy wang - Sun Microsystems - Beijing China 	(sizeof (HOSTRQ_RX) + 					\
4859a5557fdSlucy wang - Sun Microsystems - Beijing China 	(rds_rings)*(sizeof (nx_hostrq_rds_ring_t)) +		\
4869a5557fdSlucy wang - Sun Microsystems - Beijing China 	    (sds_rings)*(sizeof (nx_hostrq_sds_ring_t)))
4879a5557fdSlucy wang - Sun Microsystems - Beijing China 
4889a5557fdSlucy wang - Sun Microsystems - Beijing China #define	SIZEOF_CARDRSP_RX(CARDRSP_RX, rds_rings, sds_rings) 	\
4899a5557fdSlucy wang - Sun Microsystems - Beijing China 	(sizeof (CARDRSP_RX) + 					\
4909a5557fdSlucy wang - Sun Microsystems - Beijing China 	(rds_rings)*(sizeof (nx_cardrsp_rds_ring_t)) + 		\
4919a5557fdSlucy wang - Sun Microsystems - Beijing China 	    (sds_rings)*(sizeof (nx_cardrsp_sds_ring_t)))
4929a5557fdSlucy wang - Sun Microsystems - Beijing China 
4939a5557fdSlucy wang - Sun Microsystems - Beijing China 
4949a5557fdSlucy wang - Sun Microsystems - Beijing China /*
4959a5557fdSlucy wang - Sun Microsystems - Beijing China  *        Statistics
4969a5557fdSlucy wang - Sun Microsystems - Beijing China  */
4979a5557fdSlucy wang - Sun Microsystems - Beijing China 
4989a5557fdSlucy wang - Sun Microsystems - Beijing China /*
4999a5557fdSlucy wang - Sun Microsystems - Beijing China  * The model of statistics update to use
5009a5557fdSlucy wang - Sun Microsystems - Beijing China  */
5019a5557fdSlucy wang - Sun Microsystems - Beijing China 
5029a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_MODE_INVALID		0
5039a5557fdSlucy wang - Sun Microsystems - Beijing China 
5049a5557fdSlucy wang - Sun Microsystems - Beijing China /*
5059a5557fdSlucy wang - Sun Microsystems - Beijing China  * Permanent setup; Updates are only sent on explicit request
5069a5557fdSlucy wang - Sun Microsystems - Beijing China  * NX_CDRP_CMD_GET_STATISTICS)
5079a5557fdSlucy wang - Sun Microsystems - Beijing China  */
5089a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_MODE_PULL			1
5099a5557fdSlucy wang - Sun Microsystems - Beijing China 
5109a5557fdSlucy wang - Sun Microsystems - Beijing China /*
5119a5557fdSlucy wang - Sun Microsystems - Beijing China  * Permanent setup; Updates are sent automatically and on
5129a5557fdSlucy wang - Sun Microsystems - Beijing China  * explicit request (NX_CDRP_CMD_GET_STATISTICS)
5139a5557fdSlucy wang - Sun Microsystems - Beijing China  */
5149a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_MODE_PUSH			2
5159a5557fdSlucy wang - Sun Microsystems - Beijing China 
5169a5557fdSlucy wang - Sun Microsystems - Beijing China /* One time stat update. */
5179a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_MODE_SINGLE_SHOT	3
5189a5557fdSlucy wang - Sun Microsystems - Beijing China 
5199a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_MODE_MAX			4
5209a5557fdSlucy wang - Sun Microsystems - Beijing China 
5219a5557fdSlucy wang - Sun Microsystems - Beijing China /*
5229a5557fdSlucy wang - Sun Microsystems - Beijing China  * What set of stats
5239a5557fdSlucy wang - Sun Microsystems - Beijing China  */
5249a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_INVALID		0
5259a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_NIC_RX_CORE	1
5269a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_NIC_TX_CORE	2
5279a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_NIC_RX_ALL	3
5289a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_NIC_TX_ALL	4
5299a5557fdSlucy wang - Sun Microsystems - Beijing China #define	NX_STATISTICS_TYPE_MAX			5
5309a5557fdSlucy wang - Sun Microsystems - Beijing China 
5319a5557fdSlucy wang - Sun Microsystems - Beijing China 
5329a5557fdSlucy wang - Sun Microsystems - Beijing China /*
5339a5557fdSlucy wang - Sun Microsystems - Beijing China  * Request to setup statistics gathering.
5349a5557fdSlucy wang - Sun Microsystems - Beijing China  * CRB - DOES NOT REQUIRE Rx/TX CONTEXT
5359a5557fdSlucy wang - Sun Microsystems - Beijing China  */
5369a5557fdSlucy wang - Sun Microsystems - Beijing China 
5379a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct nx_hostrq_stat_setup_s {
5389a5557fdSlucy wang - Sun Microsystems - Beijing China 	U64 host_stat_buffer;	/* Where to dma stats */
5399a5557fdSlucy wang - Sun Microsystems - Beijing China 	U32 host_stat_size;	/* Size of stat buffer */
5409a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 context_id;		/* Which context */
5419a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 stat_type;		/* What class of stats */
5429a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 stat_mode;		/* When to update */
5439a5557fdSlucy wang - Sun Microsystems - Beijing China 	U16 stat_interval;	/* Frequency of update */
5449a5557fdSlucy wang - Sun Microsystems - Beijing China } nx_hostrq_stat_setup_t;
5459a5557fdSlucy wang - Sun Microsystems - Beijing China 
546*93833965Sjing xiong ERI-SUN #ifdef __cplusplus
547*93833965Sjing xiong ERI-SUN }
548*93833965Sjing xiong ERI-SUN #endif
5499a5557fdSlucy wang - Sun Microsystems - Beijing China 
5509a5557fdSlucy wang - Sun Microsystems - Beijing China #endif /* _NXHAL_NIC_INTERFACE_H_ */
551