182527734SSukumar Swaminathan /*
282527734SSukumar Swaminathan  * CDDL HEADER START
382527734SSukumar Swaminathan  *
482527734SSukumar Swaminathan  * The contents of this file are subject to the terms of the
582527734SSukumar Swaminathan  * Common Development and Distribution License (the "License").
682527734SSukumar Swaminathan  * You may not use this file except in compliance with the License.
782527734SSukumar Swaminathan  *
8*8f23e9faSHans Rosenfeld  * You can obtain a copy of the license at
9*8f23e9faSHans Rosenfeld  * http://www.opensource.org/licenses/cddl1.txt.
1082527734SSukumar Swaminathan  * See the License for the specific language governing permissions
1182527734SSukumar Swaminathan  * and limitations under the License.
1282527734SSukumar Swaminathan  *
1382527734SSukumar Swaminathan  * When distributing Covered Code, include this CDDL HEADER in each
1482527734SSukumar Swaminathan  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1582527734SSukumar Swaminathan  * If applicable, add the following below this CDDL HEADER, with the
1682527734SSukumar Swaminathan  * fields enclosed by brackets "[]" replaced with your own identifying
1782527734SSukumar Swaminathan  * information: Portions Copyright [yyyy] [name of copyright owner]
1882527734SSukumar Swaminathan  *
1982527734SSukumar Swaminathan  * CDDL HEADER END
2082527734SSukumar Swaminathan  */
2182527734SSukumar Swaminathan 
2282527734SSukumar Swaminathan /*
23*8f23e9faSHans Rosenfeld  * Copyright (c) 2004-2012 Emulex. All rights reserved.
2482527734SSukumar Swaminathan  * Use is subject to license terms.
2582527734SSukumar Swaminathan  */
2682527734SSukumar Swaminathan 
2782527734SSukumar Swaminathan #ifndef _EMLXS_MBOX_H
2882527734SSukumar Swaminathan #define	_EMLXS_MBOX_H
2982527734SSukumar Swaminathan 
3082527734SSukumar Swaminathan #ifdef	__cplusplus
3182527734SSukumar Swaminathan extern "C" {
3282527734SSukumar Swaminathan #endif
3382527734SSukumar Swaminathan 
3482527734SSukumar Swaminathan /* SLI 2/3 Mailbox defines */
3582527734SSukumar Swaminathan 
3682527734SSukumar Swaminathan #define	MBOX_SIZE			256
3782527734SSukumar Swaminathan #define	MBOX_EXTENSION_OFFSET		MBOX_SIZE
3882527734SSukumar Swaminathan 
3982527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT
4082527734SSukumar Swaminathan #define	MBOX_EXTENSION_SIZE		1024
4182527734SSukumar Swaminathan #else
4282527734SSukumar Swaminathan #define	MBOX_EXTENSION_SIZE		0
4382527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */
4482527734SSukumar Swaminathan 
4582527734SSukumar Swaminathan 
4682527734SSukumar Swaminathan 
4782527734SSukumar Swaminathan /* ==== Mailbox Commands ==== */
4882527734SSukumar Swaminathan #define	MBX_SHUTDOWN			0x00	/* terminate testing */
4982527734SSukumar Swaminathan #define	MBX_LOAD_SM			0x01
5082527734SSukumar Swaminathan #define	MBX_READ_NV			0x02
5182527734SSukumar Swaminathan #define	MBX_WRITE_NV			0x03
5282527734SSukumar Swaminathan #define	MBX_RUN_BIU_DIAG		0x04
5382527734SSukumar Swaminathan #define	MBX_INIT_LINK			0x05
5482527734SSukumar Swaminathan #define	MBX_DOWN_LINK			0x06
5582527734SSukumar Swaminathan #define	MBX_CONFIG_LINK			0x07
5682527734SSukumar Swaminathan #define	MBX_PART_SLIM			0x08
5782527734SSukumar Swaminathan #define	MBX_CONFIG_RING			0x09
5882527734SSukumar Swaminathan #define	MBX_RESET_RING			0x0A
5982527734SSukumar Swaminathan #define	MBX_READ_CONFIG			0x0B
6082527734SSukumar Swaminathan #define	MBX_READ_RCONFIG		0x0C
6182527734SSukumar Swaminathan #define	MBX_READ_SPARM			0x0D
6282527734SSukumar Swaminathan #define	MBX_READ_STATUS			0x0E
6382527734SSukumar Swaminathan #define	MBX_READ_RPI			0x0F
6482527734SSukumar Swaminathan #define	MBX_READ_XRI			0x10
6582527734SSukumar Swaminathan #define	MBX_READ_REV			0x11
6682527734SSukumar Swaminathan #define	MBX_READ_LNK_STAT		0x12
6782527734SSukumar Swaminathan #define	MBX_REG_LOGIN			0x13
6882527734SSukumar Swaminathan #define	MBX_UNREG_LOGIN			0x14  /* SLI2/3 */
6982527734SSukumar Swaminathan #define	MBX_UNREG_RPI			0x14  /* SLI4 */
7082527734SSukumar Swaminathan #define	MBX_READ_LA			0x15
7182527734SSukumar Swaminathan #define	MBX_CLEAR_LA			0x16
7282527734SSukumar Swaminathan #define	MBX_DUMP_MEMORY			0x17
7382527734SSukumar Swaminathan #define	MBX_DUMP_CONTEXT		0x18
7482527734SSukumar Swaminathan #define	MBX_RUN_DIAGS			0x19
7582527734SSukumar Swaminathan #define	MBX_RESTART			0x1A
7682527734SSukumar Swaminathan #define	MBX_UPDATE_CFG			0x1B
7782527734SSukumar Swaminathan #define	MBX_DOWN_LOAD			0x1C
7882527734SSukumar Swaminathan #define	MBX_DEL_LD_ENTRY		0x1D
7982527734SSukumar Swaminathan #define	MBX_RUN_PROGRAM			0x1E
8082527734SSukumar Swaminathan #define	MBX_SET_MASK			0x20
8182527734SSukumar Swaminathan #define	MBX_SET_VARIABLE		0x21
8282527734SSukumar Swaminathan #define	MBX_UNREG_D_ID			0x23
8382527734SSukumar Swaminathan #define	MBX_KILL_BOARD			0x24
8482527734SSukumar Swaminathan #define	MBX_CONFIG_FARP			0x25
8582527734SSukumar Swaminathan #define	MBX_BEACON			0x2A
8682527734SSukumar Swaminathan #define	MBX_READ_VPI			0x2B
8782527734SSukumar Swaminathan #define	MBX_CONFIG_MSIX			0x30
8882527734SSukumar Swaminathan #define	MBX_HEARTBEAT			0x31
8982527734SSukumar Swaminathan #define	MBX_WRITE_VPARMS		0x32
9082527734SSukumar Swaminathan #define	MBX_ASYNC_EVENT			0x33
9182527734SSukumar Swaminathan 
9282527734SSukumar Swaminathan #define	MBX_READ_EVENT_LOG_STATUS	0x37
9382527734SSukumar Swaminathan #define	MBX_READ_EVENT_LOG		0x38
9482527734SSukumar Swaminathan #define	MBX_WRITE_EVENT_LOG		0x39
9582527734SSukumar Swaminathan #define	MBX_NV_LOG			0x3A
9682527734SSukumar Swaminathan #define	MBX_PORT_CAPABILITIES		0x3B
9782527734SSukumar Swaminathan #define	MBX_IOV_CONTROL			0x3C
9882527734SSukumar Swaminathan #define	MBX_IOV_MBX			0x3D
9982527734SSukumar Swaminathan 
10082527734SSukumar Swaminathan 
10182527734SSukumar Swaminathan #define	MBX_CONFIG_HBQ			0x7C  /* SLI3 */
10282527734SSukumar Swaminathan #define	MBX_LOAD_AREA			0x81
10382527734SSukumar Swaminathan #define	MBX_RUN_BIU_DIAG64		0x84
10482527734SSukumar Swaminathan #define	MBX_GET_DEBUG			0x86
10582527734SSukumar Swaminathan #define	MBX_CONFIG_PORT			0x88
10682527734SSukumar Swaminathan #define	MBX_READ_SPARM64		0x8D
10782527734SSukumar Swaminathan #define	MBX_READ_RPI64			0x8F
10882527734SSukumar Swaminathan #define	MBX_CONFIG_MSI			0x90
109*8f23e9faSHans Rosenfeld #define	MBX_REG_LOGIN64			0x93 /* SLI2/3 */
110*8f23e9faSHans Rosenfeld #define	MBX_REG_RPI			0x93 /* SLI4 */
111*8f23e9faSHans Rosenfeld #define	MBX_READ_LA64			0x95 /* SLI2/3 */
112*8f23e9faSHans Rosenfeld #define	MBX_READ_TOPOLOGY		0x95 /* SLI4 */
113*8f23e9faSHans Rosenfeld #define	MBX_REG_VPI			0x96 /* NPIV */
114*8f23e9faSHans Rosenfeld #define	MBX_UNREG_VPI			0x97 /* NPIV */
11582527734SSukumar Swaminathan #define	MBX_FLASH_WR_ULA		0x98
11682527734SSukumar Swaminathan #define	MBX_SET_DEBUG			0x99
11782527734SSukumar Swaminathan #define	MBX_SLI_CONFIG			0x9B
11882527734SSukumar Swaminathan #define	MBX_LOAD_EXP_ROM		0x9C
11982527734SSukumar Swaminathan #define	MBX_REQUEST_FEATURES		0x9D
12082527734SSukumar Swaminathan #define	MBX_RESUME_RPI			0x9E
12182527734SSukumar Swaminathan #define	MBX_REG_VFI			0x9F
12282527734SSukumar Swaminathan #define	MBX_REG_FCFI			0xA0
12382527734SSukumar Swaminathan #define	MBX_UNREG_VFI			0xA1
12482527734SSukumar Swaminathan #define	MBX_UNREG_FCFI			0xA2
12582527734SSukumar Swaminathan #define	MBX_INIT_VFI			0xA3
12682527734SSukumar Swaminathan #define	MBX_INIT_VPI			0xA4
12782527734SSukumar Swaminathan #define	MBX_ACCESS_VDATA		0xA5
12882527734SSukumar Swaminathan #define	MBX_MAX_CMDS			0xA6
12982527734SSukumar Swaminathan 
13082527734SSukumar Swaminathan 
13182527734SSukumar Swaminathan /*
13282527734SSukumar Swaminathan  * Define Status
13382527734SSukumar Swaminathan  */
13482527734SSukumar Swaminathan #define	MBX_SUCCESS			0x0
13582527734SSukumar Swaminathan #define	MBX_FAILURE			0x1
13682527734SSukumar Swaminathan #define	MBXERR_NUM_IOCBS		0x2
13782527734SSukumar Swaminathan #define	MBXERR_IOCBS_EXCEEDED		0x3
13882527734SSukumar Swaminathan #define	MBXERR_BAD_RING_NUMBER		0x4
13982527734SSukumar Swaminathan #define	MBXERR_MASK_ENTRIES_RANGE	0x5
14082527734SSukumar Swaminathan #define	MBXERR_MASKS_EXCEEDED		0x6
14182527734SSukumar Swaminathan #define	MBXERR_BAD_PROFILE		0x7
14282527734SSukumar Swaminathan #define	MBXERR_BAD_DEF_CLASS		0x8
14382527734SSukumar Swaminathan #define	MBXERR_BAD_MAX_RESPONDER	0x9
14482527734SSukumar Swaminathan #define	MBXERR_BAD_MAX_ORIGINATOR	0xA
14582527734SSukumar Swaminathan #define	MBXERR_RPI_REGISTERED		0xB
14682527734SSukumar Swaminathan #define	MBXERR_RPI_FULL			0xC
14782527734SSukumar Swaminathan #define	MBXERR_NO_RESOURCES		0xD
14882527734SSukumar Swaminathan #define	MBXERR_BAD_RCV_LENGTH		0xE
14982527734SSukumar Swaminathan #define	MBXERR_DMA_ERROR		0xF
15082527734SSukumar Swaminathan #define	MBXERR_NOT_SUPPORTED		0x10
15182527734SSukumar Swaminathan #define	MBXERR_UNSUPPORTED_FEATURE	0x11
15282527734SSukumar Swaminathan #define	MBXERR_UNKNOWN_COMMAND		0x12
153*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_IP_BIT		0x13
154*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_PCB_ALIGN		0x14
155*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_ID		0x15
156*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_STATE		0x16
157*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_MASK_NUM		0x17
158*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_MASK_SUBSET	0x18
159*8f23e9faSHans Rosenfeld #define	MBXERR_HBQ_CREATE_FAIL		0x19
160*8f23e9faSHans Rosenfeld #define	MBXERR_HBQ_EXISTING		0x1A
161*8f23e9faSHans Rosenfeld #define	MBXERR_HBQ_RSPRING_FULL		0x1B
162*8f23e9faSHans Rosenfeld #define	MBXERR_HBQ_DUP_MASK		0x1C
163*8f23e9faSHans Rosenfeld #define	MBXERR_HBQ_INVAL_GET_PTR	0x1D
164*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_SIZE		0x1E
165*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_HBQ_ORDER		0x1F
166*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_ID		0x20
167*8f23e9faSHans Rosenfeld 
168*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_VFI		0x30
169*8f23e9faSHans Rosenfeld 
170*8f23e9faSHans Rosenfeld #define	MBXERR_FLASH_WRITE_FAILED	0x100
171*8f23e9faSHans Rosenfeld 
172*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_LINKSPEED	0x500
173*8f23e9faSHans Rosenfeld 
174*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_REDIRECT		0x900
175*8f23e9faSHans Rosenfeld #define	MBXERR_RING_ALREADY_CONFIG	0x901
176*8f23e9faSHans Rosenfeld 
177*8f23e9faSHans Rosenfeld #define	MBXERR_RING_INACTIVE		0xA00
178*8f23e9faSHans Rosenfeld 
179*8f23e9faSHans Rosenfeld #define	MBXERR_RPI_INACTIVE		0xF00
180*8f23e9faSHans Rosenfeld 
181*8f23e9faSHans Rosenfeld #define	MBXERR_NO_ACTIVE_XRI		0x1100
182*8f23e9faSHans Rosenfeld #define	MBXERR_XRI_NOT_ACTIVE		0x1101
183*8f23e9faSHans Rosenfeld 
184*8f23e9faSHans Rosenfeld #define	MBXERR_RPI_INUSE		0x1400
185*8f23e9faSHans Rosenfeld 
186*8f23e9faSHans Rosenfeld #define	MBXERR_NO_LINK_ATTENTION	0x1500
187*8f23e9faSHans Rosenfeld 
188*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_SLI_MODE		0x8800
189*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_HOST_PTR		0x8801
190*8f23e9faSHans Rosenfeld #define	MBXERR_CANT_CFG_SLI_MODE	0x8802
191*8f23e9faSHans Rosenfeld #define	MBXERR_BAD_OVERLAY		0x8803
192*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_FEAT_REQ		0x8804
193*8f23e9faSHans Rosenfeld 
194*8f23e9faSHans Rosenfeld #define	MBXERR_CONFIG_CANT_COMPLETE	0x88FF
195*8f23e9faSHans Rosenfeld 
196*8f23e9faSHans Rosenfeld #define	MBXERR_DID_ALREADY_REGISTERED	0x9600
197*8f23e9faSHans Rosenfeld #define	MBXERR_DID_INCONSISTENT		0x9601
198*8f23e9faSHans Rosenfeld #define	MBXERR_VPI_TOO_LARGE		0x9603
199*8f23e9faSHans Rosenfeld 
200*8f23e9faSHans Rosenfeld #define	MBXERR_STILL_ASSOCIATED		0x9700
201*8f23e9faSHans Rosenfeld 
202*8f23e9faSHans Rosenfeld #define	MBXERR_INVALID_VF_STATE		0x9F00
203*8f23e9faSHans Rosenfeld #define	MBXERR_VFI_ALREADY_REGISTERED	0x9F02
204*8f23e9faSHans Rosenfeld #define	MBXERR_VFI_TOO_LARGE		0x9F03
205*8f23e9faSHans Rosenfeld 
206*8f23e9faSHans Rosenfeld #define	MBXERR_LOAD_FW_FAILED		0xFFFE
207*8f23e9faSHans Rosenfeld #define	MBXERR_FIND_FW_FAILED		0xFFFF
20882527734SSukumar Swaminathan 
20982527734SSukumar Swaminathan /* Driver special codes */
21082527734SSukumar Swaminathan #define	MBX_DRIVER_RESERVED		0xF9 /* Set to lowest drv status */
21182527734SSukumar Swaminathan #define	MBX_NONEMBED_ERROR		0xF9
21282527734SSukumar Swaminathan #define	MBX_OVERTEMP_ERROR		0xFA
21382527734SSukumar Swaminathan #define	MBX_HARDWARE_ERROR		0xFB
21482527734SSukumar Swaminathan #define	MBX_DRVR_ERROR			0xFC
21582527734SSukumar Swaminathan #define	MBX_BUSY			0xFD
21682527734SSukumar Swaminathan #define	MBX_TIMEOUT			0xFE
21782527734SSukumar Swaminathan #define	MBX_NOT_FINISHED		0xFF
21882527734SSukumar Swaminathan 
21982527734SSukumar Swaminathan /*
22082527734SSukumar Swaminathan  * flags for EMLXS_SLI_ISSUE_MBOX_CMD()
22182527734SSukumar Swaminathan  */
22282527734SSukumar Swaminathan #define	MBX_POLL	0x01	/* poll mailbox till command done, */
22382527734SSukumar Swaminathan 				/* then return */
22482527734SSukumar Swaminathan #define	MBX_SLEEP	0x02	/* sleep till mailbox intr cmpl */
22582527734SSukumar Swaminathan 				/* wakes thread up */
22682527734SSukumar Swaminathan #define	MBX_WAIT	0x03	/* wait for comand done, then return */
22782527734SSukumar Swaminathan #define	MBX_NOWAIT	0x04	/* issue command then return immediately */
22882527734SSukumar Swaminathan #define	MBX_BOOTSTRAP	0x80	/* issue a command on the bootstrap mbox */
22982527734SSukumar Swaminathan 
23082527734SSukumar Swaminathan 
23182527734SSukumar Swaminathan 
23282527734SSukumar Swaminathan /*
23382527734SSukumar Swaminathan  * Begin Structure Definitions for Mailbox Commands
23482527734SSukumar Swaminathan  */
23582527734SSukumar Swaminathan 
23682527734SSukumar Swaminathan typedef struct revcompat
23782527734SSukumar Swaminathan {
23882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
23982527734SSukumar Swaminathan 	uint32_t	ldflag:1;	/* Set in SRAM descriptor */
24082527734SSukumar Swaminathan 	uint32_t	ldcount:7;	/* For use by program load */
24182527734SSukumar Swaminathan 	uint32_t	kernel:4;	/* Kernel ID */
24282527734SSukumar Swaminathan 	uint32_t	kver:4;	/* Kernel compatibility version */
24382527734SSukumar Swaminathan 	uint32_t	SMver:4;	/* Sequence Manager version */
24482527734SSukumar Swaminathan 					/* 0 if none */
24582527734SSukumar Swaminathan 	uint32_t	ENDECver:4;	/* ENDEC+ version, 0 if none */
24682527734SSukumar Swaminathan 	uint32_t	BIUtype:4;	/* PCI = 0 */
24782527734SSukumar Swaminathan 	uint32_t	BIUver:4;	/* BIU version, 0 if none */
24882527734SSukumar Swaminathan #endif
24982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
25082527734SSukumar Swaminathan 	uint32_t	BIUver:4;	/* BIU version, 0 if none */
25182527734SSukumar Swaminathan 	uint32_t	BIUtype:4;	/* PCI = 0 */
25282527734SSukumar Swaminathan 	uint32_t	ENDECver:4;	/* ENDEC+ version, 0 if none */
25382527734SSukumar Swaminathan 	uint32_t	SMver:4;	/* Sequence Manager version */
25482527734SSukumar Swaminathan 					/* 0 if none */
25582527734SSukumar Swaminathan 	uint32_t	kver:4;	/* Kernel compatibility version */
25682527734SSukumar Swaminathan 	uint32_t	kernel:4;	/* Kernel ID */
25782527734SSukumar Swaminathan 	uint32_t	ldcount:7;	/* For use by program load */
25882527734SSukumar Swaminathan 	uint32_t	ldflag:1;	/* Set in SRAM descriptor */
25982527734SSukumar Swaminathan #endif
26082527734SSukumar Swaminathan } REVCOMPAT;
26182527734SSukumar Swaminathan 
26282527734SSukumar Swaminathan typedef struct id_word
26382527734SSukumar Swaminathan {
26482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
26582527734SSukumar Swaminathan 	uint8_t		Type;
26682527734SSukumar Swaminathan 	uint8_t		Id;
26782527734SSukumar Swaminathan 	uint8_t		Ver;
26882527734SSukumar Swaminathan 	uint8_t		Rev;
26982527734SSukumar Swaminathan #endif
27082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
27182527734SSukumar Swaminathan 	uint8_t		Rev;
27282527734SSukumar Swaminathan 	uint8_t		Ver;
27382527734SSukumar Swaminathan 	uint8_t		Id;
27482527734SSukumar Swaminathan 	uint8_t		Type;
27582527734SSukumar Swaminathan #endif
27682527734SSukumar Swaminathan 	union
27782527734SSukumar Swaminathan 	{
27882527734SSukumar Swaminathan 		REVCOMPAT	cp;
27982527734SSukumar Swaminathan 		uint32_t	revcomp;
28082527734SSukumar Swaminathan 	} un;
28182527734SSukumar Swaminathan } PROG_ID;
28282527734SSukumar Swaminathan 
28382527734SSukumar Swaminathan typedef struct
28482527734SSukumar Swaminathan {
28582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
28682527734SSukumar Swaminathan 	uint8_t		tval;
28782527734SSukumar Swaminathan 	uint8_t		tmask;
28882527734SSukumar Swaminathan 	uint8_t		rval;
28982527734SSukumar Swaminathan 	uint8_t		rmask;
29082527734SSukumar Swaminathan #endif
29182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
29282527734SSukumar Swaminathan 	uint8_t		rmask;
29382527734SSukumar Swaminathan 	uint8_t		rval;
29482527734SSukumar Swaminathan 	uint8_t		tmask;
29582527734SSukumar Swaminathan 	uint8_t		tval;
29682527734SSukumar Swaminathan #endif
29782527734SSukumar Swaminathan } RR_REG;
29882527734SSukumar Swaminathan 
29982527734SSukumar Swaminathan 
30082527734SSukumar Swaminathan /* Structure used for a HBQ entry */
30182527734SSukumar Swaminathan typedef struct
30282527734SSukumar Swaminathan {
30382527734SSukumar Swaminathan 	ULP_BDE64	bde;
30482527734SSukumar Swaminathan 	union UN_TAG
30582527734SSukumar Swaminathan 	{
30682527734SSukumar Swaminathan 		uint32_t	w;
30782527734SSukumar Swaminathan 		struct
30882527734SSukumar Swaminathan 		{
30982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
31082527734SSukumar Swaminathan 			uint32_t	HBQ_tag:4;
31182527734SSukumar Swaminathan 			uint32_t	HBQE_tag:28;
31282527734SSukumar Swaminathan #endif
31382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
31482527734SSukumar Swaminathan 			uint32_t	HBQE_tag:28;
31582527734SSukumar Swaminathan 			uint32_t	HBQ_tag:4;
31682527734SSukumar Swaminathan #endif
31782527734SSukumar Swaminathan 		} ext;
31882527734SSukumar Swaminathan 	} unt;
31982527734SSukumar Swaminathan } HBQE_t;
32082527734SSukumar Swaminathan 
32182527734SSukumar Swaminathan typedef struct
32282527734SSukumar Swaminathan {
32382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
32482527734SSukumar Swaminathan 	uint8_t		tmatch;
32582527734SSukumar Swaminathan 	uint8_t		tmask;
32682527734SSukumar Swaminathan 	uint8_t		rctlmatch;
32782527734SSukumar Swaminathan 	uint8_t		rctlmask;
32882527734SSukumar Swaminathan #endif
32982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
33082527734SSukumar Swaminathan 	uint8_t		rctlmask;
33182527734SSukumar Swaminathan 	uint8_t		rctlmatch;
33282527734SSukumar Swaminathan 	uint8_t		tmask;
33382527734SSukumar Swaminathan 	uint8_t		tmatch;
33482527734SSukumar Swaminathan #endif
33582527734SSukumar Swaminathan } HBQ_MASK;
33682527734SSukumar Swaminathan 
33782527734SSukumar Swaminathan #define	EMLXS_MAX_HBQ_BUFFERS	4096
33882527734SSukumar Swaminathan 
33982527734SSukumar Swaminathan typedef struct
34082527734SSukumar Swaminathan {
34182527734SSukumar Swaminathan 	uint32_t	HBQ_num_mask;		/* number of mask entries in */
34282527734SSukumar Swaminathan 						/* port array */
34382527734SSukumar Swaminathan 	uint32_t	HBQ_recvNotify;		/* Rcv buffer notification */
34482527734SSukumar Swaminathan 	uint32_t	HBQ_numEntries;		/* # of entries in HBQ */
34582527734SSukumar Swaminathan 	uint32_t	HBQ_headerLen;		/* 0 if not profile 4 or 5 */
34682527734SSukumar Swaminathan 	uint32_t	HBQ_logEntry;		/* Set to 1 if this HBQ used */
34782527734SSukumar Swaminathan 						/* for LogEntry */
34882527734SSukumar Swaminathan 	uint32_t	HBQ_profile;		/* Selection profile 0=all, */
34982527734SSukumar Swaminathan 						/* 7=logentry */
35082527734SSukumar Swaminathan 	uint32_t	HBQ_ringMask;		/* Binds HBQ to a ring e.g. */
35182527734SSukumar Swaminathan 						/* Ring0=b0001, ring2=b0100 */
35282527734SSukumar Swaminathan 	uint32_t	HBQ_id;			/* index of this hbq in ring */
35382527734SSukumar Swaminathan 						/* of HBQs[] */
35482527734SSukumar Swaminathan 	uint32_t	HBQ_PutIdx_next;	/* Index to next HBQ slot to */
35582527734SSukumar Swaminathan 						/* use */
35682527734SSukumar Swaminathan 	uint32_t	HBQ_PutIdx;		/* HBQ slot to use */
35782527734SSukumar Swaminathan 	uint32_t	HBQ_GetIdx;		/* Local copy of Get index */
35882527734SSukumar Swaminathan 						/* from Port */
35982527734SSukumar Swaminathan 	uint16_t	HBQ_PostBufCnt;		/* Current number of entries */
36082527734SSukumar Swaminathan 						/* in list */
36182527734SSukumar Swaminathan 	MATCHMAP	*HBQ_PostBufs[EMLXS_MAX_HBQ_BUFFERS];
36282527734SSukumar Swaminathan 	MATCHMAP	HBQ_host_buf;		/* HBQ host buffer for HBQEs */
36382527734SSukumar Swaminathan 	HBQ_MASK	HBQ_Masks[6];
36482527734SSukumar Swaminathan 
36582527734SSukumar Swaminathan 	union
36682527734SSukumar Swaminathan 	{
36782527734SSukumar Swaminathan 		uint32_t	allprofiles[12];
36882527734SSukumar Swaminathan 
36982527734SSukumar Swaminathan 		struct
37082527734SSukumar Swaminathan 		{
37182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
37282527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
37382527734SSukumar Swaminathan 			uint32_t	maxlen:16;
37482527734SSukumar Swaminathan #endif
37582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
37682527734SSukumar Swaminathan 			uint32_t	maxlen:16;
37782527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
37882527734SSukumar Swaminathan #endif
37982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
38082527734SSukumar Swaminathan 			uint32_t	rsvd1:28;
38182527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
38282527734SSukumar Swaminathan #endif
38382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
38482527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
38582527734SSukumar Swaminathan 			uint32_t	rsvd1:28;
38682527734SSukumar Swaminathan #endif
38782527734SSukumar Swaminathan 			uint32_t	rsvd[10];
38882527734SSukumar Swaminathan 		} profile2;
38982527734SSukumar Swaminathan 
39082527734SSukumar Swaminathan 		struct
39182527734SSukumar Swaminathan 		{
39282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
39382527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
39482527734SSukumar Swaminathan 			uint32_t	maxlen:16;
39582527734SSukumar Swaminathan #endif
39682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
39782527734SSukumar Swaminathan 			uint32_t	maxlen:16;
39882527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
39982527734SSukumar Swaminathan #endif
40082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
40182527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
40282527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
40382527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
40482527734SSukumar Swaminathan #endif
40582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
40682527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
40782527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
40882527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
40982527734SSukumar Swaminathan #endif
41082527734SSukumar Swaminathan 			uint32_t	cmdmatch[8];
41182527734SSukumar Swaminathan 
41282527734SSukumar Swaminathan 			uint32_t	rsvd[2];
41382527734SSukumar Swaminathan 		} profile3;
41482527734SSukumar Swaminathan 
41582527734SSukumar Swaminathan 		struct
41682527734SSukumar Swaminathan 		{
41782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
41882527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
41982527734SSukumar Swaminathan 			uint32_t	maxlen:16;
42082527734SSukumar Swaminathan #endif
42182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
42282527734SSukumar Swaminathan 			uint32_t	maxlen:16;
42382527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
42482527734SSukumar Swaminathan #endif
42582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
42682527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
42782527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
42882527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
42982527734SSukumar Swaminathan #endif
43082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
43182527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
43282527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
43382527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
43482527734SSukumar Swaminathan #endif
43582527734SSukumar Swaminathan 			uint32_t	cmdmatch[8];
43682527734SSukumar Swaminathan 
43782527734SSukumar Swaminathan 			uint32_t	rsvd[2];
43882527734SSukumar Swaminathan 		} profile5;
43982527734SSukumar Swaminathan 	} profiles;
44082527734SSukumar Swaminathan } HBQ_INIT_t;
44182527734SSukumar Swaminathan 
44282527734SSukumar Swaminathan 
44382527734SSukumar Swaminathan 
44482527734SSukumar Swaminathan /* Structure for MB Command LOAD_SM and DOWN_LOAD */
44582527734SSukumar Swaminathan 
44682527734SSukumar Swaminathan 
44782527734SSukumar Swaminathan typedef struct
44882527734SSukumar Swaminathan {
44982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
4506a573d82SSukumar Swaminathan 	uint32_t	rsvd2:24;
4516a573d82SSukumar Swaminathan 	uint32_t	keep:1;
45282527734SSukumar Swaminathan 	uint32_t	acknowledgment:1;
45382527734SSukumar Swaminathan 	uint32_t	version:1;
45482527734SSukumar Swaminathan 	uint32_t	erase_or_prog:1;
45582527734SSukumar Swaminathan 	uint32_t	update_flash:1;
45682527734SSukumar Swaminathan 	uint32_t	update_ram:1;
45782527734SSukumar Swaminathan 	uint32_t	method:1;
45882527734SSukumar Swaminathan 	uint32_t	load_cmplt:1;
45982527734SSukumar Swaminathan #endif
46082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
46182527734SSukumar Swaminathan 	uint32_t	load_cmplt:1;
46282527734SSukumar Swaminathan 	uint32_t	method:1;
46382527734SSukumar Swaminathan 	uint32_t	update_ram:1;
46482527734SSukumar Swaminathan 	uint32_t	update_flash:1;
46582527734SSukumar Swaminathan 	uint32_t	erase_or_prog:1;
46682527734SSukumar Swaminathan 	uint32_t	version:1;
46782527734SSukumar Swaminathan 	uint32_t	acknowledgment:1;
4686a573d82SSukumar Swaminathan 	uint32_t	keep:1;
4696a573d82SSukumar Swaminathan 	uint32_t	rsvd2:24;
47082527734SSukumar Swaminathan #endif
47182527734SSukumar Swaminathan 
47282527734SSukumar Swaminathan #define	DL_FROM_BDE	0	/* method */
47382527734SSukumar Swaminathan #define	DL_FROM_SLIM	1
47482527734SSukumar Swaminathan 
47582527734SSukumar Swaminathan #define	PROGRAM_FLASH	0	/* erase_or_prog */
47682527734SSukumar Swaminathan #define	ERASE_FLASH	1
47782527734SSukumar Swaminathan 
47882527734SSukumar Swaminathan 	uint32_t	dl_to_adr;
47982527734SSukumar Swaminathan 	uint32_t	dl_len;
48082527734SSukumar Swaminathan 	union
48182527734SSukumar Swaminathan 	{
48282527734SSukumar Swaminathan 		uint32_t	dl_from_slim_offset;
48382527734SSukumar Swaminathan 		ULP_BDE		dl_from_bde;
48482527734SSukumar Swaminathan 		ULP_BDE64	dl_from_bde64;
48582527734SSukumar Swaminathan 		PROG_ID		prog_id;
48682527734SSukumar Swaminathan 	} un;
48782527734SSukumar Swaminathan } LOAD_SM_VAR;
48882527734SSukumar Swaminathan 
48982527734SSukumar Swaminathan 
49082527734SSukumar Swaminathan /* Structure for MB Command READ_NVPARM (02) */
49182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
49282527734SSukumar Swaminathan 
49382527734SSukumar Swaminathan typedef struct
49482527734SSukumar Swaminathan {
49582527734SSukumar Swaminathan 	uint32_t	rsvd1[3];	/* Read as all one's */
49682527734SSukumar Swaminathan 	uint32_t	rsvd2;		/* Read as all zero's */
49782527734SSukumar Swaminathan 	uint32_t	portname[2];	/* N_PORT name */
49882527734SSukumar Swaminathan 	uint32_t	nodename[2];	/* NODE name */
49982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
50082527734SSukumar Swaminathan 	uint32_t	pref_DID:24;
50182527734SSukumar Swaminathan 	uint32_t	hardAL_PA:8;
50282527734SSukumar Swaminathan #endif
50382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
50482527734SSukumar Swaminathan 	uint32_t	hardAL_PA:8;
50582527734SSukumar Swaminathan 	uint32_t	pref_DID:24;
50682527734SSukumar Swaminathan #endif
50782527734SSukumar Swaminathan 	uint32_t	rsvd3[21];	/* Read as all one's */
50882527734SSukumar Swaminathan } READ_NV_VAR;
50982527734SSukumar Swaminathan 
51082527734SSukumar Swaminathan 
51182527734SSukumar Swaminathan /* Structure for MB Command WRITE_NVPARMS (03) */
51282527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
51382527734SSukumar Swaminathan 
51482527734SSukumar Swaminathan typedef struct
51582527734SSukumar Swaminathan {
51682527734SSukumar Swaminathan 	uint32_t	rsvd1[3];	/* Must be all one's */
51782527734SSukumar Swaminathan 	uint32_t	rsvd2;		/* Must be all zero's */
51882527734SSukumar Swaminathan 	uint32_t	portname[2];	/* N_PORT name */
51982527734SSukumar Swaminathan 	uint32_t	nodename[2];	/* NODE name */
52082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
52182527734SSukumar Swaminathan 	uint32_t	pref_DID:24;
52282527734SSukumar Swaminathan 	uint32_t	hardAL_PA:8;
52382527734SSukumar Swaminathan #endif
52482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
52582527734SSukumar Swaminathan 	uint32_t	hardAL_PA:8;
52682527734SSukumar Swaminathan 	uint32_t	pref_DID:24;
52782527734SSukumar Swaminathan #endif
52882527734SSukumar Swaminathan 	uint32_t	rsvd3[21];	/* Must be all one's */
52982527734SSukumar Swaminathan } WRITE_NV_VAR;
53082527734SSukumar Swaminathan 
53182527734SSukumar Swaminathan 
53282527734SSukumar Swaminathan /* Structure for MB Command RUN_BIU_DIAG64 (0x84) */
53382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
53482527734SSukumar Swaminathan 
53582527734SSukumar Swaminathan typedef struct
53682527734SSukumar Swaminathan {
53782527734SSukumar Swaminathan 	uint32_t	rsvd1;
53882527734SSukumar Swaminathan 	union
53982527734SSukumar Swaminathan 	{
54082527734SSukumar Swaminathan 		struct
54182527734SSukumar Swaminathan 		{
54282527734SSukumar Swaminathan 			ULP_BDE64	xmit_bde64;
54382527734SSukumar Swaminathan 			ULP_BDE64	rcv_bde64;
54482527734SSukumar Swaminathan 		} s2;
54582527734SSukumar Swaminathan 	} un;
54682527734SSukumar Swaminathan } BIU_DIAG_VAR;
54782527734SSukumar Swaminathan 
54882527734SSukumar Swaminathan 
54982527734SSukumar Swaminathan /* Structure for MB Command INIT_LINK (05) */
55082527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
55182527734SSukumar Swaminathan 
55282527734SSukumar Swaminathan typedef struct
55382527734SSukumar Swaminathan {
55482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
55582527734SSukumar Swaminathan 	uint32_t	rsvd1:24;
55682527734SSukumar Swaminathan 	uint32_t	lipsr_AL_PA:8;	/* AL_PA to issue Lip Selective */
55782527734SSukumar Swaminathan 					/* Reset to */
55882527734SSukumar Swaminathan #endif
55982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
56082527734SSukumar Swaminathan 	uint32_t	lipsr_AL_PA:8;	/* AL_PA to issue Lip Selective */
56182527734SSukumar Swaminathan 					/* Reset to */
56282527734SSukumar Swaminathan 	uint32_t	rsvd1:24;
56382527734SSukumar Swaminathan #endif
56482527734SSukumar Swaminathan 
56582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
56682527734SSukumar Swaminathan 	uint8_t		fabric_AL_PA;	/* If using a Fabric Assigned AL_PA */
56782527734SSukumar Swaminathan 	uint8_t		rsvd2;
56882527734SSukumar Swaminathan 	uint16_t	link_flags;
56982527734SSukumar Swaminathan #endif
57082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
57182527734SSukumar Swaminathan 	uint16_t	link_flags;
57282527734SSukumar Swaminathan 	uint8_t		rsvd2;
57382527734SSukumar Swaminathan 	uint8_t		fabric_AL_PA;	/* If using a Fabric Assigned AL_PA */
57482527734SSukumar Swaminathan #endif
57582527734SSukumar Swaminathan #define	FLAGS_LOCAL_LB			0x01	/* link_flags (=1) */
57682527734SSukumar Swaminathan 						/* ENDEC loopback */
57782527734SSukumar Swaminathan #define	FLAGS_TOPOLOGY_MODE_LOOP_PT	0x00	/* Attempt loop then pt-pt */
57882527734SSukumar Swaminathan #define	FLAGS_TOPOLOGY_MODE_PT_PT	0x02	/* Attempt pt-pt only */
57982527734SSukumar Swaminathan #define	FLAGS_TOPOLOGY_MODE_LOOP	0x04	/* Attempt loop only */
58082527734SSukumar Swaminathan #define	FLAGS_TOPOLOGY_MODE_PT_LOOP	0x06	/* Attempt pt-pt then loop */
58182527734SSukumar Swaminathan #define	FLAGS_LIRP_LILP			0x80	/* LIRP / LILP is disabled */
58282527734SSukumar Swaminathan 
58382527734SSukumar Swaminathan #define	FLAGS_TOPOLOGY_FAILOVER		0x0400	/* Bit 10 */
58482527734SSukumar Swaminathan #define	FLAGS_LINK_SPEED		0x0800	/* Bit 11 */
58582527734SSukumar Swaminathan #define	FLAGS_PREABORT_RETURN		0x4000	/* Bit 14 */
58682527734SSukumar Swaminathan 
58782527734SSukumar Swaminathan 	uint32_t	link_speed;	/* NEW_FEATURE */
58882527734SSukumar Swaminathan #define	LINK_SPEED_AUTO			0	/* Auto selection */
58982527734SSukumar Swaminathan #define	LINK_SPEED_1G			1	/* 1 Gigabaud */
59082527734SSukumar Swaminathan #define	LINK_SPEED_2G			2	/* 2 Gigabaud */
59182527734SSukumar Swaminathan } INIT_LINK_VAR;
59282527734SSukumar Swaminathan 
59382527734SSukumar Swaminathan 
59482527734SSukumar Swaminathan /* Structure for MB Command DOWN_LINK (06) */
59582527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
59682527734SSukumar Swaminathan 
59782527734SSukumar Swaminathan typedef struct
59882527734SSukumar Swaminathan {
59982527734SSukumar Swaminathan 	uint32_t	rsvd1;
60082527734SSukumar Swaminathan } DOWN_LINK_VAR;
60182527734SSukumar Swaminathan 
60282527734SSukumar Swaminathan 
60382527734SSukumar Swaminathan /* Structure for MB Command CONFIG_LINK (07) */
60482527734SSukumar Swaminathan 
60582527734SSukumar Swaminathan typedef struct
60682527734SSukumar Swaminathan {
60782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
60882527734SSukumar Swaminathan 	uint32_t	cr:1;
60982527734SSukumar Swaminathan 	uint32_t	ci:1;
61082527734SSukumar Swaminathan 	uint32_t	cr_delay:6;
61182527734SSukumar Swaminathan 	uint32_t	cr_count:8;
61282527734SSukumar Swaminathan 	uint32_t	rsvd1:8;
61382527734SSukumar Swaminathan 	uint32_t	MaxBBC:8;
61482527734SSukumar Swaminathan #endif
61582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
61682527734SSukumar Swaminathan 	uint32_t	MaxBBC:8;
61782527734SSukumar Swaminathan 	uint32_t	rsvd1:8;
61882527734SSukumar Swaminathan 	uint32_t	cr_count:8;
61982527734SSukumar Swaminathan 	uint32_t	cr_delay:6;
62082527734SSukumar Swaminathan 	uint32_t	ci:1;
62182527734SSukumar Swaminathan 	uint32_t	cr:1;
62282527734SSukumar Swaminathan #endif
62382527734SSukumar Swaminathan 	uint32_t	myId;
62482527734SSukumar Swaminathan 	uint32_t	rsvd2;
62582527734SSukumar Swaminathan 	uint32_t	edtov;
62682527734SSukumar Swaminathan 	uint32_t	arbtov;
62782527734SSukumar Swaminathan 	uint32_t	ratov;
62882527734SSukumar Swaminathan 	uint32_t	rttov;
62982527734SSukumar Swaminathan 	uint32_t	altov;
63082527734SSukumar Swaminathan 	uint32_t	crtov;
63182527734SSukumar Swaminathan 	uint32_t	citov;
63282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
63382527734SSukumar Swaminathan 	uint32_t	rrq_enable:1;
63482527734SSukumar Swaminathan 	uint32_t	rrq_immed:1;
63582527734SSukumar Swaminathan 	uint32_t	rsvd4:29;
63682527734SSukumar Swaminathan 	uint32_t	ack0_enable:1;
63782527734SSukumar Swaminathan #endif
63882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
63982527734SSukumar Swaminathan 	uint32_t	ack0_enable:1;
64082527734SSukumar Swaminathan 	uint32_t	rsvd4:29;
64182527734SSukumar Swaminathan 	uint32_t	rrq_immed:1;
64282527734SSukumar Swaminathan 	uint32_t	rrq_enable:1;
64382527734SSukumar Swaminathan #endif
64482527734SSukumar Swaminathan } CONFIG_LINK;
64582527734SSukumar Swaminathan 
64682527734SSukumar Swaminathan 
64782527734SSukumar Swaminathan /* Structure for MB Command PART_SLIM (08) */
64882527734SSukumar Swaminathan 
64982527734SSukumar Swaminathan typedef struct
65082527734SSukumar Swaminathan {
65182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
65282527734SSukumar Swaminathan 	uint32_t		unused1:24;
65382527734SSukumar Swaminathan 	uint32_t		numRing:8;
65482527734SSukumar Swaminathan #endif
65582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
65682527734SSukumar Swaminathan 	uint32_t		numRing:8;
65782527734SSukumar Swaminathan 	uint32_t		unused1:24;
65882527734SSukumar Swaminathan #endif
65982527734SSukumar Swaminathan 	emlxs_ring_def_t	ringdef[4];
66082527734SSukumar Swaminathan 	uint32_t		hbainit;
66182527734SSukumar Swaminathan } PART_SLIM_VAR;
66282527734SSukumar Swaminathan 
66382527734SSukumar Swaminathan 
66482527734SSukumar Swaminathan /* Structure for MB Command CONFIG_RING (09) */
66582527734SSukumar Swaminathan 
66682527734SSukumar Swaminathan typedef struct
66782527734SSukumar Swaminathan {
66882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
66982527734SSukumar Swaminathan 	uint32_t	unused2:6;
67082527734SSukumar Swaminathan 	uint32_t	recvSeq:1;
67182527734SSukumar Swaminathan 	uint32_t	recvNotify:1;
67282527734SSukumar Swaminathan 	uint32_t	numMask:8;
67382527734SSukumar Swaminathan 	uint32_t	profile:8;
67482527734SSukumar Swaminathan 	uint32_t	unused1:4;
67582527734SSukumar Swaminathan 	uint32_t	ring:4;
67682527734SSukumar Swaminathan #endif
67782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
67882527734SSukumar Swaminathan 	uint32_t	ring:4;
67982527734SSukumar Swaminathan 	uint32_t	unused1:4;
68082527734SSukumar Swaminathan 	uint32_t	profile:8;
68182527734SSukumar Swaminathan 	uint32_t	numMask:8;
68282527734SSukumar Swaminathan 	uint32_t	recvNotify:1;
68382527734SSukumar Swaminathan 	uint32_t	recvSeq:1;
68482527734SSukumar Swaminathan 	uint32_t	unused2:6;
68582527734SSukumar Swaminathan #endif
68682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
68782527734SSukumar Swaminathan 	uint16_t	maxRespXchg;
68882527734SSukumar Swaminathan 	uint16_t	maxOrigXchg;
68982527734SSukumar Swaminathan #endif
69082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
69182527734SSukumar Swaminathan 	uint16_t	maxOrigXchg;
69282527734SSukumar Swaminathan 	uint16_t	maxRespXchg;
69382527734SSukumar Swaminathan #endif
69482527734SSukumar Swaminathan 	RR_REG		rrRegs[6];
69582527734SSukumar Swaminathan } CONFIG_RING_VAR;
69682527734SSukumar Swaminathan 
69782527734SSukumar Swaminathan 
69882527734SSukumar Swaminathan /* Structure for MB Command RESET_RING (10) */
69982527734SSukumar Swaminathan 
70082527734SSukumar Swaminathan typedef struct
70182527734SSukumar Swaminathan {
70282527734SSukumar Swaminathan 	uint32_t	ring_no;
70382527734SSukumar Swaminathan } RESET_RING_VAR;
70482527734SSukumar Swaminathan 
70582527734SSukumar Swaminathan 
70682527734SSukumar Swaminathan /* Structure for MB Command READ_CONFIG (11) */
70782527734SSukumar Swaminathan /* Good for SLI2/3 only */
70882527734SSukumar Swaminathan 
70982527734SSukumar Swaminathan typedef struct
71082527734SSukumar Swaminathan {
71182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
71282527734SSukumar Swaminathan 	uint32_t	cr:1;
71382527734SSukumar Swaminathan 	uint32_t	ci:1;
71482527734SSukumar Swaminathan 	uint32_t	cr_delay:6;
71582527734SSukumar Swaminathan 	uint32_t	cr_count:8;
71682527734SSukumar Swaminathan 	uint32_t	InitBBC:8;
71782527734SSukumar Swaminathan 	uint32_t	MaxBBC:8;
71882527734SSukumar Swaminathan #endif
71982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
72082527734SSukumar Swaminathan 	uint32_t	MaxBBC:8;
72182527734SSukumar Swaminathan 	uint32_t	InitBBC:8;
72282527734SSukumar Swaminathan 	uint32_t	cr_count:8;
72382527734SSukumar Swaminathan 	uint32_t	cr_delay:6;
72482527734SSukumar Swaminathan 	uint32_t	ci:1;
72582527734SSukumar Swaminathan 	uint32_t	cr:1;
72682527734SSukumar Swaminathan #endif
72782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
72882527734SSukumar Swaminathan 	uint32_t	topology:8;
72982527734SSukumar Swaminathan 	uint32_t	myDid:24;
73082527734SSukumar Swaminathan #endif
73182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
73282527734SSukumar Swaminathan 	uint32_t	myDid:24;
73382527734SSukumar Swaminathan 	uint32_t	topology:8;
73482527734SSukumar Swaminathan #endif
73582527734SSukumar Swaminathan 	/* Defines for topology (defined previously) */
73682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
73782527734SSukumar Swaminathan 	uint32_t	AR:1;
73882527734SSukumar Swaminathan 	uint32_t	IR:1;
73982527734SSukumar Swaminathan 	uint32_t	rsvd1:29;
74082527734SSukumar Swaminathan 	uint32_t	ack0:1;
74182527734SSukumar Swaminathan #endif
74282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
74382527734SSukumar Swaminathan 	uint32_t	ack0:1;
74482527734SSukumar Swaminathan 	uint32_t	rsvd1:29;
74582527734SSukumar Swaminathan 	uint32_t	IR:1;
74682527734SSukumar Swaminathan 	uint32_t	AR:1;
74782527734SSukumar Swaminathan #endif
74882527734SSukumar Swaminathan 	uint32_t	edtov;
74982527734SSukumar Swaminathan 	uint32_t	arbtov;
75082527734SSukumar Swaminathan 	uint32_t	ratov;
75182527734SSukumar Swaminathan 	uint32_t	rttov;
75282527734SSukumar Swaminathan 	uint32_t	altov;
75382527734SSukumar Swaminathan 	uint32_t	lmt;
75482527734SSukumar Swaminathan 
75582527734SSukumar Swaminathan #define	LMT_1GB_CAPABLE		0x0004
75682527734SSukumar Swaminathan #define	LMT_2GB_CAPABLE		0x0008
75782527734SSukumar Swaminathan #define	LMT_4GB_CAPABLE		0x0040
75882527734SSukumar Swaminathan #define	LMT_8GB_CAPABLE		0x0080
75982527734SSukumar Swaminathan #define	LMT_10GB_CAPABLE	0x0100
760*8f23e9faSHans Rosenfeld #define	LMT_16GB_CAPABLE	0x0200
76182527734SSukumar Swaminathan /* E2E supported on adapters >= 8GB */
76282527734SSukumar Swaminathan #define	LMT_E2E_CAPABLE		(LMT_8GB_CAPABLE|LMT_10GB_CAPABLE)
76382527734SSukumar Swaminathan 
76482527734SSukumar Swaminathan 	uint32_t	rsvd2;
76582527734SSukumar Swaminathan 	uint32_t	rsvd3;
76682527734SSukumar Swaminathan 	uint32_t	max_xri;
76782527734SSukumar Swaminathan 	uint32_t	max_iocb;
76882527734SSukumar Swaminathan 	uint32_t	max_rpi;
76982527734SSukumar Swaminathan 	uint32_t	avail_xri;
77082527734SSukumar Swaminathan 	uint32_t	avail_iocb;
77182527734SSukumar Swaminathan 	uint32_t	avail_rpi;
77282527734SSukumar Swaminathan 	uint32_t	max_vpi;
77382527734SSukumar Swaminathan 	uint32_t	max_alpa;
77482527734SSukumar Swaminathan 	uint32_t	rsvd4;
77582527734SSukumar Swaminathan 	uint32_t	avail_vpi;
77682527734SSukumar Swaminathan 
77782527734SSukumar Swaminathan } READ_CONFIG_VAR;
77882527734SSukumar Swaminathan 
77982527734SSukumar Swaminathan 
78082527734SSukumar Swaminathan /* Structure for MB Command READ_CONFIG(0x11) */
78182527734SSukumar Swaminathan /* Good for SLI4 only */
78282527734SSukumar Swaminathan 
78382527734SSukumar Swaminathan typedef struct
78482527734SSukumar Swaminathan {
78582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
786*8f23e9faSHans Rosenfeld 	uint32_t	extents:1;	/* Word 1 */
787*8f23e9faSHans Rosenfeld 	uint32_t	rsvd1:31;
788*8f23e9faSHans Rosenfeld 
789*8f23e9faSHans Rosenfeld 	uint32_t	topology:8;	/* Word 2 */
790*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:15;
791*8f23e9faSHans Rosenfeld 	uint32_t	ldv:1;
792*8f23e9faSHans Rosenfeld 	uint32_t	link_type:2;
793*8f23e9faSHans Rosenfeld 	uint32_t	link_number:6;
79482527734SSukumar Swaminathan #endif
79582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
796*8f23e9faSHans Rosenfeld 	uint32_t	rsvd1:31;	/* Word 1 */
797*8f23e9faSHans Rosenfeld 	uint32_t	extents:1;
798*8f23e9faSHans Rosenfeld 
799*8f23e9faSHans Rosenfeld 	uint32_t	link_number:6;	/* Word 2 */
800*8f23e9faSHans Rosenfeld 	uint32_t	link_type:2;
801*8f23e9faSHans Rosenfeld 	uint32_t	ldv:1;
802*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:15;
80382527734SSukumar Swaminathan 	uint32_t	topology:8;
80482527734SSukumar Swaminathan #endif
80582527734SSukumar Swaminathan 	uint32_t	rsvd3;		/* Word 3 */
80682527734SSukumar Swaminathan 	uint32_t	edtov;		/* Word 4 */
80782527734SSukumar Swaminathan 	uint32_t	rsvd4;		/* Word 5 */
80882527734SSukumar Swaminathan 	uint32_t	ratov;		/* Word 6 */
80982527734SSukumar Swaminathan 	uint32_t	rsvd5;		/* Word 7 */
81082527734SSukumar Swaminathan 	uint32_t	rsvd6;		/* Word 8 */
81182527734SSukumar Swaminathan 	uint32_t	lmt;		/* Word 9 */
81282527734SSukumar Swaminathan 	uint32_t	rsvd8;		/* Word 10 */
81382527734SSukumar Swaminathan 	uint32_t	rsvd9;		/* Word 11 */
81482527734SSukumar Swaminathan 
81582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
81682527734SSukumar Swaminathan 	uint16_t	XRICount;	/* Word 12 */
81782527734SSukumar Swaminathan 	uint16_t	XRIBase;	/* Word 12 */
81882527734SSukumar Swaminathan 
81982527734SSukumar Swaminathan 	uint16_t	RPICount;	/* Word 13 */
82082527734SSukumar Swaminathan 	uint16_t	RPIBase;	/* Word 13 */
82182527734SSukumar Swaminathan 
82282527734SSukumar Swaminathan 	uint16_t	VPICount;	/* Word 14 */
82382527734SSukumar Swaminathan 	uint16_t	VPIBase;	/* Word 14 */
82482527734SSukumar Swaminathan 
82582527734SSukumar Swaminathan 	uint16_t	VFICount;	/* Word 15 */
82682527734SSukumar Swaminathan 	uint16_t	VFIBase;	/* Word 15 */
82782527734SSukumar Swaminathan 
82882527734SSukumar Swaminathan 	uint16_t	FCFICount;	/* Word 16 */
82982527734SSukumar Swaminathan 	uint16_t	rsvd10;		/* Word 16 */
83082527734SSukumar Swaminathan 
83182527734SSukumar Swaminathan 	uint16_t	EQCount;	/* Word 17 */
83282527734SSukumar Swaminathan 	uint16_t	RQCount;	/* Word 17 */
83382527734SSukumar Swaminathan 
83482527734SSukumar Swaminathan 	uint16_t	CQCount;	/* Word 18 */
83582527734SSukumar Swaminathan 	uint16_t	WQCount;	/* Word 18 */
83682527734SSukumar Swaminathan #endif
83782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
83882527734SSukumar Swaminathan 	uint16_t	XRIBase;	/* Word 12 */
83982527734SSukumar Swaminathan 	uint16_t	XRICount;	/* Word 12 */
84082527734SSukumar Swaminathan 
84182527734SSukumar Swaminathan 	uint16_t	RPIBase;	/* Word 13 */
84282527734SSukumar Swaminathan 	uint16_t	RPICount;	/* Word 13 */
84382527734SSukumar Swaminathan 
84482527734SSukumar Swaminathan 	uint16_t	VPIBase;	/* Word 14 */
84582527734SSukumar Swaminathan 	uint16_t	VPICount;	/* Word 14 */
84682527734SSukumar Swaminathan 
84782527734SSukumar Swaminathan 	uint16_t	VFIBase;	/* Word 15 */
84882527734SSukumar Swaminathan 	uint16_t	VFICount;	/* Word 15 */
84982527734SSukumar Swaminathan 
85082527734SSukumar Swaminathan 	uint16_t	rsvd10;		/* Word 16 */
85182527734SSukumar Swaminathan 	uint16_t	FCFICount;	/* Word 16 */
85282527734SSukumar Swaminathan 
85382527734SSukumar Swaminathan 	uint16_t	RQCount;	/* Word 17 */
854*8f23e9faSHans Rosenfeld 	uint16_t	EQCount;	/* Word 17 */
85582527734SSukumar Swaminathan 
85682527734SSukumar Swaminathan 	uint16_t	WQCount;	/* Word 18 */
857*8f23e9faSHans Rosenfeld 	uint16_t	CQCount;	/* Word 18 */
85882527734SSukumar Swaminathan #endif
85982527734SSukumar Swaminathan 
86082527734SSukumar Swaminathan } READ_CONFIG4_VAR;
86182527734SSukumar Swaminathan 
86282527734SSukumar Swaminathan /* Structure for MB Command READ_RCONFIG (12) */
86382527734SSukumar Swaminathan 
86482527734SSukumar Swaminathan typedef struct
86582527734SSukumar Swaminathan {
86682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
86782527734SSukumar Swaminathan 	uint32_t	rsvd2:7;
86882527734SSukumar Swaminathan 	uint32_t	recvNotify:1;
86982527734SSukumar Swaminathan 	uint32_t	numMask:8;
87082527734SSukumar Swaminathan 	uint32_t	profile:8;
87182527734SSukumar Swaminathan 	uint32_t	rsvd1:4;
87282527734SSukumar Swaminathan 	uint32_t	ring:4;
87382527734SSukumar Swaminathan #endif
87482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
87582527734SSukumar Swaminathan 	uint32_t	ring:4;
87682527734SSukumar Swaminathan 	uint32_t	rsvd1:4;
87782527734SSukumar Swaminathan 	uint32_t	profile:8;
87882527734SSukumar Swaminathan 	uint32_t	numMask:8;
87982527734SSukumar Swaminathan 	uint32_t	recvNotify:1;
88082527734SSukumar Swaminathan 	uint32_t	rsvd2:7;
88182527734SSukumar Swaminathan #endif
88282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
88382527734SSukumar Swaminathan 	uint16_t	maxResp;
88482527734SSukumar Swaminathan 	uint16_t	maxOrig;
88582527734SSukumar Swaminathan #endif
88682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
88782527734SSukumar Swaminathan 	uint16_t	maxOrig;
88882527734SSukumar Swaminathan 	uint16_t	maxResp;
88982527734SSukumar Swaminathan #endif
89082527734SSukumar Swaminathan 	RR_REG		rrRegs[6];
89182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
89282527734SSukumar Swaminathan 	uint16_t	cmdRingOffset;
89382527734SSukumar Swaminathan 	uint16_t	cmdEntryCnt;
89482527734SSukumar Swaminathan 	uint16_t	rspRingOffset;
89582527734SSukumar Swaminathan 	uint16_t	rspEntryCnt;
89682527734SSukumar Swaminathan 	uint16_t	nextCmdOffset;
89782527734SSukumar Swaminathan 	uint16_t	rsvd3;
89882527734SSukumar Swaminathan 	uint16_t	nextRspOffset;
89982527734SSukumar Swaminathan 	uint16_t	rsvd4;
90082527734SSukumar Swaminathan #endif
90182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
90282527734SSukumar Swaminathan 	uint16_t	cmdEntryCnt;
90382527734SSukumar Swaminathan 	uint16_t	cmdRingOffset;
90482527734SSukumar Swaminathan 	uint16_t	rspEntryCnt;
90582527734SSukumar Swaminathan 	uint16_t	rspRingOffset;
90682527734SSukumar Swaminathan 	uint16_t	rsvd3;
90782527734SSukumar Swaminathan 	uint16_t	nextCmdOffset;
90882527734SSukumar Swaminathan 	uint16_t	rsvd4;
90982527734SSukumar Swaminathan 	uint16_t	nextRspOffset;
91082527734SSukumar Swaminathan #endif
91182527734SSukumar Swaminathan } READ_RCONF_VAR;
91282527734SSukumar Swaminathan 
91382527734SSukumar Swaminathan 
91482527734SSukumar Swaminathan /* Structure for MB Command READ_SPARM (13) */
91582527734SSukumar Swaminathan /* Structure for MB Command READ_SPARM64 (0x8D) */
91682527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
91782527734SSukumar Swaminathan 
91882527734SSukumar Swaminathan typedef struct
91982527734SSukumar Swaminathan {
92082527734SSukumar Swaminathan 	uint32_t	rsvd1;
92182527734SSukumar Swaminathan 	uint32_t	rsvd2;
92282527734SSukumar Swaminathan 	union
92382527734SSukumar Swaminathan 	{
92482527734SSukumar Swaminathan 		ULP_BDE		sp;	/* This BDE points to SERV_PARM */
92582527734SSukumar Swaminathan 					/* structure */
92682527734SSukumar Swaminathan 		ULP_BDE64	sp64;
92782527734SSukumar Swaminathan 	} un;
92882527734SSukumar Swaminathan 	uint32_t	rsvd3;
92982527734SSukumar Swaminathan 
93082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
93182527734SSukumar Swaminathan 	uint16_t	portNameCnt;
93282527734SSukumar Swaminathan 	uint16_t	portNameOffset;
93382527734SSukumar Swaminathan 
93482527734SSukumar Swaminathan 	uint16_t	fabricNameCnt;
93582527734SSukumar Swaminathan 	uint16_t	fabricNameOffset;
93682527734SSukumar Swaminathan 
93782527734SSukumar Swaminathan 	uint16_t	lportNameCnt;
93882527734SSukumar Swaminathan 	uint16_t	lportNameOffset;
93982527734SSukumar Swaminathan 
94082527734SSukumar Swaminathan 	uint16_t	lfabricNameCnt;
94182527734SSukumar Swaminathan 	uint16_t	lfabricNameOffset;
94282527734SSukumar Swaminathan 
94382527734SSukumar Swaminathan #endif
94482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
94582527734SSukumar Swaminathan 	uint16_t	portNameOffset;
94682527734SSukumar Swaminathan 	uint16_t	portNameCnt;
94782527734SSukumar Swaminathan 
94882527734SSukumar Swaminathan 	uint16_t	fabricNameOffset;
94982527734SSukumar Swaminathan 	uint16_t	fabricNameCnt;
95082527734SSukumar Swaminathan 
95182527734SSukumar Swaminathan 	uint16_t	lportNameOffset;
95282527734SSukumar Swaminathan 	uint16_t	lportNameCnt;
95382527734SSukumar Swaminathan 
95482527734SSukumar Swaminathan 	uint16_t	lfabricNameOffset;
95582527734SSukumar Swaminathan 	uint16_t	lfabricNameCnt;
95682527734SSukumar Swaminathan 
95782527734SSukumar Swaminathan #endif
95882527734SSukumar Swaminathan 
95982527734SSukumar Swaminathan } READ_SPARM_VAR;
96082527734SSukumar Swaminathan 
96182527734SSukumar Swaminathan 
96282527734SSukumar Swaminathan /* Structure for MB Command READ_STATUS (14) */
96382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
96482527734SSukumar Swaminathan 
96582527734SSukumar Swaminathan typedef struct
96682527734SSukumar Swaminathan {
96782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
96882527734SSukumar Swaminathan 	uint32_t	rsvd1:31;
96982527734SSukumar Swaminathan 	uint32_t	clrCounters:1;
97082527734SSukumar Swaminathan 
97182527734SSukumar Swaminathan 	uint16_t	activeXriCnt;
97282527734SSukumar Swaminathan 	uint16_t	activeRpiCnt;
97382527734SSukumar Swaminathan #endif
97482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
97582527734SSukumar Swaminathan 	uint32_t	clrCounters:1;
97682527734SSukumar Swaminathan 	uint32_t	rsvd1:31;
97782527734SSukumar Swaminathan 
97882527734SSukumar Swaminathan 	uint16_t	activeRpiCnt;
97982527734SSukumar Swaminathan 	uint16_t	activeXriCnt;
98082527734SSukumar Swaminathan #endif
98182527734SSukumar Swaminathan 	uint32_t	xmitByteCnt;
98282527734SSukumar Swaminathan 	uint32_t	rcvByteCnt;
98382527734SSukumar Swaminathan 	uint32_t	xmitFrameCnt;
98482527734SSukumar Swaminathan 	uint32_t	rcvFrameCnt;
98582527734SSukumar Swaminathan 	uint32_t	xmitSeqCnt;
98682527734SSukumar Swaminathan 	uint32_t	rcvSeqCnt;
98782527734SSukumar Swaminathan 	uint32_t	totalOrigExchanges;
98882527734SSukumar Swaminathan 	uint32_t	totalRespExchanges;
98982527734SSukumar Swaminathan 	uint32_t	rcvPbsyCnt;
99082527734SSukumar Swaminathan 	uint32_t	rcvFbsyCnt;
99182527734SSukumar Swaminathan } READ_STATUS_VAR;
99282527734SSukumar Swaminathan 
99382527734SSukumar Swaminathan 
99482527734SSukumar Swaminathan /* Structure for MB Command READ_RPI (15) */
99582527734SSukumar Swaminathan /* Structure for MB Command READ_RPI64 (0x8F) */
99682527734SSukumar Swaminathan 
99782527734SSukumar Swaminathan typedef struct
99882527734SSukumar Swaminathan {
99982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
100082527734SSukumar Swaminathan 	uint16_t	nextRpi;
100182527734SSukumar Swaminathan 	uint16_t	reqRpi;
100282527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
100382527734SSukumar Swaminathan 	uint32_t	DID:24;
100482527734SSukumar Swaminathan #endif
100582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
100682527734SSukumar Swaminathan 	uint16_t	reqRpi;
100782527734SSukumar Swaminathan 	uint16_t	nextRpi;
100882527734SSukumar Swaminathan 	uint32_t	DID:24;
100982527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
101082527734SSukumar Swaminathan #endif
101182527734SSukumar Swaminathan 	union
101282527734SSukumar Swaminathan 	{
101382527734SSukumar Swaminathan 		ULP_BDE		sp;
101482527734SSukumar Swaminathan 		ULP_BDE64	sp64;
101582527734SSukumar Swaminathan 	} un;
101682527734SSukumar Swaminathan } READ_RPI_VAR;
101782527734SSukumar Swaminathan 
101882527734SSukumar Swaminathan 
101982527734SSukumar Swaminathan /* Structure for MB Command READ_XRI (16) */
102082527734SSukumar Swaminathan 
102182527734SSukumar Swaminathan typedef struct
102282527734SSukumar Swaminathan {
102382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
102482527734SSukumar Swaminathan 	uint16_t	nextXri;
102582527734SSukumar Swaminathan 	uint16_t	reqXri;
102682527734SSukumar Swaminathan 	uint16_t	rsvd1;
102782527734SSukumar Swaminathan 	uint16_t	rpi;
102882527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
102982527734SSukumar Swaminathan 	uint32_t	DID:24;
103082527734SSukumar Swaminathan 	uint32_t	rsvd3:8;
103182527734SSukumar Swaminathan 	uint32_t	SID:24;
103282527734SSukumar Swaminathan 	uint32_t	rsvd4;
103382527734SSukumar Swaminathan 	uint8_t		seqId;
103482527734SSukumar Swaminathan 	uint8_t		rsvd5;
103582527734SSukumar Swaminathan 	uint16_t	seqCount;
103682527734SSukumar Swaminathan 	uint16_t	oxId;
103782527734SSukumar Swaminathan 	uint16_t	rxId;
103882527734SSukumar Swaminathan 	uint32_t	rsvd6:30;
103982527734SSukumar Swaminathan 	uint32_t	si:1;
104082527734SSukumar Swaminathan 	uint32_t	exchOrig:1;
104182527734SSukumar Swaminathan #endif
104282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
104382527734SSukumar Swaminathan 	uint16_t	reqXri;
104482527734SSukumar Swaminathan 	uint16_t	nextXri;
104582527734SSukumar Swaminathan 	uint16_t	rpi;
104682527734SSukumar Swaminathan 	uint16_t	rsvd1;
104782527734SSukumar Swaminathan 	uint32_t	DID:24;
104882527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
104982527734SSukumar Swaminathan 	uint32_t	SID:24;
105082527734SSukumar Swaminathan 	uint32_t	rsvd3:8;
105182527734SSukumar Swaminathan 	uint32_t	rsvd4;
105282527734SSukumar Swaminathan 	uint16_t	seqCount;
105382527734SSukumar Swaminathan 	uint8_t		rsvd5;
105482527734SSukumar Swaminathan 	uint8_t		seqId;
105582527734SSukumar Swaminathan 	uint16_t	rxId;
105682527734SSukumar Swaminathan 	uint16_t	oxId;
105782527734SSukumar Swaminathan 	uint32_t	exchOrig:1;
105882527734SSukumar Swaminathan 	uint32_t	si:1;
105982527734SSukumar Swaminathan 	uint32_t	rsvd6:30;
106082527734SSukumar Swaminathan #endif
106182527734SSukumar Swaminathan } READ_XRI_VAR;
106282527734SSukumar Swaminathan 
106382527734SSukumar Swaminathan 
106482527734SSukumar Swaminathan /* Structure for MB Command READ_REV (17) */
106582527734SSukumar Swaminathan /* Good for SLI2/3 only */
106682527734SSukumar Swaminathan 
106782527734SSukumar Swaminathan typedef struct
106882527734SSukumar Swaminathan {
106982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
107082527734SSukumar Swaminathan 	uint32_t	cv:1;
107182527734SSukumar Swaminathan 	uint32_t	rr:1;
107282527734SSukumar Swaminathan 	uint32_t	co:1;
107382527734SSukumar Swaminathan 	uint32_t	rp:1;
107482527734SSukumar Swaminathan 	uint32_t	cv3:1;
107582527734SSukumar Swaminathan 	uint32_t	rf3:1;
107682527734SSukumar Swaminathan 	uint32_t	rsvd1:10;
107782527734SSukumar Swaminathan 	uint32_t	offset:14;
107882527734SSukumar Swaminathan 	uint32_t	rv:2;
107982527734SSukumar Swaminathan #endif
108082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
108182527734SSukumar Swaminathan 	uint32_t	rv:2;
108282527734SSukumar Swaminathan 	uint32_t	offset:14;
108382527734SSukumar Swaminathan 	uint32_t	rsvd1:10;
108482527734SSukumar Swaminathan 	uint32_t	rf3:1;
108582527734SSukumar Swaminathan 	uint32_t	cv3:1;
108682527734SSukumar Swaminathan 	uint32_t	rp:1;
108782527734SSukumar Swaminathan 	uint32_t	co:1;
108882527734SSukumar Swaminathan 	uint32_t	rr:1;
108982527734SSukumar Swaminathan 	uint32_t	cv:1;
109082527734SSukumar Swaminathan #endif
109182527734SSukumar Swaminathan 	uint32_t	biuRev;
109282527734SSukumar Swaminathan 	uint32_t	smRev;
109382527734SSukumar Swaminathan 	union
109482527734SSukumar Swaminathan 	{
109582527734SSukumar Swaminathan 		uint32_t	smFwRev;
109682527734SSukumar Swaminathan 		struct
109782527734SSukumar Swaminathan 		{
109882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
109982527734SSukumar Swaminathan 			uint8_t		ProgType;
110082527734SSukumar Swaminathan 			uint8_t		ProgId;
110182527734SSukumar Swaminathan 			uint16_t	ProgVer:4;
110282527734SSukumar Swaminathan 			uint16_t	ProgRev:4;
110382527734SSukumar Swaminathan 			uint16_t	ProgFixLvl:2;
110482527734SSukumar Swaminathan 			uint16_t	ProgDistType:2;
110582527734SSukumar Swaminathan 			uint16_t	DistCnt:4;
110682527734SSukumar Swaminathan #endif
110782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
110882527734SSukumar Swaminathan 			uint16_t	DistCnt:4;
110982527734SSukumar Swaminathan 			uint16_t	ProgDistType:2;
111082527734SSukumar Swaminathan 			uint16_t	ProgFixLvl:2;
111182527734SSukumar Swaminathan 			uint16_t	ProgRev:4;
111282527734SSukumar Swaminathan 			uint16_t	ProgVer:4;
111382527734SSukumar Swaminathan 			uint8_t		ProgId;
111482527734SSukumar Swaminathan 			uint8_t		ProgType;
111582527734SSukumar Swaminathan #endif
111682527734SSukumar Swaminathan 		} b;
111782527734SSukumar Swaminathan 	} un;
111882527734SSukumar Swaminathan 	uint32_t	endecRev;
111982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
112082527734SSukumar Swaminathan 	uint8_t		feaLevelHigh;
112182527734SSukumar Swaminathan 	uint8_t		feaLevelLow;
112282527734SSukumar Swaminathan 	uint8_t		fcphHigh;
112382527734SSukumar Swaminathan 	uint8_t		fcphLow;
112482527734SSukumar Swaminathan #endif
112582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
112682527734SSukumar Swaminathan 	uint8_t		fcphLow;
112782527734SSukumar Swaminathan 	uint8_t		fcphHigh;
112882527734SSukumar Swaminathan 	uint8_t		feaLevelLow;
112982527734SSukumar Swaminathan 	uint8_t		feaLevelHigh;
113082527734SSukumar Swaminathan #endif
113182527734SSukumar Swaminathan 	uint32_t	postKernRev;
113282527734SSukumar Swaminathan 	uint32_t	opFwRev;
113382527734SSukumar Swaminathan 	uint8_t		opFwName[16];
113482527734SSukumar Swaminathan 
113582527734SSukumar Swaminathan 	uint32_t	sliFwRev1;
113682527734SSukumar Swaminathan 	uint8_t		sliFwName1[16];
113782527734SSukumar Swaminathan 	uint32_t	sliFwRev2;
113882527734SSukumar Swaminathan 	uint8_t		sliFwName2[16];
113982527734SSukumar Swaminathan } READ_REV_VAR;
114082527734SSukumar Swaminathan 
114182527734SSukumar Swaminathan /* Structure for MB Command READ_REV (17) */
114282527734SSukumar Swaminathan /* Good for SLI4 only */
114382527734SSukumar Swaminathan 
114482527734SSukumar Swaminathan typedef struct
114582527734SSukumar Swaminathan {
114682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
114782527734SSukumar Swaminathan 	uint32_t	Rsvd3:2;
114882527734SSukumar Swaminathan 	uint32_t	VPD:1;
114982527734SSukumar Swaminathan 	uint32_t	rsvd2:6;
115082527734SSukumar Swaminathan 	uint32_t	dcbxMode:2;
115182527734SSukumar Swaminathan 	uint32_t	FCoE:1;
115282527734SSukumar Swaminathan 	uint32_t	sliLevel:4;
115382527734SSukumar Swaminathan 	uint32_t	rsvd1:16;
115482527734SSukumar Swaminathan #endif
115582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
115682527734SSukumar Swaminathan 	uint32_t	rsvd1:16;
115782527734SSukumar Swaminathan 	uint32_t	sliLevel:4;
115882527734SSukumar Swaminathan 	uint32_t	FCoE:1;
115982527734SSukumar Swaminathan 	uint32_t	dcbxMode:2;
116082527734SSukumar Swaminathan 	uint32_t	rsvd2:6;
116182527734SSukumar Swaminathan 	uint32_t	VPD:1;
116282527734SSukumar Swaminathan 	uint32_t	Rsvd3:2;
116382527734SSukumar Swaminathan #endif
116482527734SSukumar Swaminathan 
116582527734SSukumar Swaminathan 	uint32_t	HwRev1;
116682527734SSukumar Swaminathan 	uint32_t	HwRev2;
116782527734SSukumar Swaminathan 	uint32_t	Rsvd4;
116882527734SSukumar Swaminathan 	uint32_t	HwRev3;
116982527734SSukumar Swaminathan 
117082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
117182527734SSukumar Swaminathan 	uint8_t		feaLevelHigh;
117282527734SSukumar Swaminathan 	uint8_t		feaLevelLow;
117382527734SSukumar Swaminathan 	uint8_t		fcphHigh;
117482527734SSukumar Swaminathan 	uint8_t		fcphLow;
117582527734SSukumar Swaminathan #endif
117682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
117782527734SSukumar Swaminathan 	uint8_t		fcphLow;
117882527734SSukumar Swaminathan 	uint8_t		fcphHigh;
117982527734SSukumar Swaminathan 	uint8_t		feaLevelLow;
118082527734SSukumar Swaminathan 	uint8_t		feaLevelHigh;
118182527734SSukumar Swaminathan #endif
118282527734SSukumar Swaminathan 
118382527734SSukumar Swaminathan 	uint32_t	Redboot;
118482527734SSukumar Swaminathan 
118582527734SSukumar Swaminathan 	uint32_t	ARMFwId;
118682527734SSukumar Swaminathan 	uint8_t		ARMFwName[16];
118782527734SSukumar Swaminathan 
118882527734SSukumar Swaminathan 	uint32_t	ULPFwId;
118982527734SSukumar Swaminathan 	uint8_t		ULPFwName[16];
119082527734SSukumar Swaminathan 
119182527734SSukumar Swaminathan 	uint32_t	Rsvd6[30];
119282527734SSukumar Swaminathan 
119382527734SSukumar Swaminathan 	ULP_BDE64	VPDBde;
119482527734SSukumar Swaminathan 
119582527734SSukumar Swaminathan 	uint32_t	ReturnedVPDLength;
119682527734SSukumar Swaminathan 
119782527734SSukumar Swaminathan } READ_REV4_VAR;
119882527734SSukumar Swaminathan 
119982527734SSukumar Swaminathan #define	EMLXS_DCBX_MODE_CIN	0	/* Mapped to nonFIP mode */
120082527734SSukumar Swaminathan #define	EMLXS_DCBX_MODE_CEE	1	/* Mapped to FIP mode */
120182527734SSukumar Swaminathan 
120282527734SSukumar Swaminathan /* Structure for MB Command READ_LINK_STAT (18) */
120382527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
120482527734SSukumar Swaminathan 
120582527734SSukumar Swaminathan typedef struct
120682527734SSukumar Swaminathan {
120782527734SSukumar Swaminathan 	uint32_t	rsvd1;
120882527734SSukumar Swaminathan 	uint32_t	linkFailureCnt;
120982527734SSukumar Swaminathan 	uint32_t	lossSyncCnt;
121082527734SSukumar Swaminathan 
121182527734SSukumar Swaminathan 	uint32_t	lossSignalCnt;
121282527734SSukumar Swaminathan 	uint32_t	primSeqErrCnt;
121382527734SSukumar Swaminathan 	uint32_t	invalidXmitWord;
121482527734SSukumar Swaminathan 	uint32_t	crcCnt;
121582527734SSukumar Swaminathan 	uint32_t	primSeqTimeout;
121682527734SSukumar Swaminathan 	uint32_t	elasticOverrun;
121782527734SSukumar Swaminathan 	uint32_t	arbTimeout;
121882527734SSukumar Swaminathan 
121982527734SSukumar Swaminathan 	uint32_t	rxBufCredit;
122082527734SSukumar Swaminathan 	uint32_t	rxBufCreditCur;
122182527734SSukumar Swaminathan 
122282527734SSukumar Swaminathan 	uint32_t	txBufCredit;
122382527734SSukumar Swaminathan 	uint32_t	txBufCreditCur;
122482527734SSukumar Swaminathan 
122582527734SSukumar Swaminathan 	uint32_t	EOFaCnt;
122682527734SSukumar Swaminathan 	uint32_t	EOFdtiCnt;
122782527734SSukumar Swaminathan 	uint32_t	EOFniCnt;
122882527734SSukumar Swaminathan 	uint32_t	SOFfCnt;
122982527734SSukumar Swaminathan 	uint32_t	DropAERCnt;
123082527734SSukumar Swaminathan 	uint32_t	DropRcv;
123182527734SSukumar Swaminathan } READ_LNK_VAR;
123282527734SSukumar Swaminathan 
123382527734SSukumar Swaminathan 
123482527734SSukumar Swaminathan /* Structure for MB Command REG_LOGIN (19) */
123582527734SSukumar Swaminathan /* Structure for MB Command REG_LOGIN64 (0x93) */
123682527734SSukumar Swaminathan /* Structure for MB Command REG_RPI (0x93) */
123782527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
123882527734SSukumar Swaminathan 
123982527734SSukumar Swaminathan typedef struct
124082527734SSukumar Swaminathan {
124182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
124282527734SSukumar Swaminathan 	uint16_t	rsvd1;
124382527734SSukumar Swaminathan 	uint16_t	rpi;
124482527734SSukumar Swaminathan 	uint32_t	CI:1;
1245*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:1;
1246*8f23e9faSHans Rosenfeld 	uint32_t	TERP:1;
1247*8f23e9faSHans Rosenfeld 	uint32_t	rsvd3:4;
1248*8f23e9faSHans Rosenfeld 	uint32_t	update:1;
124982527734SSukumar Swaminathan 	uint32_t	did:24;
125082527734SSukumar Swaminathan #endif
125182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
125282527734SSukumar Swaminathan 	uint16_t	rpi;
125382527734SSukumar Swaminathan 	uint16_t	rsvd1;
125482527734SSukumar Swaminathan 	uint32_t	did:24;
1255*8f23e9faSHans Rosenfeld 	uint32_t	update:1;
1256*8f23e9faSHans Rosenfeld 	uint32_t	rsvd3:4;
1257*8f23e9faSHans Rosenfeld 	uint32_t	TERP:1;
1258*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:1;
125982527734SSukumar Swaminathan 	uint32_t	CI:1;
126082527734SSukumar Swaminathan #endif
126182527734SSukumar Swaminathan 	union
126282527734SSukumar Swaminathan 	{
126382527734SSukumar Swaminathan 		ULP_BDE		sp;
126482527734SSukumar Swaminathan 		ULP_BDE64	sp64;
126582527734SSukumar Swaminathan 	} un;
126682527734SSukumar Swaminathan 
126782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
126882527734SSukumar Swaminathan 	uint16_t	rsvd6;
126982527734SSukumar Swaminathan 	uint16_t	vpi;
127082527734SSukumar Swaminathan #endif
127182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
127282527734SSukumar Swaminathan 	uint16_t	vpi;
127382527734SSukumar Swaminathan 	uint16_t	rsvd6;
127482527734SSukumar Swaminathan #endif
127582527734SSukumar Swaminathan } REG_LOGIN_VAR;
127682527734SSukumar Swaminathan 
127782527734SSukumar Swaminathan /* Word 30 contents for REG_LOGIN */
127882527734SSukumar Swaminathan typedef union
127982527734SSukumar Swaminathan {
128082527734SSukumar Swaminathan 	struct
128182527734SSukumar Swaminathan 	{
128282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
128382527734SSukumar Swaminathan 		uint16_t	rsvd1:12;
128482527734SSukumar Swaminathan 		uint16_t	class:4;
128582527734SSukumar Swaminathan 		uint16_t	xri;
128682527734SSukumar Swaminathan #endif
128782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
128882527734SSukumar Swaminathan 		uint16_t	xri;
128982527734SSukumar Swaminathan 		uint16_t	class:4;
129082527734SSukumar Swaminathan 		uint16_t	rsvd1:12;
129182527734SSukumar Swaminathan #endif
129282527734SSukumar Swaminathan 	} f;
129382527734SSukumar Swaminathan 	uint32_t	word;
129482527734SSukumar Swaminathan } REG_WD30;
129582527734SSukumar Swaminathan 
129682527734SSukumar Swaminathan 
129782527734SSukumar Swaminathan /* Structure for MB Command UNREG_LOGIN (0x14) - SLI2/3 */
129882527734SSukumar Swaminathan /* Structure for MB Command UNREG_RPI (0x14) - SLI4 */
129982527734SSukumar Swaminathan 
130082527734SSukumar Swaminathan typedef struct
130182527734SSukumar Swaminathan {
130282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
130382527734SSukumar Swaminathan 	uint16_t	ll:2;		/* SLI4 only */
130482527734SSukumar Swaminathan 	uint16_t	rsvd1:14;
130582527734SSukumar Swaminathan 	uint16_t	rpi;
130682527734SSukumar Swaminathan #endif
130782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
130882527734SSukumar Swaminathan 	uint16_t	rpi;
130982527734SSukumar Swaminathan 	uint16_t	rsvd1:14;
131082527734SSukumar Swaminathan 	uint16_t	ll:2;		/* SLI4 only */
131182527734SSukumar Swaminathan #endif
131282527734SSukumar Swaminathan 
131382527734SSukumar Swaminathan 	uint32_t	rsvd2;
131482527734SSukumar Swaminathan 	uint32_t	rsvd3;
131582527734SSukumar Swaminathan 	uint32_t	rsvd4;
131682527734SSukumar Swaminathan 	uint32_t	rsvd5;
131782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
131882527734SSukumar Swaminathan 	uint16_t	rsvd6;
131982527734SSukumar Swaminathan 	uint16_t	vpi;
132082527734SSukumar Swaminathan #endif
132182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
132282527734SSukumar Swaminathan 	uint16_t	vpi;
132382527734SSukumar Swaminathan 	uint16_t	rsvd6;
132482527734SSukumar Swaminathan #endif
132582527734SSukumar Swaminathan } UNREG_LOGIN_VAR;
132682527734SSukumar Swaminathan 
132782527734SSukumar Swaminathan /* Structure for MB Command REG_FCFI (0xA0) */
132882527734SSukumar Swaminathan /* Good for SLI4 only */
132982527734SSukumar Swaminathan 
133082527734SSukumar Swaminathan typedef struct
133182527734SSukumar Swaminathan {
133282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
133382527734SSukumar Swaminathan 	uint16_t	FCFI;
133482527734SSukumar Swaminathan 	uint16_t	InfoIndex;
133582527734SSukumar Swaminathan 
133682527734SSukumar Swaminathan 	uint16_t	RQId0;
133782527734SSukumar Swaminathan 	uint16_t	RQId1;
133882527734SSukumar Swaminathan 	uint16_t	RQId2;
133982527734SSukumar Swaminathan 	uint16_t	RQId3;
134082527734SSukumar Swaminathan 
134182527734SSukumar Swaminathan 	uint8_t		Id0_type;
134282527734SSukumar Swaminathan 	uint8_t		Id0_type_mask;
134382527734SSukumar Swaminathan 	uint8_t		Id0_rctl;
134482527734SSukumar Swaminathan 	uint8_t		Id0_rctl_mask;
134582527734SSukumar Swaminathan 
134682527734SSukumar Swaminathan 	uint8_t		Id1_type;
134782527734SSukumar Swaminathan 	uint8_t		Id1_type_mask;
134882527734SSukumar Swaminathan 	uint8_t		Id1_rctl;
134982527734SSukumar Swaminathan 	uint8_t		Id1_rctl_mask;
135082527734SSukumar Swaminathan 
135182527734SSukumar Swaminathan 	uint8_t		Id2_type;
135282527734SSukumar Swaminathan 	uint8_t		Id2_type_mask;
135382527734SSukumar Swaminathan 	uint8_t		Id2_rctl;
135482527734SSukumar Swaminathan 	uint8_t		Id2_rctl_mask;
135582527734SSukumar Swaminathan 
135682527734SSukumar Swaminathan 	uint8_t		Id3_type;
135782527734SSukumar Swaminathan 	uint8_t		Id3_type_mask;
135882527734SSukumar Swaminathan 	uint8_t		Id3_rctl;
135982527734SSukumar Swaminathan 	uint8_t		Id3_rctl_mask;
136082527734SSukumar Swaminathan 
136182527734SSukumar Swaminathan 	uint32_t	Rsvd1: 17;
136282527734SSukumar Swaminathan 	uint32_t	mam: 2;
136382527734SSukumar Swaminathan 	uint32_t	vv: 1;
136482527734SSukumar Swaminathan 	uint32_t	vlanTag: 12;
136582527734SSukumar Swaminathan #endif
136682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
136782527734SSukumar Swaminathan 	uint16_t	InfoIndex;
136882527734SSukumar Swaminathan 	uint16_t	FCFI;
136982527734SSukumar Swaminathan 
137082527734SSukumar Swaminathan 	uint16_t	RQId1;
137182527734SSukumar Swaminathan 	uint16_t	RQId0;
137282527734SSukumar Swaminathan 	uint16_t	RQId3;
137382527734SSukumar Swaminathan 	uint16_t	RQId2;
137482527734SSukumar Swaminathan 
137582527734SSukumar Swaminathan 	uint8_t		Id0_rctl_mask;
137682527734SSukumar Swaminathan 	uint8_t		Id0_rctl;
137782527734SSukumar Swaminathan 	uint8_t		Id0_type_mask;
137882527734SSukumar Swaminathan 	uint8_t		Id0_type;
137982527734SSukumar Swaminathan 
138082527734SSukumar Swaminathan 	uint8_t		Id1_rctl_mask;
138182527734SSukumar Swaminathan 	uint8_t		Id1_rctl;
138282527734SSukumar Swaminathan 	uint8_t		Id1_type_mask;
138382527734SSukumar Swaminathan 	uint8_t		Id1_type;
138482527734SSukumar Swaminathan 
138582527734SSukumar Swaminathan 	uint8_t		Id2_rctl_mask;
138682527734SSukumar Swaminathan 	uint8_t		Id2_rctl;
138782527734SSukumar Swaminathan 	uint8_t		Id2_type_mask;
138882527734SSukumar Swaminathan 	uint8_t		Id2_type;
138982527734SSukumar Swaminathan 
139082527734SSukumar Swaminathan 	uint8_t		Id3_rctl_mask;
139182527734SSukumar Swaminathan 	uint8_t		Id3_rctl;
139282527734SSukumar Swaminathan 	uint8_t		Id3_type_mask;
139382527734SSukumar Swaminathan 	uint8_t		Id3_type;
139482527734SSukumar Swaminathan 
139582527734SSukumar Swaminathan 	uint32_t	vlanTag: 12;
139682527734SSukumar Swaminathan 	uint32_t	vv: 1;
139782527734SSukumar Swaminathan 	uint32_t	mam: 2;
139882527734SSukumar Swaminathan 	uint32_t	Rsvd1: 17;
139982527734SSukumar Swaminathan #endif
140082527734SSukumar Swaminathan 
140182527734SSukumar Swaminathan }  REG_FCFI_VAR;
140282527734SSukumar Swaminathan 
140382527734SSukumar Swaminathan /* Defines for mam */
140482527734SSukumar Swaminathan #define	EMLXS_REG_FCFI_MAM_SPMA	1	/* Server Provided MAC Address */
140582527734SSukumar Swaminathan #define	EMLXS_REG_FCFI_MAM_FPMA	2	/* Fabric Provided MAC Address */
140682527734SSukumar Swaminathan 
140782527734SSukumar Swaminathan /* Structure for MB Command UNREG_FCFI (0xA2) */
140882527734SSukumar Swaminathan /* Good for SLI4 only */
140982527734SSukumar Swaminathan 
141082527734SSukumar Swaminathan typedef struct
141182527734SSukumar Swaminathan {
141282527734SSukumar Swaminathan 	uint32_t	Rsvd1;
141382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
141482527734SSukumar Swaminathan 	uint16_t	Rsvd2;
141582527734SSukumar Swaminathan 	uint16_t	FCFI;
141682527734SSukumar Swaminathan #endif
141782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
141882527734SSukumar Swaminathan 	uint16_t	FCFI;
141982527734SSukumar Swaminathan 	uint16_t	Rsvd2;
142082527734SSukumar Swaminathan #endif
142182527734SSukumar Swaminathan }  UNREG_FCFI_VAR;
142282527734SSukumar Swaminathan 
142382527734SSukumar Swaminathan /* Structure for MB Command RESUME_RPI (0x9E) */
142482527734SSukumar Swaminathan /* Good for SLI4 only */
142582527734SSukumar Swaminathan 
142682527734SSukumar Swaminathan typedef struct
142782527734SSukumar Swaminathan {
142882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
142982527734SSukumar Swaminathan 	uint16_t	Rsvd1;
143082527734SSukumar Swaminathan 	uint16_t	RPI;
143182527734SSukumar Swaminathan 
143282527734SSukumar Swaminathan 	uint32_t	EventTag;
143382527734SSukumar Swaminathan 	uint32_t	rsvd2[3];
143482527734SSukumar Swaminathan 
143582527734SSukumar Swaminathan 	uint16_t	VFI;
143682527734SSukumar Swaminathan 	uint16_t	VPI;
143782527734SSukumar Swaminathan #endif
143882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
143982527734SSukumar Swaminathan 	uint16_t	RPI;
144082527734SSukumar Swaminathan 	uint16_t	Rsvd1;
144182527734SSukumar Swaminathan 
144282527734SSukumar Swaminathan 	uint32_t	EventTag;
144382527734SSukumar Swaminathan 	uint32_t	rsvd2[3];
144482527734SSukumar Swaminathan 
144582527734SSukumar Swaminathan 	uint16_t	VPI;
144682527734SSukumar Swaminathan 	uint16_t	VFI;
144782527734SSukumar Swaminathan #endif
144882527734SSukumar Swaminathan 
144982527734SSukumar Swaminathan }  RESUME_RPI_VAR;
145082527734SSukumar Swaminathan 
145182527734SSukumar Swaminathan 
145282527734SSukumar Swaminathan /* Structure for MB Command UNREG_D_ID (0x23) */
145382527734SSukumar Swaminathan 
145482527734SSukumar Swaminathan typedef struct
145582527734SSukumar Swaminathan {
145682527734SSukumar Swaminathan 	uint32_t	did;
145782527734SSukumar Swaminathan 
145882527734SSukumar Swaminathan 	uint32_t	rsvd2;
145982527734SSukumar Swaminathan 	uint32_t	rsvd3;
146082527734SSukumar Swaminathan 	uint32_t	rsvd4;
146182527734SSukumar Swaminathan 	uint32_t	rsvd5;
146282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
146382527734SSukumar Swaminathan 	uint16_t	rsvd6;
146482527734SSukumar Swaminathan 	uint16_t	vpi;
146582527734SSukumar Swaminathan #endif
146682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
146782527734SSukumar Swaminathan 	uint16_t	vpi;
146882527734SSukumar Swaminathan 	uint16_t	rsvd6;
146982527734SSukumar Swaminathan #endif
147082527734SSukumar Swaminathan } UNREG_D_ID_VAR;
147182527734SSukumar Swaminathan 
147282527734SSukumar Swaminathan 
147382527734SSukumar Swaminathan /* Structure for MB Command READ_LA (21) */
147482527734SSukumar Swaminathan /* Structure for MB Command READ_LA64 (0x95) */
147582527734SSukumar Swaminathan 
147682527734SSukumar Swaminathan typedef struct
147782527734SSukumar Swaminathan {
147882527734SSukumar Swaminathan 	uint32_t	eventTag;	/* Event tag */
147982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
148082527734SSukumar Swaminathan 	uint32_t	rsvd2:19;
148182527734SSukumar Swaminathan 	uint32_t	fa:1;
148282527734SSukumar Swaminathan 	uint32_t	mm:1;
148382527734SSukumar Swaminathan 	uint32_t	tc:1;
148482527734SSukumar Swaminathan 	uint32_t	pb:1;
148582527734SSukumar Swaminathan 	uint32_t	il:1;
148682527734SSukumar Swaminathan 	uint32_t	attType:8;
148782527734SSukumar Swaminathan #endif
148882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
148982527734SSukumar Swaminathan 	uint32_t	attType:8;
149082527734SSukumar Swaminathan 	uint32_t	il:1;
149182527734SSukumar Swaminathan 	uint32_t	pb:1;
149282527734SSukumar Swaminathan 	uint32_t	tc:1;
149382527734SSukumar Swaminathan 	uint32_t	mm:1;
149482527734SSukumar Swaminathan 	uint32_t	fa:1;
149582527734SSukumar Swaminathan 	uint32_t	rsvd2:19;
149682527734SSukumar Swaminathan #endif
149782527734SSukumar Swaminathan #define	AT_RESERVED	0x00	/* Reserved - attType */
149882527734SSukumar Swaminathan #define	AT_LINK_UP	0x01	/* Link is up */
149982527734SSukumar Swaminathan #define	AT_LINK_DOWN	0x02	/* Link is down */
1500*8f23e9faSHans Rosenfeld #define	AT_NO_HARD_ALPA	0x03	/* SLI4 */
1501*8f23e9faSHans Rosenfeld 
150282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
150382527734SSukumar Swaminathan 	uint8_t		granted_AL_PA;
150482527734SSukumar Swaminathan 	uint8_t		lipAlPs;
150582527734SSukumar Swaminathan 	uint8_t		lipType;
150682527734SSukumar Swaminathan 	uint8_t		topology;
150782527734SSukumar Swaminathan #endif
150882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
150982527734SSukumar Swaminathan 	uint8_t		topology;
151082527734SSukumar Swaminathan 	uint8_t		lipType;
151182527734SSukumar Swaminathan 	uint8_t		lipAlPs;
151282527734SSukumar Swaminathan 	uint8_t		granted_AL_PA;
151382527734SSukumar Swaminathan #endif
151482527734SSukumar Swaminathan 
151582527734SSukumar Swaminathan 	/* lipType */
151682527734SSukumar Swaminathan #define	LT_PORT_INIT	0x00	/* An L_PORT initing (F7, AL_PS) - lipType */
151782527734SSukumar Swaminathan #define	LT_PORT_ERR	0x01	/* Err @L_PORT rcv'er (F8, AL_PS) */
151882527734SSukumar Swaminathan #define	LT_RESET_APORT	0x02	/* Lip Reset of some other port */
151982527734SSukumar Swaminathan #define	LT_RESET_MYPORT	0x03	/* Lip Reset of my port */
152082527734SSukumar Swaminathan 
152182527734SSukumar Swaminathan 	/* topology */
152282527734SSukumar Swaminathan #define	TOPOLOGY_PT_PT	0x01	/* Topology is pt-pt / pt-fabric */
152382527734SSukumar Swaminathan #define	TOPOLOGY_LOOP	0x02	/* Topology is FC-AL (private) */
152482527734SSukumar Swaminathan 
152582527734SSukumar Swaminathan 	union
152682527734SSukumar Swaminathan 	{
152782527734SSukumar Swaminathan 		ULP_BDE		lilpBde;	/* This BDE points to a */
152882527734SSukumar Swaminathan 						/* 128 byte buffer to store */
152982527734SSukumar Swaminathan 						/* the LILP AL_PA position */
153082527734SSukumar Swaminathan 						/* map into */
153182527734SSukumar Swaminathan 		ULP_BDE64	lilpBde64;
153282527734SSukumar Swaminathan 	} un;
153382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
153482527734SSukumar Swaminathan 	uint32_t	Dlu:1;
153582527734SSukumar Swaminathan 	uint32_t	Dtf:1;
153682527734SSukumar Swaminathan 	uint32_t	Drsvd2:14;
153782527734SSukumar Swaminathan 	uint32_t	DlnkSpeed:8;
153882527734SSukumar Swaminathan 	uint32_t	DnlPort:4;
153982527734SSukumar Swaminathan 	uint32_t	Dtx:2;
154082527734SSukumar Swaminathan 	uint32_t	Drx:2;
154182527734SSukumar Swaminathan #endif
154282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
154382527734SSukumar Swaminathan 	uint32_t	Drx:2;
154482527734SSukumar Swaminathan 	uint32_t	Dtx:2;
154582527734SSukumar Swaminathan 	uint32_t	DnlPort:4;
154682527734SSukumar Swaminathan 	uint32_t	DlnkSpeed:8;
154782527734SSukumar Swaminathan 	uint32_t	Drsvd2:14;
154882527734SSukumar Swaminathan 	uint32_t	Dtf:1;
154982527734SSukumar Swaminathan 	uint32_t	Dlu:1;
155082527734SSukumar Swaminathan #endif
155182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
155282527734SSukumar Swaminathan 	uint32_t	Ulu:1;
155382527734SSukumar Swaminathan 	uint32_t	Utf:1;
155482527734SSukumar Swaminathan 	uint32_t	Ursvd2:14;
155582527734SSukumar Swaminathan 	uint32_t	UlnkSpeed:8;
155682527734SSukumar Swaminathan 	uint32_t	UnlPort:4;
155782527734SSukumar Swaminathan 	uint32_t	Utx:2;
155882527734SSukumar Swaminathan 	uint32_t	Urx:2;
155982527734SSukumar Swaminathan #endif
156082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
156182527734SSukumar Swaminathan 	uint32_t	Urx:2;
156282527734SSukumar Swaminathan 	uint32_t	Utx:2;
156382527734SSukumar Swaminathan 	uint32_t	UnlPort:4;
156482527734SSukumar Swaminathan 	uint32_t	UlnkSpeed:8;
156582527734SSukumar Swaminathan 	uint32_t	Ursvd2:14;
156682527734SSukumar Swaminathan 	uint32_t	Utf:1;
156782527734SSukumar Swaminathan 	uint32_t	Ulu:1;
156882527734SSukumar Swaminathan #endif
156982527734SSukumar Swaminathan #define	LA_1GHZ_LINK   0x04	/* lnkSpeed */
157082527734SSukumar Swaminathan #define	LA_2GHZ_LINK   0x08	/* lnkSpeed */
157182527734SSukumar Swaminathan #define	LA_4GHZ_LINK   0x10	/* lnkSpeed */
157282527734SSukumar Swaminathan #define	LA_8GHZ_LINK   0x20	/* lnkSpeed */
157382527734SSukumar Swaminathan #define	LA_10GHZ_LINK  0x40	/* lnkSpeed */
1574*8f23e9faSHans Rosenfeld #define	LA_16GHZ_LINK  0x80	/* lnkSpeed */
157582527734SSukumar Swaminathan } READ_LA_VAR;
157682527734SSukumar Swaminathan 
157782527734SSukumar Swaminathan 
157882527734SSukumar Swaminathan /* Structure for MB Command CLEAR_LA (22) */
157982527734SSukumar Swaminathan 
158082527734SSukumar Swaminathan typedef struct
158182527734SSukumar Swaminathan {
158282527734SSukumar Swaminathan 	uint32_t	eventTag;	/* Event tag */
158382527734SSukumar Swaminathan 	uint32_t	rsvd1;
158482527734SSukumar Swaminathan } CLEAR_LA_VAR;
158582527734SSukumar Swaminathan 
158682527734SSukumar Swaminathan /* Structure for MB Command DUMP */
158782527734SSukumar Swaminathan /* Good for SLI2/3 only */
158882527734SSukumar Swaminathan 
158982527734SSukumar Swaminathan typedef struct
159082527734SSukumar Swaminathan {
159182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
159282527734SSukumar Swaminathan 	uint32_t	rsvd:25;
159382527734SSukumar Swaminathan 	uint32_t	ra:1;
159482527734SSukumar Swaminathan 	uint32_t	co:1;
159582527734SSukumar Swaminathan 	uint32_t	cv:1;
159682527734SSukumar Swaminathan 	uint32_t	type:4;
159782527734SSukumar Swaminathan 
159882527734SSukumar Swaminathan 	uint32_t	entry_index:16;
159982527734SSukumar Swaminathan 	uint32_t	region_id:16;
160082527734SSukumar Swaminathan #endif
160182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
160282527734SSukumar Swaminathan 	uint32_t	type:4;
160382527734SSukumar Swaminathan 	uint32_t	cv:1;
160482527734SSukumar Swaminathan 	uint32_t	co:1;
160582527734SSukumar Swaminathan 	uint32_t	ra:1;
160682527734SSukumar Swaminathan 	uint32_t	rsvd:25;
160782527734SSukumar Swaminathan 
160882527734SSukumar Swaminathan 	uint32_t	region_id:16;
160982527734SSukumar Swaminathan 	uint32_t	entry_index:16;
161082527734SSukumar Swaminathan #endif
161182527734SSukumar Swaminathan 	uint32_t	base_adr;
161282527734SSukumar Swaminathan 	uint32_t	word_cnt;
161382527734SSukumar Swaminathan 	uint32_t	resp_offset;
161482527734SSukumar Swaminathan } DUMP_VAR;
161582527734SSukumar Swaminathan 
161682527734SSukumar Swaminathan /* Structure for MB Command DUMP */
161782527734SSukumar Swaminathan /* Good for SLI4 only */
161882527734SSukumar Swaminathan 
161982527734SSukumar Swaminathan typedef struct
162082527734SSukumar Swaminathan {
162182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
162282527734SSukumar Swaminathan 	uint32_t	ppi:4;
162382527734SSukumar Swaminathan 	uint32_t	phy_index:4;
162482527734SSukumar Swaminathan 	uint32_t	rsvd:20;
162582527734SSukumar Swaminathan 	uint32_t	type:4;
162682527734SSukumar Swaminathan 
162782527734SSukumar Swaminathan 	uint32_t	entry_index:16;
162882527734SSukumar Swaminathan 	uint32_t	region_id:16;
162982527734SSukumar Swaminathan #endif
163082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
163182527734SSukumar Swaminathan 	uint32_t	type:4;
163282527734SSukumar Swaminathan 	uint32_t	rsvd:20;
163382527734SSukumar Swaminathan 	uint32_t	phy_index:4;
163482527734SSukumar Swaminathan 	uint32_t	ppi:4;
163582527734SSukumar Swaminathan 
163682527734SSukumar Swaminathan 	uint32_t	region_id:16;
163782527734SSukumar Swaminathan 	uint32_t	entry_index:16;
163882527734SSukumar Swaminathan #endif
163982527734SSukumar Swaminathan 	uint32_t	available_cnt;
164082527734SSukumar Swaminathan 	uint32_t	addrLow;
164182527734SSukumar Swaminathan 	uint32_t	addrHigh;
164282527734SSukumar Swaminathan 	uint32_t	rsp_cnt;
164382527734SSukumar Swaminathan } DUMP4_VAR;
164482527734SSukumar Swaminathan 
164582527734SSukumar Swaminathan /*
164682527734SSukumar Swaminathan  * Dump type
164782527734SSukumar Swaminathan  */
164882527734SSukumar Swaminathan #define	DMP_MEM_REG	0x1
164982527734SSukumar Swaminathan #define	DMP_NV_PARAMS	0x2
165082527734SSukumar Swaminathan 
165182527734SSukumar Swaminathan /*
165282527734SSukumar Swaminathan  * Dump region ID
165382527734SSukumar Swaminathan  */
165482527734SSukumar Swaminathan #define	NODE_CFG_A_REGION_ID	0
165582527734SSukumar Swaminathan #define	NODE_CFG_B_REGION_ID	1
165682527734SSukumar Swaminathan #define	NODE_CFG_C_REGION_ID	2
165782527734SSukumar Swaminathan #define	NODE_CFG_D_REGION_ID	3
165882527734SSukumar Swaminathan #define	WAKE_UP_PARMS_REGION_ID	4
165982527734SSukumar Swaminathan #define	DEF_PCI_CFG_REGION_ID	5
166082527734SSukumar Swaminathan #define	PCI_CFG_1_REGION_ID	6
166182527734SSukumar Swaminathan #define	PCI_CFG_2_REGION_ID	7
166282527734SSukumar Swaminathan #define	RSVD1_REGION_ID		8
166382527734SSukumar Swaminathan #define	RSVD2_REGION_ID		9
166482527734SSukumar Swaminathan #define	RSVD3_REGION_ID		10
166582527734SSukumar Swaminathan #define	RSVD4_REGION_ID		11
166682527734SSukumar Swaminathan #define	RSVD5_REGION_ID		12
166782527734SSukumar Swaminathan #define	RSVD6_REGION_ID		13
166882527734SSukumar Swaminathan #define	RSVD7_REGION_ID		14
166982527734SSukumar Swaminathan #define	DIAG_TRACE_REGION_ID	15
167082527734SSukumar Swaminathan #define	WWN_REGION_ID		16
167182527734SSukumar Swaminathan 
167282527734SSukumar Swaminathan #define	DMP_VPD_REGION		14
167382527734SSukumar Swaminathan #define	DMP_VPD_SIZE		1024
167482527734SSukumar Swaminathan #define	DMP_VPD_DUMP_WCOUNT	24
167582527734SSukumar Swaminathan 
167682527734SSukumar Swaminathan #define	DMP_FCOE_REGION		23
167782527734SSukumar Swaminathan #define	DMP_FCOE_DUMP_WCOUNT	256
167882527734SSukumar Swaminathan 
167982527734SSukumar Swaminathan 
168082527734SSukumar Swaminathan /* Structure for MB Command UPDATE_CFG */
168182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
168282527734SSukumar Swaminathan 
168382527734SSukumar Swaminathan typedef struct
168482527734SSukumar Swaminathan {
168582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
168682527734SSukumar Swaminathan 	uint32_t	rsvd2:16;
168782527734SSukumar Swaminathan 	uint32_t	proc_type:8;
168882527734SSukumar Swaminathan 	uint32_t	rsvd1:1;
168982527734SSukumar Swaminathan 	uint32_t	Abit:1;
169082527734SSukumar Swaminathan 	uint32_t	Obit:1;
169182527734SSukumar Swaminathan 	uint32_t	Vbit:1;
169282527734SSukumar Swaminathan 	uint32_t	req_type:4;
169382527734SSukumar Swaminathan #define	INIT_REGION	1
169482527734SSukumar Swaminathan #define	UPDATE_DATA	2
169582527734SSukumar Swaminathan #define	CLEAN_UP_CFG	3
169682527734SSukumar Swaminathan 	uint32_t	entry_len:16;
169782527734SSukumar Swaminathan 	uint32_t	region_id:16;
169882527734SSukumar Swaminathan #endif
169982527734SSukumar Swaminathan 
170082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
170182527734SSukumar Swaminathan 	uint32_t	req_type:4;
170282527734SSukumar Swaminathan #define	INIT_REGION	1
170382527734SSukumar Swaminathan #define	UPDATE_DATA	2
170482527734SSukumar Swaminathan #define	CLEAN_UP_CFG	3
170582527734SSukumar Swaminathan 	uint32_t	Vbit:1;
170682527734SSukumar Swaminathan 	uint32_t	Obit:1;
170782527734SSukumar Swaminathan 	uint32_t	Abit:1;
170882527734SSukumar Swaminathan 	uint32_t	rsvd1:1;
170982527734SSukumar Swaminathan 	uint32_t	proc_type:8;
171082527734SSukumar Swaminathan 	uint32_t	rsvd2:16;
171182527734SSukumar Swaminathan 
171282527734SSukumar Swaminathan 	uint32_t	region_id:16;
171382527734SSukumar Swaminathan 	uint32_t	entry_len:16;
171482527734SSukumar Swaminathan #endif
171582527734SSukumar Swaminathan 
171682527734SSukumar Swaminathan 	uint32_t	rsp_info;
171782527734SSukumar Swaminathan 	uint32_t	byte_len;
171882527734SSukumar Swaminathan 	uint32_t	cfg_data;
171982527734SSukumar Swaminathan } UPDATE_CFG_VAR;
172082527734SSukumar Swaminathan 
172182527734SSukumar Swaminathan /* Structure for MB Command DEL_LD_ENTRY (29) */
172282527734SSukumar Swaminathan 
172382527734SSukumar Swaminathan typedef struct
172482527734SSukumar Swaminathan {
172582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
172682527734SSukumar Swaminathan 	uint32_t	list_req:2;
172782527734SSukumar Swaminathan 	uint32_t	list_rsp:2;
172882527734SSukumar Swaminathan 	uint32_t	rsvd:28;
172982527734SSukumar Swaminathan #else
173082527734SSukumar Swaminathan 	uint32_t	rsvd:28;
173182527734SSukumar Swaminathan 	uint32_t	list_rsp:2;
173282527734SSukumar Swaminathan 	uint32_t	list_req:2;
173382527734SSukumar Swaminathan #endif
173482527734SSukumar Swaminathan 
173582527734SSukumar Swaminathan #define	FLASH_LOAD_LIST	1
173682527734SSukumar Swaminathan #define	RAM_LOAD_LIST	2
173782527734SSukumar Swaminathan #define	BOTH_LISTS	3
173882527734SSukumar Swaminathan 
173982527734SSukumar Swaminathan 	PROG_ID		prog_id;
174082527734SSukumar Swaminathan } DEL_LD_ENTRY_VAR;
174182527734SSukumar Swaminathan 
174282527734SSukumar Swaminathan /* Structure for MB Command LOAD_AREA (81) */
174382527734SSukumar Swaminathan typedef struct
174482527734SSukumar Swaminathan {
174582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
174682527734SSukumar Swaminathan 	uint32_t	load_cmplt:1;
174782527734SSukumar Swaminathan 	uint32_t	method:1;
174882527734SSukumar Swaminathan 	uint32_t	rsvd1:1;
174982527734SSukumar Swaminathan 	uint32_t	update_flash:1;
175082527734SSukumar Swaminathan 	uint32_t	erase_or_prog:1;
175182527734SSukumar Swaminathan 	uint32_t	version:1;
175282527734SSukumar Swaminathan 	uint32_t	rsvd2:2;
175382527734SSukumar Swaminathan 	uint32_t	progress:8;
175482527734SSukumar Swaminathan 	uint32_t	step:8;
175582527734SSukumar Swaminathan 	uint32_t	area_id:8;
175682527734SSukumar Swaminathan #else
175782527734SSukumar Swaminathan 	uint32_t	area_id:8;
175882527734SSukumar Swaminathan 	uint32_t	step:8;
175982527734SSukumar Swaminathan 	uint32_t	progress:8;
176082527734SSukumar Swaminathan 	uint32_t	rsvd2:2;
176182527734SSukumar Swaminathan 	uint32_t	version:1;
176282527734SSukumar Swaminathan 	uint32_t	erase_or_prog:1;
176382527734SSukumar Swaminathan 	uint32_t	update_flash:1;
176482527734SSukumar Swaminathan 	uint32_t	rsvd1:1;
176582527734SSukumar Swaminathan 	uint32_t	method:1;
176682527734SSukumar Swaminathan 	uint32_t	load_cmplt:1;
176782527734SSukumar Swaminathan #endif
176882527734SSukumar Swaminathan 	uint32_t	dl_to_adr;
176982527734SSukumar Swaminathan 	uint32_t	dl_len;
177082527734SSukumar Swaminathan 	union
177182527734SSukumar Swaminathan 	{
177282527734SSukumar Swaminathan 		uint32_t	dl_from_slim_offset;
177382527734SSukumar Swaminathan 		ULP_BDE		dl_from_bde;
177482527734SSukumar Swaminathan 		ULP_BDE64	dl_from_bde64;
177582527734SSukumar Swaminathan 		PROG_ID		prog_id;
177682527734SSukumar Swaminathan 	} un;
177782527734SSukumar Swaminathan } LOAD_AREA_VAR;
177882527734SSukumar Swaminathan 
177982527734SSukumar Swaminathan /* Structure for MB Command LOAD_EXP_ROM (9C) */
178082527734SSukumar Swaminathan typedef struct
178182527734SSukumar Swaminathan {
178282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
178382527734SSukumar Swaminathan 	uint32_t	rsvd1:8;
178482527734SSukumar Swaminathan 	uint32_t	progress:8;
178582527734SSukumar Swaminathan 	uint32_t	step:8;
178682527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
178782527734SSukumar Swaminathan #else
178882527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
178982527734SSukumar Swaminathan 	uint32_t	step:8;
179082527734SSukumar Swaminathan 	uint32_t	progress:8;
179182527734SSukumar Swaminathan 	uint32_t	rsvd1:8;
179282527734SSukumar Swaminathan #endif
179382527734SSukumar Swaminathan 	uint32_t	dl_to_adr;
179482527734SSukumar Swaminathan 	uint32_t	rsvd3;
179582527734SSukumar Swaminathan 	union
179682527734SSukumar Swaminathan 	{
179782527734SSukumar Swaminathan 		uint32_t	word[2];
179882527734SSukumar Swaminathan 		PROG_ID		prog_id;
179982527734SSukumar Swaminathan 	} un;
180082527734SSukumar Swaminathan } LOAD_EXP_ROM_VAR;
180182527734SSukumar Swaminathan 
180282527734SSukumar Swaminathan 
180382527734SSukumar Swaminathan /* Structure for MB Command CONFIG_HBQ (7C) */
180482527734SSukumar Swaminathan 
180582527734SSukumar Swaminathan typedef struct
180682527734SSukumar Swaminathan {
180782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
180882527734SSukumar Swaminathan 	uint32_t	rsvd1:7;
180982527734SSukumar Swaminathan 	uint32_t	recvNotify:1;	/* Receive Notification */
181082527734SSukumar Swaminathan 	uint32_t	numMask:8;	/* # Mask Entries */
181182527734SSukumar Swaminathan 	uint32_t	profile:8;	/* Selection Profile */
181282527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
181382527734SSukumar Swaminathan #endif
181482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
181582527734SSukumar Swaminathan 	uint32_t	rsvd2:8;
181682527734SSukumar Swaminathan 	uint32_t	profile:8;	/* Selection Profile */
181782527734SSukumar Swaminathan 	uint32_t	numMask:8;	/* # Mask Entries */
181882527734SSukumar Swaminathan 	uint32_t	recvNotify:1;	/* Receive Notification */
181982527734SSukumar Swaminathan 	uint32_t	rsvd1:7;
182082527734SSukumar Swaminathan #endif
182182527734SSukumar Swaminathan 
182282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
182382527734SSukumar Swaminathan 	uint32_t	hbqId:16;
182482527734SSukumar Swaminathan 	uint32_t	rsvd3:12;
182582527734SSukumar Swaminathan 	uint32_t	ringMask:4;
182682527734SSukumar Swaminathan #endif
182782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
182882527734SSukumar Swaminathan 	uint32_t	ringMask:4;
182982527734SSukumar Swaminathan 	uint32_t	rsvd3:12;
183082527734SSukumar Swaminathan 	uint32_t	hbqId:16;
183182527734SSukumar Swaminathan #endif
183282527734SSukumar Swaminathan 
183382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
183482527734SSukumar Swaminathan 	uint32_t	numEntries:16;
183582527734SSukumar Swaminathan 	uint32_t	rsvd4:8;
183682527734SSukumar Swaminathan 	uint32_t	headerLen:8;
183782527734SSukumar Swaminathan #endif
183882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
183982527734SSukumar Swaminathan 	uint32_t	headerLen:8;
184082527734SSukumar Swaminathan 	uint32_t	rsvd4:8;
184182527734SSukumar Swaminathan 	uint32_t	numEntries:16;
184282527734SSukumar Swaminathan #endif
184382527734SSukumar Swaminathan 
184482527734SSukumar Swaminathan 	uint32_t	hbqaddrLow;
184582527734SSukumar Swaminathan 	uint32_t	hbqaddrHigh;
184682527734SSukumar Swaminathan 
184782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
184882527734SSukumar Swaminathan 	uint32_t	rsvd5:31;
184982527734SSukumar Swaminathan 	uint32_t	logEntry:1;
185082527734SSukumar Swaminathan #endif
185182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
185282527734SSukumar Swaminathan 	uint32_t	logEntry:1;
185382527734SSukumar Swaminathan 	uint32_t	rsvd5:31;
185482527734SSukumar Swaminathan #endif
185582527734SSukumar Swaminathan 
185682527734SSukumar Swaminathan 	uint32_t	rsvd6;	/* w7 */
185782527734SSukumar Swaminathan 	uint32_t	rsvd7;	/* w8 */
185882527734SSukumar Swaminathan 	uint32_t	rsvd8;	/* w9 */
185982527734SSukumar Swaminathan 
186082527734SSukumar Swaminathan 	HBQ_MASK	hbqMasks[6];
186182527734SSukumar Swaminathan 
186282527734SSukumar Swaminathan 	union
186382527734SSukumar Swaminathan 	{
186482527734SSukumar Swaminathan 		uint32_t	allprofiles[12];
186582527734SSukumar Swaminathan 
186682527734SSukumar Swaminathan 		struct
186782527734SSukumar Swaminathan 		{
186882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
186982527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
187082527734SSukumar Swaminathan 			uint32_t	maxlen:16;
187182527734SSukumar Swaminathan #endif
187282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
187382527734SSukumar Swaminathan 			uint32_t	maxlen:16;
187482527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
187582527734SSukumar Swaminathan #endif
187682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
187782527734SSukumar Swaminathan 			uint32_t	rsvd1:28;
187882527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
187982527734SSukumar Swaminathan #endif
188082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
188182527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
188282527734SSukumar Swaminathan 			uint32_t	rsvd1:28;
188382527734SSukumar Swaminathan #endif
188482527734SSukumar Swaminathan 			uint32_t	rsvd[10];
188582527734SSukumar Swaminathan 		} profile2;
188682527734SSukumar Swaminathan 
188782527734SSukumar Swaminathan 		struct
188882527734SSukumar Swaminathan 		{
188982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
189082527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
189182527734SSukumar Swaminathan 			uint32_t	maxlen:16;
189282527734SSukumar Swaminathan #endif
189382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
189482527734SSukumar Swaminathan 			uint32_t	maxlen:16;
189582527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
189682527734SSukumar Swaminathan #endif
189782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
189882527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
189982527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
190082527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
190182527734SSukumar Swaminathan #endif
190282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
190382527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
190482527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
190582527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
190682527734SSukumar Swaminathan #endif
190782527734SSukumar Swaminathan 			uint32_t	cmdmatch[8];
190882527734SSukumar Swaminathan 
190982527734SSukumar Swaminathan 			uint32_t	rsvd[2];
191082527734SSukumar Swaminathan 		} profile3;
191182527734SSukumar Swaminathan 
191282527734SSukumar Swaminathan 		struct
191382527734SSukumar Swaminathan 		{
191482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
191582527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
191682527734SSukumar Swaminathan 			uint32_t	maxlen:16;
191782527734SSukumar Swaminathan #endif
191882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
191982527734SSukumar Swaminathan 			uint32_t	maxlen:16;
192082527734SSukumar Swaminathan 			uint32_t	seqlenoff:16;
192182527734SSukumar Swaminathan #endif
192282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
192382527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
192482527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
192582527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
192682527734SSukumar Swaminathan #endif
192782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
192882527734SSukumar Swaminathan 			uint32_t	seqlenbcnt:4;
192982527734SSukumar Swaminathan 			uint32_t	rsvd1:12;
193082527734SSukumar Swaminathan 			uint32_t	cmdcodeoff:28;
193182527734SSukumar Swaminathan #endif
193282527734SSukumar Swaminathan 			uint32_t	cmdmatch[8];
193382527734SSukumar Swaminathan 
193482527734SSukumar Swaminathan 			uint32_t	rsvd[2];
193582527734SSukumar Swaminathan 		} profile5;
193682527734SSukumar Swaminathan 	} profiles;
193782527734SSukumar Swaminathan } CONFIG_HBQ_VAR;
193882527734SSukumar Swaminathan 
193982527734SSukumar Swaminathan 
194082527734SSukumar Swaminathan /* Structure for MB Command REG_VPI(0x96) */
194182527734SSukumar Swaminathan /* Good for SLI2/3 and SLI4 */
194282527734SSukumar Swaminathan 
194382527734SSukumar Swaminathan typedef struct
194482527734SSukumar Swaminathan {
194582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
194682527734SSukumar Swaminathan 	uint32_t	rsvd1;
1947a9800bebSGarrett D'Amore 	uint32_t	rsvd2:7;
1948a9800bebSGarrett D'Amore 	uint32_t	upd:1;
194982527734SSukumar Swaminathan 	uint32_t	sid:24;
1950b3660a96SSukumar Swaminathan 	uint32_t	portname[2];    /* N_PORT name */
195182527734SSukumar Swaminathan 	uint32_t	rsvd5;
195282527734SSukumar Swaminathan 	uint16_t	vfi;
195382527734SSukumar Swaminathan 	uint16_t	vpi;
195482527734SSukumar Swaminathan #endif
195582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
195682527734SSukumar Swaminathan 	uint32_t	rsvd1;
195782527734SSukumar Swaminathan 	uint32_t	sid:24;
1958a9800bebSGarrett D'Amore 	uint32_t	upd:1;
1959a9800bebSGarrett D'Amore 	uint32_t	rsvd2:7;
1960b3660a96SSukumar Swaminathan 	uint32_t	portname[2];    /* N_PORT name */
196182527734SSukumar Swaminathan 	uint32_t	rsvd5;
196282527734SSukumar Swaminathan 	uint16_t	vpi;
196382527734SSukumar Swaminathan 	uint16_t	vfi;
196482527734SSukumar Swaminathan #endif
196582527734SSukumar Swaminathan } REG_VPI_VAR;
196682527734SSukumar Swaminathan 
196782527734SSukumar Swaminathan /* Structure for MB Command INIT_VPI(0xA3) */
196882527734SSukumar Swaminathan /* Good for SLI4 only */
196982527734SSukumar Swaminathan 
197082527734SSukumar Swaminathan typedef struct
197182527734SSukumar Swaminathan {
197282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
197382527734SSukumar Swaminathan 	uint16_t	vfi;
197482527734SSukumar Swaminathan 	uint16_t	vpi;
197582527734SSukumar Swaminathan #endif
197682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
197782527734SSukumar Swaminathan 	uint16_t	vpi;
197882527734SSukumar Swaminathan 	uint16_t	vfi;
197982527734SSukumar Swaminathan #endif
198082527734SSukumar Swaminathan } INIT_VPI_VAR;
198182527734SSukumar Swaminathan 
198282527734SSukumar Swaminathan /* Structure for MB Command UNREG_VPI (0x97) */
1983e2ca2865SSukumar Swaminathan /* Good for SLI2/3 */
198482527734SSukumar Swaminathan 
198582527734SSukumar Swaminathan typedef struct
198682527734SSukumar Swaminathan {
198782527734SSukumar Swaminathan 	uint32_t	rsvd1;
1988e2ca2865SSukumar Swaminathan 	uint32_t	rsvd2;
1989e2ca2865SSukumar Swaminathan 	uint32_t	rsvd3;
1990e2ca2865SSukumar Swaminathan 	uint32_t	rsvd4;
1991e2ca2865SSukumar Swaminathan 	uint32_t	rsvd5;
199282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
1993e2ca2865SSukumar Swaminathan 	uint16_t	rsvd6;
199482527734SSukumar Swaminathan 	uint16_t	vpi;
199582527734SSukumar Swaminathan #endif
199682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
199782527734SSukumar Swaminathan 	uint16_t	vpi;
1998e2ca2865SSukumar Swaminathan 	uint16_t	rsvd6;
199982527734SSukumar Swaminathan #endif
200082527734SSukumar Swaminathan } UNREG_VPI_VAR;
200182527734SSukumar Swaminathan 
2002e2ca2865SSukumar Swaminathan /* Structure for MB Command UNREG_VPI (0x97) */
2003e2ca2865SSukumar Swaminathan /* Good for SLI4 */
2004e2ca2865SSukumar Swaminathan 
2005e2ca2865SSukumar Swaminathan typedef struct
2006e2ca2865SSukumar Swaminathan {
2007e2ca2865SSukumar Swaminathan 	uint32_t	rsvd1;
2008e2ca2865SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
2009e2ca2865SSukumar Swaminathan 	uint8_t		ii:2;
2010e2ca2865SSukumar Swaminathan 	uint16_t	rsvd2:14;
2011e2ca2865SSukumar Swaminathan 	uint16_t	index;
2012e2ca2865SSukumar Swaminathan #endif
2013e2ca2865SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
2014e2ca2865SSukumar Swaminathan 	uint16_t	index;
2015e2ca2865SSukumar Swaminathan 	uint16_t	rsvd2:14;
2016e2ca2865SSukumar Swaminathan 	uint8_t		ii:2;
2017e2ca2865SSukumar Swaminathan #endif
2018e2ca2865SSukumar Swaminathan } UNREG_VPI_VAR4;
2019e2ca2865SSukumar Swaminathan 
202082527734SSukumar Swaminathan /* Structure for MB Command REG_VFI(0x9F) */
202182527734SSukumar Swaminathan /* Good for SLI4 only */
202282527734SSukumar Swaminathan 
202382527734SSukumar Swaminathan typedef struct
202482527734SSukumar Swaminathan {
202582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
2026*8f23e9faSHans Rosenfeld 	uint16_t	rsvd1:2;
2027*8f23e9faSHans Rosenfeld 	uint16_t	upd:1;
2028*8f23e9faSHans Rosenfeld 	uint16_t	vp:1;
2029*8f23e9faSHans Rosenfeld 	uint16_t	rsvd2:12;
203082527734SSukumar Swaminathan 	uint16_t	vfi;
203182527734SSukumar Swaminathan 
203282527734SSukumar Swaminathan 	uint16_t	vpi;
203382527734SSukumar Swaminathan 	uint16_t	fcfi;
203482527734SSukumar Swaminathan 
2035b3660a96SSukumar Swaminathan 	uint32_t	portname[2];    /* N_PORT name */
203682527734SSukumar Swaminathan 
203782527734SSukumar Swaminathan 	ULP_BDE64	bde;
203882527734SSukumar Swaminathan 
203982527734SSukumar Swaminathan /* CHANGE with next firmware drop */
204082527734SSukumar Swaminathan 	uint32_t	edtov;
204182527734SSukumar Swaminathan 	uint32_t	ratov;
204282527734SSukumar Swaminathan 
204382527734SSukumar Swaminathan 	uint32_t	rsvd5:8;
204482527734SSukumar Swaminathan 	uint32_t	sid:24;
204582527734SSukumar Swaminathan #endif
204682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
204782527734SSukumar Swaminathan 	uint16_t	vfi;
2048*8f23e9faSHans Rosenfeld 	uint16_t	rsvd2:12;
2049*8f23e9faSHans Rosenfeld 	uint16_t	vp:1;
2050*8f23e9faSHans Rosenfeld 	uint16_t	upd:1;
2051*8f23e9faSHans Rosenfeld 	uint16_t	rsvd1:2;
205282527734SSukumar Swaminathan 
205382527734SSukumar Swaminathan 	uint16_t	fcfi;
205482527734SSukumar Swaminathan 	uint16_t	vpi;
205582527734SSukumar Swaminathan 
2056b3660a96SSukumar Swaminathan 	uint32_t	portname[2];    /* N_PORT name */
205782527734SSukumar Swaminathan 
205882527734SSukumar Swaminathan 	ULP_BDE64	bde;
205982527734SSukumar Swaminathan 
206082527734SSukumar Swaminathan /* CHANGE with next firmware drop */
206182527734SSukumar Swaminathan 	uint32_t	edtov;
206282527734SSukumar Swaminathan 	uint32_t	ratov;
206382527734SSukumar Swaminathan 
206482527734SSukumar Swaminathan 	uint32_t	sid:24;
206582527734SSukumar Swaminathan 	uint32_t	rsvd5:8;
206682527734SSukumar Swaminathan #endif
206782527734SSukumar Swaminathan } REG_VFI_VAR;
206882527734SSukumar Swaminathan 
206982527734SSukumar Swaminathan /* Structure for MB Command INIT_VFI(0xA4) */
207082527734SSukumar Swaminathan /* Good for SLI4 only */
207182527734SSukumar Swaminathan 
207282527734SSukumar Swaminathan typedef struct
207382527734SSukumar Swaminathan {
207482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
207582527734SSukumar Swaminathan 	uint32_t	vr:1;
207682527734SSukumar Swaminathan 	uint32_t	vt:1;
207782527734SSukumar Swaminathan 	uint32_t	vf:1;
207882527734SSukumar Swaminathan 	uint32_t	rsvd1:13;
207982527734SSukumar Swaminathan 	uint32_t	vfi:16;
208082527734SSukumar Swaminathan 
208182527734SSukumar Swaminathan 	uint16_t	rsvd2;
208282527734SSukumar Swaminathan 	uint16_t	fcfi;
208382527734SSukumar Swaminathan 
208482527734SSukumar Swaminathan 	uint32_t	rsvd3:16;
208582527734SSukumar Swaminathan 	uint32_t	pri:3;
208682527734SSukumar Swaminathan 	uint32_t	vf_id:12;
208782527734SSukumar Swaminathan 	uint32_t	rsvd4:1;
208882527734SSukumar Swaminathan 
208982527734SSukumar Swaminathan 	uint32_t	hop_count:8;
209082527734SSukumar Swaminathan 	uint32_t	rsvd5:24;
209182527734SSukumar Swaminathan #endif
209282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
209382527734SSukumar Swaminathan 	uint32_t	vfi:16;
209482527734SSukumar Swaminathan 	uint32_t	rsvd1:13;
209582527734SSukumar Swaminathan 	uint32_t	vf:1;
209682527734SSukumar Swaminathan 	uint32_t	vt:1;
209782527734SSukumar Swaminathan 	uint32_t	vr:1;
209882527734SSukumar Swaminathan 
209982527734SSukumar Swaminathan 	uint16_t	fcfi;
210082527734SSukumar Swaminathan 	uint16_t	rsvd2;
210182527734SSukumar Swaminathan 
210282527734SSukumar Swaminathan 	uint32_t	rsvd4:1;
210382527734SSukumar Swaminathan 	uint32_t	vf_id:12;
210482527734SSukumar Swaminathan 	uint32_t	pri:3;
210582527734SSukumar Swaminathan 	uint32_t	rsvd3:16;
210682527734SSukumar Swaminathan 
210782527734SSukumar Swaminathan 	uint32_t	rsvd5:24;
210882527734SSukumar Swaminathan 	uint32_t	hop_count:8;
210982527734SSukumar Swaminathan #endif
211082527734SSukumar Swaminathan } INIT_VFI_VAR;
211182527734SSukumar Swaminathan 
211282527734SSukumar Swaminathan /* Structure for MB Command UNREG_VFI (0xA1) */
211382527734SSukumar Swaminathan /* Good for SLI4 only */
211482527734SSukumar Swaminathan 
211582527734SSukumar Swaminathan typedef struct
211682527734SSukumar Swaminathan {
211782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
211882527734SSukumar Swaminathan 	uint32_t	rsvd1:3;
211982527734SSukumar Swaminathan 	uint32_t	vp:1;
212082527734SSukumar Swaminathan 	uint32_t	rsvd2:28;
212182527734SSukumar Swaminathan 
212282527734SSukumar Swaminathan 	uint16_t	vpi;
212382527734SSukumar Swaminathan 	uint16_t	vfi;
212482527734SSukumar Swaminathan #endif
212582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
212682527734SSukumar Swaminathan 	uint32_t	rsvd2:28;
212782527734SSukumar Swaminathan 	uint32_t	vp:1;
212882527734SSukumar Swaminathan 	uint32_t	rsvd1:3;
212982527734SSukumar Swaminathan 
213082527734SSukumar Swaminathan 	uint16_t	vfi;
213182527734SSukumar Swaminathan 	uint16_t	vpi;
213282527734SSukumar Swaminathan #endif
213382527734SSukumar Swaminathan } UNREG_VFI_VAR;
213482527734SSukumar Swaminathan 
213582527734SSukumar Swaminathan 
213682527734SSukumar Swaminathan 
213782527734SSukumar Swaminathan typedef struct
213882527734SSukumar Swaminathan {
213982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
214082527734SSukumar Swaminathan 	uint32_t	read_log:1;
214182527734SSukumar Swaminathan 	uint32_t	clear_log:1;
214282527734SSukumar Swaminathan 	uint32_t	mbox_rsp:1;
214382527734SSukumar Swaminathan 	uint32_t	resv:28;
214482527734SSukumar Swaminathan #endif
214582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
214682527734SSukumar Swaminathan 	uint32_t	resv:28;
214782527734SSukumar Swaminathan 	uint32_t	mbox_rsp:1;
214882527734SSukumar Swaminathan 	uint32_t	clear_log:1;
214982527734SSukumar Swaminathan 	uint32_t	read_log:1;
215082527734SSukumar Swaminathan #endif
215182527734SSukumar Swaminathan 
215282527734SSukumar Swaminathan 	uint32_t	offset;
215382527734SSukumar Swaminathan 
215482527734SSukumar Swaminathan 	union
215582527734SSukumar Swaminathan 	{
215682527734SSukumar Swaminathan 		ULP_BDE		sp;
215782527734SSukumar Swaminathan 		ULP_BDE64	sp64;
215882527734SSukumar Swaminathan 	} un;
215982527734SSukumar Swaminathan } READ_EVT_LOG_VAR;
216082527734SSukumar Swaminathan 
216182527734SSukumar Swaminathan typedef struct
216282527734SSukumar Swaminathan {
216382527734SSukumar Swaminathan 
216482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
216582527734SSukumar Swaminathan 	uint16_t	split_log_next;
216682527734SSukumar Swaminathan 	uint16_t	log_next;
216782527734SSukumar Swaminathan 
216882527734SSukumar Swaminathan 	uint32_t	size;
216982527734SSukumar Swaminathan 
217082527734SSukumar Swaminathan 	uint32_t	format:8;
217182527734SSukumar Swaminathan 	uint32_t	resv2:22;
217282527734SSukumar Swaminathan 	uint32_t	log_level:1;
217382527734SSukumar Swaminathan 	uint32_t	split_log:1;
217482527734SSukumar Swaminathan #endif
217582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
217682527734SSukumar Swaminathan 	uint16_t	log_next;
217782527734SSukumar Swaminathan 	uint16_t	split_log_next;
217882527734SSukumar Swaminathan 
217982527734SSukumar Swaminathan 	uint32_t	size;
218082527734SSukumar Swaminathan 
218182527734SSukumar Swaminathan 	uint32_t	split_log:1;
218282527734SSukumar Swaminathan 	uint32_t	log_level:1;
218382527734SSukumar Swaminathan 	uint32_t	resv2:22;
218482527734SSukumar Swaminathan 	uint32_t	format:8;
218582527734SSukumar Swaminathan #endif
218682527734SSukumar Swaminathan 
218782527734SSukumar Swaminathan 	uint32_t	offset;
218882527734SSukumar Swaminathan } LOG_STATUS_VAR;
218982527734SSukumar Swaminathan 
219082527734SSukumar Swaminathan 
219182527734SSukumar Swaminathan /* Structure for MB Command CONFIG_PORT (0x88) */
219282527734SSukumar Swaminathan typedef struct
219382527734SSukumar Swaminathan {
219482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
219582527734SSukumar Swaminathan 	uint32_t	cBE:1;
219682527734SSukumar Swaminathan 	uint32_t	cET:1;
219782527734SSukumar Swaminathan 	uint32_t	cHpcb:1;
219882527734SSukumar Swaminathan 	uint32_t	rMA:1;
219982527734SSukumar Swaminathan 	uint32_t	sli_mode:4;
220082527734SSukumar Swaminathan 	uint32_t	pcbLen:24;	/* bit 23:0 of memory based port */
220182527734SSukumar Swaminathan 					/* config block */
220282527734SSukumar Swaminathan #endif
220382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
220482527734SSukumar Swaminathan 	uint32_t	pcbLen:24;	/* bit 23:0 of memory based port */
220582527734SSukumar Swaminathan 					/* config block */
220682527734SSukumar Swaminathan 	uint32_t	sli_mode:4;
220782527734SSukumar Swaminathan 	uint32_t	rMA:1;
220882527734SSukumar Swaminathan 	uint32_t	cHpcb:1;
220982527734SSukumar Swaminathan 	uint32_t	cET:1;
221082527734SSukumar Swaminathan 	uint32_t	cBE:1;
221182527734SSukumar Swaminathan #endif
221282527734SSukumar Swaminathan 
221382527734SSukumar Swaminathan 	uint32_t	pcbLow;		/* bit 31:0 of memory based port */
221482527734SSukumar Swaminathan 					/* config block */
221582527734SSukumar Swaminathan 	uint32_t	pcbHigh; 	/* bit 63:32 of memory based port */
221682527734SSukumar Swaminathan 					/* config block */
221782527734SSukumar Swaminathan 	uint32_t	hbainit[5];
221882527734SSukumar Swaminathan 
221982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
222082527734SSukumar Swaminathan 	uint32_t	hps:1; /* Host pointers in SLIM */
222182527734SSukumar Swaminathan 	uint32_t	rsvd:31;
222282527734SSukumar Swaminathan #endif
222382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
222482527734SSukumar Swaminathan 	uint32_t	rsvd:31;
222582527734SSukumar Swaminathan 	uint32_t	hps:1; /* Host pointers in SLIM */
222682527734SSukumar Swaminathan #endif
222782527734SSukumar Swaminathan 
222882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
222982527734SSukumar Swaminathan 	uint32_t	rsvd1:24;
223082527734SSukumar Swaminathan 	uint32_t	cmv:1;		/* Configure Max VPIs */
223182527734SSukumar Swaminathan 	uint32_t	ccrp:1;		/* Config Command Ring Polling */
223282527734SSukumar Swaminathan 	uint32_t	csah:1;		/* Configure Synchronous Abort */
223382527734SSukumar Swaminathan 					/* Handling */
223482527734SSukumar Swaminathan 	uint32_t	chbs:1;		/* Cofigure Host Backing store */
223582527734SSukumar Swaminathan 	uint32_t	cinb:1;		/* Enable Interrupt Notification */
223682527734SSukumar Swaminathan 					/* Block */
223782527734SSukumar Swaminathan 	uint32_t	cerbm:1;	/* Configure Enhanced Receive */
223882527734SSukumar Swaminathan 					/* Buffer Management */
223982527734SSukumar Swaminathan 	uint32_t	cmx:1;		/* Configure Max XRIs */
224082527734SSukumar Swaminathan 	uint32_t	cmr:1;		/* Configure Max RPIs */
224182527734SSukumar Swaminathan #endif
224282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
224382527734SSukumar Swaminathan 	uint32_t	cmr:1;		/* Configure Max RPIs */
224482527734SSukumar Swaminathan 	uint32_t	cmx:1;		/* Configure Max XRIs */
224582527734SSukumar Swaminathan 	uint32_t	cerbm:1;	/* Configure Enhanced Receive */
224682527734SSukumar Swaminathan 					/* Buffer Management */
224782527734SSukumar Swaminathan 	uint32_t	cinb:1;		/* Enable Interrupt Notification */
224882527734SSukumar Swaminathan 					/* Block */
224982527734SSukumar Swaminathan 	uint32_t	chbs:1;		/* Cofigure Host Backing store */
225082527734SSukumar Swaminathan 	uint32_t	csah:1;		/* Configure Synchronous Abort */
225182527734SSukumar Swaminathan 					/* Handling */
225282527734SSukumar Swaminathan 	uint32_t	ccrp:1;		/* Config Command Ring Polling */
225382527734SSukumar Swaminathan 	uint32_t	cmv:1;		/* Configure Max VPIs */
225482527734SSukumar Swaminathan 	uint32_t	rsvd1:24;
225582527734SSukumar Swaminathan #endif
225682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
2257*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:19;	/* Reserved */
2258*8f23e9faSHans Rosenfeld 	uint32_t	gdss:1;		/* Configure Data Security SLI */
2259*8f23e9faSHans Rosenfeld 	uint32_t	rsvd3:3;	/* Reserved */
2260*8f23e9faSHans Rosenfeld 	uint32_t	gbg:1;		/* Grant BlockGuard */
226182527734SSukumar Swaminathan 	uint32_t	gmv:1;		/* Grant Max VPIs */
226282527734SSukumar Swaminathan 	uint32_t	gcrp:1;		/* Grant Command Ring Polling */
226382527734SSukumar Swaminathan 	uint32_t	gsah:1;		/* Grant Synchronous Abort Handling */
226482527734SSukumar Swaminathan 	uint32_t	ghbs:1;		/* Grant Host Backing Store */
226582527734SSukumar Swaminathan 	uint32_t	ginb:1;		/* Grant Interrupt Notification Block */
226682527734SSukumar Swaminathan 	uint32_t	gerbm:1;	/* Grant ERBM Request */
226782527734SSukumar Swaminathan 	uint32_t	gmx:1;		/* Grant Max XRIs */
226882527734SSukumar Swaminathan 	uint32_t	gmr:1;		/* Grant Max RPIs */
226982527734SSukumar Swaminathan #endif
227082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
227182527734SSukumar Swaminathan 	uint32_t	gmr:1;		/* Grant Max RPIs */
227282527734SSukumar Swaminathan 	uint32_t	gmx:1;		/* Grant Max XRIs */
227382527734SSukumar Swaminathan 	uint32_t	gerbm:1;	/* Grant ERBM Request */
227482527734SSukumar Swaminathan 	uint32_t	ginb:1;		/* Grant Interrupt Notification Block */
227582527734SSukumar Swaminathan 	uint32_t	ghbs:1;		/* Grant Host Backing Store */
227682527734SSukumar Swaminathan 	uint32_t	gsah:1;		/* Grant Synchronous Abort Handling */
227782527734SSukumar Swaminathan 	uint32_t	gcrp:1;		/* Grant Command Ring Polling */
227882527734SSukumar Swaminathan 	uint32_t	gmv:1;		/* Grant Max VPIs */
2279*8f23e9faSHans Rosenfeld 	uint32_t	gbg:1;		/* Grant BlockGuard */
2280*8f23e9faSHans Rosenfeld 	uint32_t	rsvd3:3;	/* Reserved */
2281*8f23e9faSHans Rosenfeld 	uint32_t	gdss:1;		/* Configure Data Security SLI */
2282*8f23e9faSHans Rosenfeld 	uint32_t	rsvd2:19;	/* Reserved */
228382527734SSukumar Swaminathan #endif
228482527734SSukumar Swaminathan 
228582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
228682527734SSukumar Swaminathan 	uint32_t	max_rpi:16;	/* Max RPIs Port should configure */
228782527734SSukumar Swaminathan 	uint32_t	max_xri:16;	/* Max XRIs Port should configure */
228882527734SSukumar Swaminathan #endif
228982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
229082527734SSukumar Swaminathan 	uint32_t	max_xri:16;	/* Max XRIs Port should configure */
229182527734SSukumar Swaminathan 	uint32_t	max_rpi:16;	/* Max RPIs Port should configure */
229282527734SSukumar Swaminathan #endif
229382527734SSukumar Swaminathan 
229482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
229582527734SSukumar Swaminathan 	uint32_t	max_hbq:16;	/* Max HBQs Host expect to configure */
2296*8f23e9faSHans Rosenfeld 	uint32_t	rsvd4:16;	/* Max HBQs Host expect to configure */
229782527734SSukumar Swaminathan #endif
229882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
2299*8f23e9faSHans Rosenfeld 	uint32_t	rsvd4:16;	/* Max HBQs Host expect to configure */
230082527734SSukumar Swaminathan 	uint32_t	max_hbq:16;	/* Max HBQs Host expect to configure */
230182527734SSukumar Swaminathan #endif
230282527734SSukumar Swaminathan 
2303*8f23e9faSHans Rosenfeld 	uint32_t	rsvd5;		/* Reserved */
230482527734SSukumar Swaminathan 
230582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
2306*8f23e9faSHans Rosenfeld 	uint32_t	rsvd6:16;	/* Reserved */
230782527734SSukumar Swaminathan 	uint32_t	vpi_max:16;	/* Max number of virt N-Ports */
230882527734SSukumar Swaminathan #endif
230982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
231082527734SSukumar Swaminathan 	uint32_t	vpi_max:16;	/* Max number of virt N-Ports */
2311*8f23e9faSHans Rosenfeld 	uint32_t	rsvd6:16;	/* Reserved */
231282527734SSukumar Swaminathan #endif
231382527734SSukumar Swaminathan } CONFIG_PORT_VAR;
231482527734SSukumar Swaminathan 
231582527734SSukumar Swaminathan /* Structure for MB Command REQUEST_FEATURES (0x9D) */
231682527734SSukumar Swaminathan /* Good for SLI4 only */
231782527734SSukumar Swaminathan 
231882527734SSukumar Swaminathan typedef struct
231982527734SSukumar Swaminathan {
232082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
232182527734SSukumar Swaminathan 	uint32_t	rsvd1:31;
232282527734SSukumar Swaminathan 	uint32_t	QueryMode:1;
232382527734SSukumar Swaminathan #endif
232482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
232582527734SSukumar Swaminathan 	uint32_t	QueryMode:1;
232682527734SSukumar Swaminathan 	uint32_t	rsvd1:31;
232782527734SSukumar Swaminathan #endif
232882527734SSukumar Swaminathan 
232982527734SSukumar Swaminathan 	uint32_t	featuresRequested;
233082527734SSukumar Swaminathan 	uint32_t	featuresEnabled;
233182527734SSukumar Swaminathan 
233282527734SSukumar Swaminathan } REQUEST_FEATURES_VAR;
233382527734SSukumar Swaminathan 
2334*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_INHIBIT_AUTO_ABTS		0x0001
2335*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_NPIV			0x0002
2336*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_DIF			0x0004
2337*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_VIRTUAL_FABRICS		0x0008
2338*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_FCP_INITIATOR		0x0010
2339*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_FCP_TARGET			0x0020
2340*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_FCP_COMBO			0x0040
2341*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_RSVD1			0x0080
2342*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_RQD			0x0100
2343*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_INHIBIT_AUTO_ABTS_R	0x0200
2344*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_HIGH_LOGIN_MODE		0x0400
2345*8f23e9faSHans Rosenfeld #define	SLI4_FEATURE_PERF_HINT			0x0800
234682527734SSukumar Swaminathan 
234782527734SSukumar Swaminathan 
234882527734SSukumar Swaminathan /* SLI-2 Port Control Block */
234982527734SSukumar Swaminathan 
235082527734SSukumar Swaminathan /* SLIM POINTER */
235182527734SSukumar Swaminathan #define	SLIMOFF	0x30	/* WORD */
235282527734SSukumar Swaminathan 
235382527734SSukumar Swaminathan typedef struct _SLI2_RDSC
235482527734SSukumar Swaminathan {
235582527734SSukumar Swaminathan 	uint32_t	cmdEntries;
235682527734SSukumar Swaminathan 	uint32_t	cmdAddrLow;
235782527734SSukumar Swaminathan 	uint32_t	cmdAddrHigh;
235882527734SSukumar Swaminathan 
235982527734SSukumar Swaminathan 	uint32_t	rspEntries;
236082527734SSukumar Swaminathan 	uint32_t	rspAddrLow;
236182527734SSukumar Swaminathan 	uint32_t	rspAddrHigh;
236282527734SSukumar Swaminathan } SLI2_RDSC;
236382527734SSukumar Swaminathan 
236482527734SSukumar Swaminathan typedef struct _PCB
236582527734SSukumar Swaminathan {
236682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
236782527734SSukumar Swaminathan 	uint32_t	type:8;
236882527734SSukumar Swaminathan #define	TYPE_NATIVE_SLI2	0x01;
236982527734SSukumar Swaminathan 	uint32_t	feature:8;
237082527734SSukumar Swaminathan #define	FEATURE_INITIAL_SLI2	0x01;
237182527734SSukumar Swaminathan 	uint32_t	rsvd:12;
237282527734SSukumar Swaminathan 	uint32_t	maxRing:4;
237382527734SSukumar Swaminathan #endif
237482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
237582527734SSukumar Swaminathan 	uint32_t	maxRing:4;
237682527734SSukumar Swaminathan 	uint32_t	rsvd:12;
237782527734SSukumar Swaminathan 	uint32_t	feature:8;
237882527734SSukumar Swaminathan #define	FEATURE_INITIAL_SLI2	0x01;
237982527734SSukumar Swaminathan 	uint32_t	type:8;
238082527734SSukumar Swaminathan #define	TYPE_NATIVE_SLI2	0x01;
238182527734SSukumar Swaminathan #endif
238282527734SSukumar Swaminathan 
238382527734SSukumar Swaminathan 	uint32_t	mailBoxSize;
238482527734SSukumar Swaminathan 	uint32_t	mbAddrLow;
238582527734SSukumar Swaminathan 	uint32_t	mbAddrHigh;
238682527734SSukumar Swaminathan 
238782527734SSukumar Swaminathan 	uint32_t	hgpAddrLow;
238882527734SSukumar Swaminathan 	uint32_t	hgpAddrHigh;
238982527734SSukumar Swaminathan 
239082527734SSukumar Swaminathan 	uint32_t	pgpAddrLow;
239182527734SSukumar Swaminathan 	uint32_t	pgpAddrHigh;
239282527734SSukumar Swaminathan 	SLI2_RDSC	rdsc[MAX_RINGS_AVAILABLE];
239382527734SSukumar Swaminathan } PCB;
239482527734SSukumar Swaminathan 
239582527734SSukumar Swaminathan /* NEW_FEATURE */
239682527734SSukumar Swaminathan typedef struct
239782527734SSukumar Swaminathan {
239882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
239982527734SSukumar Swaminathan 	uint32_t	rsvd0:27;
240082527734SSukumar Swaminathan 	uint32_t	discardFarp:1;
240182527734SSukumar Swaminathan 	uint32_t	IPEnable:1;
240282527734SSukumar Swaminathan 	uint32_t	nodeName:1;
240382527734SSukumar Swaminathan 	uint32_t	portName:1;
240482527734SSukumar Swaminathan 	uint32_t	filterEnable:1;
240582527734SSukumar Swaminathan #endif
240682527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
240782527734SSukumar Swaminathan 	uint32_t	filterEnable:1;
240882527734SSukumar Swaminathan 	uint32_t	portName:1;
240982527734SSukumar Swaminathan 	uint32_t	nodeName:1;
241082527734SSukumar Swaminathan 	uint32_t	IPEnable:1;
241182527734SSukumar Swaminathan 	uint32_t	discardFarp:1;
241282527734SSukumar Swaminathan 	uint32_t	rsvd:27;
241382527734SSukumar Swaminathan #endif
241482527734SSukumar Swaminathan 	NAME_TYPE	portname;
241582527734SSukumar Swaminathan 	NAME_TYPE	nodename;
241682527734SSukumar Swaminathan 	uint32_t	rsvd1;
241782527734SSukumar Swaminathan 	uint32_t	rsvd2;
241882527734SSukumar Swaminathan 	uint32_t	rsvd3;
241982527734SSukumar Swaminathan 	uint32_t	IPAddress;
242082527734SSukumar Swaminathan } CONFIG_FARP_VAR;
242182527734SSukumar Swaminathan 
242282527734SSukumar Swaminathan 
242382527734SSukumar Swaminathan /* NEW_FEATURE */
242482527734SSukumar Swaminathan typedef struct
242582527734SSukumar Swaminathan {
242682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
242782527734SSukumar Swaminathan 	uint32_t	defaultMessageNumber:16;
242882527734SSukumar Swaminathan 	uint32_t	rsvd1:3;
242982527734SSukumar Swaminathan 	uint32_t	nid:5;
243082527734SSukumar Swaminathan 	uint32_t	rsvd2:5;
243182527734SSukumar Swaminathan 	uint32_t	defaultPresent:1;
243282527734SSukumar Swaminathan 	uint32_t	addAssociations:1;
243382527734SSukumar Swaminathan 	uint32_t	reportAssociations:1;
243482527734SSukumar Swaminathan #endif
243582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
243682527734SSukumar Swaminathan 	uint32_t	reportAssociations:1;
243782527734SSukumar Swaminathan 	uint32_t	addAssociations:1;
243882527734SSukumar Swaminathan 	uint32_t	defaultPresent:1;
243982527734SSukumar Swaminathan 	uint32_t	rsvd2:5;
244082527734SSukumar Swaminathan 	uint32_t	nid:5;
244182527734SSukumar Swaminathan 	uint32_t	rsvd1:3;
244282527734SSukumar Swaminathan 	uint32_t	defaultMessageNumber:16;
244382527734SSukumar Swaminathan #endif
244482527734SSukumar Swaminathan 	uint32_t	attConditions;
244582527734SSukumar Swaminathan 	uint8_t		attentionId[16];
244682527734SSukumar Swaminathan 	uint16_t	messageNumberByHA[32];
244782527734SSukumar Swaminathan 	uint16_t	messageNumberByID[16];
244882527734SSukumar Swaminathan 	uint32_t	rsvd3;
244982527734SSukumar Swaminathan } CONFIG_MSI_VAR;
245082527734SSukumar Swaminathan 
245182527734SSukumar Swaminathan 
245282527734SSukumar Swaminathan /* NEW_FEATURE */
245382527734SSukumar Swaminathan typedef struct
245482527734SSukumar Swaminathan {
245582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
245682527734SSukumar Swaminathan 	uint32_t	defaultMessageNumber:8;
245782527734SSukumar Swaminathan 	uint32_t	rsvd1:11;
245882527734SSukumar Swaminathan 	uint32_t	nid:5;
245982527734SSukumar Swaminathan 	uint32_t	rsvd2:5;
246082527734SSukumar Swaminathan 	uint32_t	defaultPresent:1;
246182527734SSukumar Swaminathan 	uint32_t	addAssociations:1;
246282527734SSukumar Swaminathan 	uint32_t	reportAssociations:1;
246382527734SSukumar Swaminathan #endif
246482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
246582527734SSukumar Swaminathan 	uint32_t	reportAssociations:1;
246682527734SSukumar Swaminathan 	uint32_t	addAssociations:1;
246782527734SSukumar Swaminathan 	uint32_t	defaultPresent:1;
246882527734SSukumar Swaminathan 	uint32_t	rsvd2:5;
246982527734SSukumar Swaminathan 	uint32_t	nid:5;
247082527734SSukumar Swaminathan 	uint32_t	rsvd1:11;
247182527734SSukumar Swaminathan 	uint32_t	defaultMessageNumber:8;
247282527734SSukumar Swaminathan #endif
247382527734SSukumar Swaminathan 	uint32_t	attConditions1;
247482527734SSukumar Swaminathan 	uint32_t	attConditions2;
247582527734SSukumar Swaminathan 	uint8_t		attentionId[16];
247682527734SSukumar Swaminathan 	uint8_t		messageNumberByHA[64];
247782527734SSukumar Swaminathan 	uint8_t		messageNumberByID[16];
247882527734SSukumar Swaminathan 	uint32_t	autoClearByHA1;
247982527734SSukumar Swaminathan 	uint32_t	autoClearByHA2;
248082527734SSukumar Swaminathan 	uint32_t	autoClearByID;
248182527734SSukumar Swaminathan 	uint32_t	resv3;
248282527734SSukumar Swaminathan } CONFIG_MSIX_VAR;
248382527734SSukumar Swaminathan 
248482527734SSukumar Swaminathan 
248582527734SSukumar Swaminathan /* Union of all Mailbox Command types */
248682527734SSukumar Swaminathan 
248782527734SSukumar Swaminathan typedef union
248882527734SSukumar Swaminathan {
248982527734SSukumar Swaminathan 	uint32_t		varWords[31];
249082527734SSukumar Swaminathan 	LOAD_SM_VAR		varLdSM;	/* cmd =  1 (LOAD_SM) */
249182527734SSukumar Swaminathan 	READ_NV_VAR		varRDnvp;	/* cmd =  2 (READ_NVPARMS) */
249282527734SSukumar Swaminathan 	WRITE_NV_VAR		varWTnvp;	/* cmd =  3 (WRITE_NVPARMS) */
249382527734SSukumar Swaminathan 	BIU_DIAG_VAR		varBIUdiag;	/* cmd =  4 (RUN_BIU_DIAG) */
249482527734SSukumar Swaminathan 	INIT_LINK_VAR		varInitLnk;	/* cmd =  5 (INIT_LINK) */
249582527734SSukumar Swaminathan 	DOWN_LINK_VAR		varDwnLnk;	/* cmd =  6 (DOWN_LINK) */
249682527734SSukumar Swaminathan 	CONFIG_LINK		varCfgLnk;	/* cmd =  7 (CONFIG_LINK) */
249782527734SSukumar Swaminathan 	PART_SLIM_VAR		varSlim;	/* cmd =  8 (PART_SLIM) */
249882527734SSukumar Swaminathan 	CONFIG_RING_VAR		varCfgRing;	/* cmd =  9 (CONFIG_RING) */
249982527734SSukumar Swaminathan 	RESET_RING_VAR		varRstRing;	/* cmd = 10 (RESET_RING) */
250082527734SSukumar Swaminathan 	READ_CONFIG_VAR		varRdConfig;	/* cmd = 11 (READ_CONFIG) */
250182527734SSukumar Swaminathan 	READ_RCONF_VAR		varRdRConfig;	/* cmd = 12 (READ_RCONFIG) */
250282527734SSukumar Swaminathan 	READ_SPARM_VAR		varRdSparm;	/* cmd = 13 (READ_SPARM(64)) */
250382527734SSukumar Swaminathan 	READ_STATUS_VAR		varRdStatus;	/* cmd = 14 (READ_STATUS) */
250482527734SSukumar Swaminathan 	READ_RPI_VAR		varRdRPI;	/* cmd = 15 (READ_RPI(64)) */
250582527734SSukumar Swaminathan 	READ_XRI_VAR		varRdXRI;	/* cmd = 16 (READ_XRI) */
250682527734SSukumar Swaminathan 	READ_REV_VAR		varRdRev;	/* cmd = 17 (READ_REV) */
250782527734SSukumar Swaminathan 	READ_LNK_VAR		varRdLnk;	/* cmd = 18 (READ_LNK_STAT) */
250882527734SSukumar Swaminathan 	REG_LOGIN_VAR		varRegLogin;	/* cmd = 19 (REG_LOGIN(64)) */
250982527734SSukumar Swaminathan 	UNREG_LOGIN_VAR		varUnregLogin;	/* cmd = 20 (UNREG_LOGIN) */
251082527734SSukumar Swaminathan 	READ_LA_VAR		varReadLA;	/* cmd = 21 (READ_LA(64)) */
251182527734SSukumar Swaminathan 	CLEAR_LA_VAR		varClearLA;	/* cmd = 22 (CLEAR_LA) */
251282527734SSukumar Swaminathan 	DUMP_VAR		varDmp;		/* Warm Start DUMP mbx cmd */
251382527734SSukumar Swaminathan 	UPDATE_CFG_VAR		varUpdateCfg;	/* cmd = 0x1b Warm Start */
251482527734SSukumar Swaminathan 						/* UPDATE_CFG cmd */
251582527734SSukumar Swaminathan 	DEL_LD_ENTRY_VAR	varDelLdEntry;	/* cmd = 0x1d (DEL_LD_ENTRY) */
251682527734SSukumar Swaminathan 	UNREG_D_ID_VAR		varUnregDID;	/* cmd = 0x23 (UNREG_D_ID) */
251782527734SSukumar Swaminathan 	CONFIG_FARP_VAR		varCfgFarp;	/* cmd = 0x25 (CONFIG_FARP) */
251882527734SSukumar Swaminathan 	CONFIG_MSI_VAR		varCfgMSI;	/* cmd = 0x90 (CONFIG_MSI) */
251982527734SSukumar Swaminathan 	CONFIG_MSIX_VAR		varCfgMSIX;	/* cmd = 0x30 (CONFIG_MSIX) */
252082527734SSukumar Swaminathan 	CONFIG_HBQ_VAR		varCfgHbq;	/* cmd = 0x7C (CONFIG_HBQ) */
252182527734SSukumar Swaminathan 	LOAD_AREA_VAR		varLdArea;	/* cmd = 0x81 (LOAD_AREA) */
252282527734SSukumar Swaminathan 	CONFIG_PORT_VAR		varCfgPort;	/* cmd = 0x88 (CONFIG_PORT) */
252382527734SSukumar Swaminathan 	LOAD_EXP_ROM_VAR	varLdExpRom;	/* cmd = 0x9C (LOAD_XP_ROM) */
252482527734SSukumar Swaminathan 	REG_VPI_VAR		varRegVpi;	/* cmd = 0x96 (REG_VPI) */
252582527734SSukumar Swaminathan 	UNREG_VPI_VAR		varUnregVpi;	/* cmd = 0x97 (UNREG_VPI) */
252682527734SSukumar Swaminathan 	READ_EVT_LOG_VAR	varRdEvtLog;	/* cmd = 0x38 (READ_EVT_LOG) */
252782527734SSukumar Swaminathan 	LOG_STATUS_VAR		varLogStat;	/* cmd = 0x37 */
252882527734SSukumar Swaminathan 
252982527734SSukumar Swaminathan } MAILVARIANTS;
253082527734SSukumar Swaminathan 
253182527734SSukumar Swaminathan #define	MAILBOX_CMD_BSIZE	128
253282527734SSukumar Swaminathan #define	MAILBOX_CMD_WSIZE	32
253382527734SSukumar Swaminathan 
253482527734SSukumar Swaminathan /*
253582527734SSukumar Swaminathan  * SLI-2 specific structures
253682527734SSukumar Swaminathan  */
253782527734SSukumar Swaminathan 
253882527734SSukumar Swaminathan typedef struct _SLI1_DESC
253982527734SSukumar Swaminathan {
254082527734SSukumar Swaminathan 	emlxs_rings_t	mbxCring[4];
254182527734SSukumar Swaminathan 	uint32_t	mbxUnused[24];
254282527734SSukumar Swaminathan } SLI1_DESC; /* 128 bytes */
254382527734SSukumar Swaminathan 
254482527734SSukumar Swaminathan typedef struct
254582527734SSukumar Swaminathan {
254682527734SSukumar Swaminathan 	uint32_t	cmdPutInx;
254782527734SSukumar Swaminathan 	uint32_t	rspGetInx;
254882527734SSukumar Swaminathan } HGP;
254982527734SSukumar Swaminathan 
255082527734SSukumar Swaminathan typedef struct
255182527734SSukumar Swaminathan {
255282527734SSukumar Swaminathan 	uint32_t	cmdGetInx;
255382527734SSukumar Swaminathan 	uint32_t	rspPutInx;
255482527734SSukumar Swaminathan } PGP;
255582527734SSukumar Swaminathan 
255682527734SSukumar Swaminathan typedef struct _SLI2_DESC
255782527734SSukumar Swaminathan {
255882527734SSukumar Swaminathan 	HGP		host[4];
255982527734SSukumar Swaminathan 	PGP		port[4];
256082527734SSukumar Swaminathan 	uint32_t	HBQ_PortGetIdx[16];
256182527734SSukumar Swaminathan } SLI2_DESC; /* 128 bytes */
256282527734SSukumar Swaminathan 
256382527734SSukumar Swaminathan typedef union
256482527734SSukumar Swaminathan {
256582527734SSukumar Swaminathan 	SLI1_DESC	s1;	/* 32 words, 128 bytes */
256682527734SSukumar Swaminathan 	SLI2_DESC	s2;	/* 32 words, 128 bytes */
256782527734SSukumar Swaminathan } SLI_VAR;
256882527734SSukumar Swaminathan 
256982527734SSukumar Swaminathan typedef volatile struct
257082527734SSukumar Swaminathan {
257182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
257282527734SSukumar Swaminathan 	uint16_t	mbxStatus;
257382527734SSukumar Swaminathan 	uint8_t		mbxCommand;
257482527734SSukumar Swaminathan 	uint8_t		mbxReserved:6;
257582527734SSukumar Swaminathan 	uint8_t		mbxHc:1;
257682527734SSukumar Swaminathan 	uint8_t		mbxOwner:1;	/* Low order bit first word */
257782527734SSukumar Swaminathan #endif
257882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
257982527734SSukumar Swaminathan 	uint8_t		mbxOwner:1;	/* Low order bit first word */
258082527734SSukumar Swaminathan 	uint8_t		mbxHc:1;
258182527734SSukumar Swaminathan 	uint8_t		mbxReserved:6;
258282527734SSukumar Swaminathan 	uint8_t		mbxCommand;
258382527734SSukumar Swaminathan 	uint16_t	mbxStatus;
258482527734SSukumar Swaminathan #endif
258582527734SSukumar Swaminathan 	MAILVARIANTS	un;		/* 124 bytes */
258682527734SSukumar Swaminathan 	SLI_VAR		us;		/* 128 bytes */
258782527734SSukumar Swaminathan } MAILBOX;				/* 256 bytes */
258882527734SSukumar Swaminathan 
258982527734SSukumar Swaminathan 
259082527734SSukumar Swaminathan 
259182527734SSukumar Swaminathan /* SLI4 IOCTL Mailbox */
259282527734SSukumar Swaminathan /* ALL SLI4 specific mbox commands have a standard request /response header */
259382527734SSukumar Swaminathan /* Word 0 is just like SLI 3 */
259482527734SSukumar Swaminathan 
259582527734SSukumar Swaminathan typedef struct mbox_req_hdr
259682527734SSukumar Swaminathan {
259782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
259882527734SSukumar Swaminathan 	uint32_t	domain:8;		/* word 6 */
259982527734SSukumar Swaminathan 	uint32_t	port:8;
260082527734SSukumar Swaminathan 	uint32_t	subsystem:8;
260182527734SSukumar Swaminathan 	uint32_t	opcode:8;
2602*8f23e9faSHans Rosenfeld 
2603*8f23e9faSHans Rosenfeld 	uint32_t	timeout;		/* word 7 */
2604*8f23e9faSHans Rosenfeld 
2605*8f23e9faSHans Rosenfeld 	uint32_t	req_length;		/* word 8 */
2606*8f23e9faSHans Rosenfeld 
2607*8f23e9faSHans Rosenfeld 	uint32_t	reserved1:24;		/* word 9 */
2608*8f23e9faSHans Rosenfeld 	uint32_t	version:8;		/* word 9 */
260982527734SSukumar Swaminathan #endif
261082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
261182527734SSukumar Swaminathan 	uint32_t	opcode:8;
261282527734SSukumar Swaminathan 	uint32_t	subsystem:8;
261382527734SSukumar Swaminathan 	uint32_t	port:8;
261482527734SSukumar Swaminathan 	uint32_t	domain:8;		/* word 6 */
2615*8f23e9faSHans Rosenfeld 
261682527734SSukumar Swaminathan 	uint32_t	timeout;		/* word 7 */
2617*8f23e9faSHans Rosenfeld 
261882527734SSukumar Swaminathan 	uint32_t	req_length;		/* word 8 */
2619*8f23e9faSHans Rosenfeld 
2620*8f23e9faSHans Rosenfeld 	uint32_t	version:8;		/* word 9 */
2621*8f23e9faSHans Rosenfeld 	uint32_t	reserved1:24;		/* word 9 */
2622*8f23e9faSHans Rosenfeld #endif
2623*8f23e9faSHans Rosenfeld 
262482527734SSukumar Swaminathan } mbox_req_hdr_t;
262582527734SSukumar Swaminathan 
2626*8f23e9faSHans Rosenfeld 
2627*8f23e9faSHans Rosenfeld typedef struct mbox_req_hdr2
2628*8f23e9faSHans Rosenfeld {
2629*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
2630*8f23e9faSHans Rosenfeld 	uint32_t	vf_number:16;		/* word 6 */
2631*8f23e9faSHans Rosenfeld 	uint32_t	subsystem:8;
2632*8f23e9faSHans Rosenfeld 	uint32_t	opcode:8;
2633*8f23e9faSHans Rosenfeld 
2634*8f23e9faSHans Rosenfeld 	uint32_t	timeout;		/* word 7 */
2635*8f23e9faSHans Rosenfeld 
2636*8f23e9faSHans Rosenfeld 	uint32_t	req_length;		/* word 8 */
2637*8f23e9faSHans Rosenfeld 
2638*8f23e9faSHans Rosenfeld 	uint32_t	vh_number:6;		/* word 9 */
2639*8f23e9faSHans Rosenfeld 	uint32_t	pf_number:10;
2640*8f23e9faSHans Rosenfeld 	uint32_t	reserved1:8;
2641*8f23e9faSHans Rosenfeld 	uint32_t	version:8;
2642*8f23e9faSHans Rosenfeld #endif
2643*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
2644*8f23e9faSHans Rosenfeld 	uint32_t	opcode:8;
2645*8f23e9faSHans Rosenfeld 	uint32_t	subsystem:8;
2646*8f23e9faSHans Rosenfeld 	uint32_t	vf_number:16;		/* word 6 */
2647*8f23e9faSHans Rosenfeld 
2648*8f23e9faSHans Rosenfeld 	uint32_t	timeout;		/* word 7 */
2649*8f23e9faSHans Rosenfeld 
2650*8f23e9faSHans Rosenfeld 	uint32_t	req_length;		/* word 8 */
2651*8f23e9faSHans Rosenfeld 
2652*8f23e9faSHans Rosenfeld 	uint32_t	version:8;
2653*8f23e9faSHans Rosenfeld 	uint32_t	reserved1:8;
2654*8f23e9faSHans Rosenfeld 	uint32_t	pf_number:10;
2655*8f23e9faSHans Rosenfeld 	uint32_t	vh_number:6;		/* word 9 */
2656*8f23e9faSHans Rosenfeld #endif
2657*8f23e9faSHans Rosenfeld 
2658*8f23e9faSHans Rosenfeld } mbox_req_hdr2_t;
2659*8f23e9faSHans Rosenfeld 
266082527734SSukumar Swaminathan typedef struct mbox_rsp_hdr
266182527734SSukumar Swaminathan {
266282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
266382527734SSukumar Swaminathan 	uint32_t	domain:8;		/* word 6 */
266482527734SSukumar Swaminathan 	uint32_t	reserved1:8;
266582527734SSukumar Swaminathan 	uint32_t	subsystem:8;
266682527734SSukumar Swaminathan 	uint32_t	opcode:8;
266782527734SSukumar Swaminathan 
266882527734SSukumar Swaminathan 	uint32_t	reserved2:16;		/* word 7 */
266982527734SSukumar Swaminathan 	uint32_t	extra_status:8;
267082527734SSukumar Swaminathan 	uint32_t	status:8;
267182527734SSukumar Swaminathan #endif
267282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
267382527734SSukumar Swaminathan 	uint32_t	opcode:8;
267482527734SSukumar Swaminathan 	uint32_t	subsystem:8;
267582527734SSukumar Swaminathan 	uint32_t	reserved1:8;
267682527734SSukumar Swaminathan 	uint32_t	domain:8;		/* word 6 */
267782527734SSukumar Swaminathan 
267882527734SSukumar Swaminathan 	uint32_t	status:8;
267982527734SSukumar Swaminathan 	uint32_t	extra_status:8;
268082527734SSukumar Swaminathan 	uint32_t	reserved2:16;		/* word 7 */
268182527734SSukumar Swaminathan #endif
268282527734SSukumar Swaminathan 	uint32_t	rsp_length;		/* word 8 */
268382527734SSukumar Swaminathan 	uint32_t	allocated_length;	/* word 9 */
268482527734SSukumar Swaminathan } mbox_rsp_hdr_t;
268582527734SSukumar Swaminathan 
2686a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_SUCCESS		0x00
2687a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_FAILED		0x01
2688a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_ILLEGAL_REQ	0x02
2689a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_ILLEGAL_FIELD	0x03
2690a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_FCF_IN_USE	0x3A
2691a9800bebSGarrett D'Amore #define	MBX_RSP_STATUS_NO_FCF		0x43
2692a9800bebSGarrett D'Amore 
2693*8f23e9faSHans Rosenfeld #define	MGMT_ADDI_STATUS_INCOMPATIBLE	0xA2
2694*8f23e9faSHans Rosenfeld 
269582527734SSukumar Swaminathan typedef struct be_req_hdr
269682527734SSukumar Swaminathan {
269782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
269882527734SSukumar Swaminathan 	uint32_t	special:8;		/* word 1 */
269982527734SSukumar Swaminathan 	uint32_t	reserved2:16;		/* word 1 */
270082527734SSukumar Swaminathan 	uint32_t	sge_cnt:5;		/* word 1 */
270182527734SSukumar Swaminathan 	uint32_t	reserved1:2;		/* word 1 */
270282527734SSukumar Swaminathan 	uint32_t	embedded:1;		/* word 1 */
270382527734SSukumar Swaminathan #endif
270482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
270582527734SSukumar Swaminathan 	uint32_t	embedded:1;		/* word 1 */
270682527734SSukumar Swaminathan 	uint32_t	reserved1:2;		/* word 1 */
270782527734SSukumar Swaminathan 	uint32_t	sge_cnt:5;		/* word 1 */
270882527734SSukumar Swaminathan 	uint32_t	reserved2:16;		/* word 1 */
270982527734SSukumar Swaminathan 	uint32_t	special:8;		/* word 1 */
271082527734SSukumar Swaminathan #endif
271182527734SSukumar Swaminathan 	uint32_t	payload_length;		/* word 2 */
271282527734SSukumar Swaminathan 	uint32_t	tag_low;		/* word 3 */
271382527734SSukumar Swaminathan 	uint32_t	tag_hi;			/* word 4 */
271482527734SSukumar Swaminathan 	uint32_t	reserved3;		/* word 5 */
271582527734SSukumar Swaminathan 	union
271682527734SSukumar Swaminathan 	{
271782527734SSukumar Swaminathan 		mbox_req_hdr_t	hdr_req;
2718*8f23e9faSHans Rosenfeld 		mbox_req_hdr2_t hdr_req2;
271982527734SSukumar Swaminathan 		mbox_rsp_hdr_t	hdr_rsp;
272082527734SSukumar Swaminathan 	} un_hdr;
272182527734SSukumar Swaminathan } be_req_hdr_t;
272282527734SSukumar Swaminathan 
272382527734SSukumar Swaminathan #define	EMLXS_MAX_NONEMBED_SIZE		(1024 * 64)
272482527734SSukumar Swaminathan 
272582527734SSukumar Swaminathan /* SLI_CONFIG Mailbox commands */
272682527734SSukumar Swaminathan 
272782527734SSukumar Swaminathan #define	IOCTL_SUBSYSTEM_COMMON			0x01
272882527734SSukumar Swaminathan #define	IOCTL_SUBSYSTEM_FCOE			0x0C
272982527734SSukumar Swaminathan #define	IOCTL_SUBSYSTEM_DCBX			0x10
273082527734SSukumar Swaminathan 
273182527734SSukumar Swaminathan #define	COMMON_OPCODE_READ_FLASHROM		0x06
273282527734SSukumar Swaminathan #define	COMMON_OPCODE_WRITE_FLASHROM		0x07
273382527734SSukumar Swaminathan #define	COMMON_OPCODE_CQ_CREATE			0x0C
273482527734SSukumar Swaminathan #define	COMMON_OPCODE_EQ_CREATE			0x0D
273582527734SSukumar Swaminathan #define	COMMON_OPCODE_MQ_CREATE 		0x15
273682527734SSukumar Swaminathan #define	COMMON_OPCODE_GET_CNTL_ATTRIB		0x20
273782527734SSukumar Swaminathan #define	COMMON_OPCODE_NOP			0x21
273882527734SSukumar Swaminathan #define	COMMON_OPCODE_QUERY_FIRMWARE_CONFIG	0x3A
273982527734SSukumar Swaminathan #define	COMMON_OPCODE_RESET			0x3D
2740*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_PHYSICAL_LINK_CFG_V1	0x3E
2741*8f23e9faSHans Rosenfeld 
2742*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_BOOT_CFG		0x42
2743*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_BOOT_CFG		0x43
274482527734SSukumar Swaminathan #define	COMMON_OPCODE_MANAGE_FAT		0x44
2745*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PHYSICAL_LINK_CFG_V1	0x47
2746*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PORT_NAME		0x4D
2747*8f23e9faSHans Rosenfeld 
2748*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_MQ_CREATE_EXT		0x5A
2749*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_VPD_DATA		0x5B
2750*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PHY_DETAILS		0x66
2751*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SEND_ACTIVATION		0x73
2752*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_RESET_LICENSES		0x74
2753*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_CNTL_ADDL_ATTRIB	0x79
2754*8f23e9faSHans Rosenfeld 
2755*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_EXTENTS_INFO		0x9A
2756*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_EXTENTS		0x9B
2757*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_ALLOC_EXTENTS		0x9C
2758*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_DEALLOC_EXTENTS		0x9D
2759*8f23e9faSHans Rosenfeld 
2760*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PROFILE_CAPS		0xA1
2761*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_MR_PROFILE_CAPS	0xA2
2762*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_MR_PROFILE_CAPS	0xA3
2763*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PROFILE_CFG		0xA4
2764*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_PROFILE_CFG		0xA5
2765*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_PROFILE_LIST		0xA6
2766*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_ACTIVE_PROFILE	0xA7
2767*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_ACTIVE_PROFILE	0xA8
2768*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_SET_FACTORY_PROFILE_CFG	0xA9
2769*8f23e9faSHans Rosenfeld 
2770*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_READ_OBJ			0xAB
2771*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_WRITE_OBJ			0xAC
2772*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_READ_OBJ_LIST		0xAD
2773*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_DELETE_OBJ		0xAE
2774*8f23e9faSHans Rosenfeld #define	COMMON_OPCODE_GET_SLI4_PARAMS		0xB5
277582527734SSukumar Swaminathan 
277682527734SSukumar Swaminathan #define	FCOE_OPCODE_WQ_CREATE			0x01
277782527734SSukumar Swaminathan #define	FCOE_OPCODE_CFG_POST_SGL_PAGES		0x03
277882527734SSukumar Swaminathan #define	FCOE_OPCODE_RQ_CREATE			0x05
277982527734SSukumar Swaminathan #define	FCOE_OPCODE_READ_FCF_TABLE		0x08
278082527734SSukumar Swaminathan #define	FCOE_OPCODE_ADD_FCF_TABLE		0x09
2781a9800bebSGarrett D'Amore #define	FCOE_OPCODE_DELETE_FCF_TABLE		0x0A
278282527734SSukumar Swaminathan #define	FCOE_OPCODE_POST_HDR_TEMPLATES		0x0B
2783a9800bebSGarrett D'Amore #define	FCOE_OPCODE_REDISCOVER_FCF_TABLE	0x10
2784*8f23e9faSHans Rosenfeld #define	FCOE_OPCODE_SET_FCLINK_SETTINGS		0x21
278582527734SSukumar Swaminathan 
278682527734SSukumar Swaminathan #define	DCBX_OPCODE_GET_DCBX_MODE		0x04
278782527734SSukumar Swaminathan #define	DCBX_OPCODE_SET_DCBX_MODE		0x05
278882527734SSukumar Swaminathan 
278982527734SSukumar Swaminathan typedef	struct
279082527734SSukumar Swaminathan {
279182527734SSukumar Swaminathan 	struct
279282527734SSukumar Swaminathan 	{
279382527734SSukumar Swaminathan 		uint32_t opcode;
279482527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_FLASH		1
279582527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_SAVE		2
279682527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_CLEAR		3
279782527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_REPORT		4
279882527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_INFO		5
279982527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPCODE_CRC		6
2800*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPCODE_OFFSET_FLASH	7
2801*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPCODE_OFFSET_SAVE	8
2802*8f23e9faSHans Rosenfeld #define	MGMT_PHY_FLASHROM_OPCODE_FLASH		9
2803*8f23e9faSHans Rosenfeld #define	MGMT_PHY_FLASHROM_OPCODE_SAVE		10
280482527734SSukumar Swaminathan 
280582527734SSukumar Swaminathan 		uint32_t optype;
280682527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_ISCSI_FIRMWARE	0
280782527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_REDBOOT		1
280882527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_ISCSI_BIOS		2
280982527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_PXE_BIOS		3
281082527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_CTRLS		4
281182527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_CFG_IPSEC		5
281282527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_CFG_INI		6
281382527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_ROM_OFFSET		7
281482527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_FCOE_BIOS		8
281582527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_ISCSI_BACKUP	9
281682527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_FCOE_FIRMWARE	10
281782527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_FCOE_BACKUP	11
281882527734SSukumar Swaminathan #define	MGMT_FLASHROM_OPTYPE_CTRLP		12
2819a9800bebSGarrett D'Amore #define	MGMT_FLASHROM_OPTYPE_NCSI_FIRMWARE	13
2820*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPTYPE_CFG_NIC		14
2821*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPTYPE_CFG_DCBX		15
2822*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPTYPE_CFG_PXE_BIOS	16
2823*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPTYPE_CFG_ALL		17
2824*8f23e9faSHans Rosenfeld #define	MGMT_FLASHROM_OPTYPE_PHY_FIRMWARE	0xff /* Driver defined */
282582527734SSukumar Swaminathan 
282682527734SSukumar Swaminathan 		uint32_t data_buffer_size; /* Align to 4KB */
282782527734SSukumar Swaminathan 		uint32_t offset;
282882527734SSukumar Swaminathan 		uint32_t data_buffer; /* image starts here */
282982527734SSukumar Swaminathan 
283082527734SSukumar Swaminathan 	} params;
283182527734SSukumar Swaminathan 
283282527734SSukumar Swaminathan } IOCTL_COMMON_FLASHROM;
283382527734SSukumar Swaminathan 
283482527734SSukumar Swaminathan 
2835*8f23e9faSHans Rosenfeld typedef	struct
2836*8f23e9faSHans Rosenfeld {
2837*8f23e9faSHans Rosenfeld 	union
2838*8f23e9faSHans Rosenfeld 	{
2839*8f23e9faSHans Rosenfeld 		struct
2840*8f23e9faSHans Rosenfeld 		{
2841*8f23e9faSHans Rosenfeld 			uint32_t rsvd;
2842*8f23e9faSHans Rosenfeld 		} request;
2843*8f23e9faSHans Rosenfeld 
2844*8f23e9faSHans Rosenfeld 
2845*8f23e9faSHans Rosenfeld 		struct
2846*8f23e9faSHans Rosenfeld 		{
2847*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
2848*8f23e9faSHans Rosenfeld 			uint16_t interface_type;
2849*8f23e9faSHans Rosenfeld 			uint16_t phy_type;
2850*8f23e9faSHans Rosenfeld #endif
2851*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
2852*8f23e9faSHans Rosenfeld 			uint16_t phy_type;
2853*8f23e9faSHans Rosenfeld 			uint16_t interface_type;
2854*8f23e9faSHans Rosenfeld #endif
2855*8f23e9faSHans Rosenfeld 
2856*8f23e9faSHans Rosenfeld /* phy_type */
2857*8f23e9faSHans Rosenfeld #define	PHY_XAUI		0x0
2858*8f23e9faSHans Rosenfeld #define	PHY_AEL_2020		0x1 /* eluris/Netlogic */
2859*8f23e9faSHans Rosenfeld #define	PHY_LSI_BRCM1		0x2 /* Peak pre-production board */
2860*8f23e9faSHans Rosenfeld #define	PHY_LSI_BRCM2		0x3 /* Peak production board */
2861*8f23e9faSHans Rosenfeld #define	PHY_SOLARFLARE		0x4 /* Dell recommended */
2862*8f23e9faSHans Rosenfeld #define	PHY_AMCC_QT2025		0x5 /* AMCC PHY */
2863*8f23e9faSHans Rosenfeld #define	PHY_AMCC_QT2225		0x6 /* AMCC PHY */
2864*8f23e9faSHans Rosenfeld #define	PHY_BRCM_5931		0x7 /* Broadcom Phy used by HP LOM */
2865*8f23e9faSHans Rosenfeld #define	PHY_BE3_INTERNAL_10GB	0x8 /* Internal 10GbPHY in BE3 */
2866*8f23e9faSHans Rosenfeld #define	PHY_BE3_INTERNAL_1GB	0x9 /* Internal 1Gb PHY in BE3 */
2867*8f23e9faSHans Rosenfeld #define	PHY_TN_2022		0xa /* Teranetics dual port 65nm PHY */
2868*8f23e9faSHans Rosenfeld #define	PHY_MARVELL_88E1340	0xb /* Marvel 1G PHY */
2869*8f23e9faSHans Rosenfeld #define	PHY_MARVELL_88E1322	0xc /* Marvel 1G PHY */
2870*8f23e9faSHans Rosenfeld #define	PHY_TN_8022		0xd /* Teranetics dual port 40nm PHY */
2871*8f23e9faSHans Rosenfeld #define	PHY_TYPE_NOT_SUPPORTED
2872*8f23e9faSHans Rosenfeld 
2873*8f23e9faSHans Rosenfeld /* interface_type */
2874*8f23e9faSHans Rosenfeld #define	CX4_10GB_TYPE		0x0
2875*8f23e9faSHans Rosenfeld #define	XFP_10GB_TYPE		0x1
2876*8f23e9faSHans Rosenfeld #define	SFP_1GB_TYPE		0x2
2877*8f23e9faSHans Rosenfeld #define	SFP_PLUS_10GB_TYPE	0x3
2878*8f23e9faSHans Rosenfeld #define	KR_10GB_TYPE		0x4
2879*8f23e9faSHans Rosenfeld #define	KX4_10GB_TYPE		0x5
2880*8f23e9faSHans Rosenfeld #define	BASET_10GB_TYPE		0x6 /* 10G BaseT */
2881*8f23e9faSHans Rosenfeld #define	BASET_1000_TYPE		0x7 /* 1000 BaseT */
2882*8f23e9faSHans Rosenfeld #define	BASEX_1000_TYPE		0x8 /* 1000 BaseX */
2883*8f23e9faSHans Rosenfeld #define	SGMII_TYPE		0x9
2884*8f23e9faSHans Rosenfeld #define	INTERFACE_10GB_DISABLED	0xff /* Interface type not supported */
2885*8f23e9faSHans Rosenfeld 
2886*8f23e9faSHans Rosenfeld 			uint32_t misc_params;
2887*8f23e9faSHans Rosenfeld 			uint32_t rsvd[4];
2888*8f23e9faSHans Rosenfeld 		} response;
2889*8f23e9faSHans Rosenfeld 
2890*8f23e9faSHans Rosenfeld 	} params;
2891*8f23e9faSHans Rosenfeld 
2892*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PHY_DETAILS;
2893*8f23e9faSHans Rosenfeld 
2894*8f23e9faSHans Rosenfeld 
2895*8f23e9faSHans Rosenfeld typedef	struct
2896*8f23e9faSHans Rosenfeld {
2897*8f23e9faSHans Rosenfeld 	union
2898*8f23e9faSHans Rosenfeld 	{
2899*8f23e9faSHans Rosenfeld 		struct
2900*8f23e9faSHans Rosenfeld 		{
2901*8f23e9faSHans Rosenfeld 			uint32_t rsvd;
2902*8f23e9faSHans Rosenfeld 		} request;
2903*8f23e9faSHans Rosenfeld 
2904*8f23e9faSHans Rosenfeld 
2905*8f23e9faSHans Rosenfeld 		struct
2906*8f23e9faSHans Rosenfeld 		{
2907*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
2908*8f23e9faSHans Rosenfeld 			uint8_t port3_name;
2909*8f23e9faSHans Rosenfeld 			uint8_t port2_name;
2910*8f23e9faSHans Rosenfeld 			uint8_t port1_name;
2911*8f23e9faSHans Rosenfeld 			uint8_t port0_name;
2912*8f23e9faSHans Rosenfeld #endif
2913*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
2914*8f23e9faSHans Rosenfeld 			uint8_t port0_name;
2915*8f23e9faSHans Rosenfeld 			uint8_t port1_name;
2916*8f23e9faSHans Rosenfeld 			uint8_t port2_name;
2917*8f23e9faSHans Rosenfeld 			uint8_t port3_name;
2918*8f23e9faSHans Rosenfeld #endif
2919*8f23e9faSHans Rosenfeld 		} response;
2920*8f23e9faSHans Rosenfeld 
2921*8f23e9faSHans Rosenfeld 	} params;
2922*8f23e9faSHans Rosenfeld 
2923*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PORT_NAME;
2924*8f23e9faSHans Rosenfeld 
2925*8f23e9faSHans Rosenfeld 
2926*8f23e9faSHans Rosenfeld typedef	struct
2927*8f23e9faSHans Rosenfeld {
2928*8f23e9faSHans Rosenfeld 	union
2929*8f23e9faSHans Rosenfeld 	{
2930*8f23e9faSHans Rosenfeld 		struct
2931*8f23e9faSHans Rosenfeld 		{
2932*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
2933*8f23e9faSHans Rosenfeld 			uint32_t rsvd:30;
2934*8f23e9faSHans Rosenfeld 			uint32_t pt:2;
2935*8f23e9faSHans Rosenfeld #endif
2936*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
2937*8f23e9faSHans Rosenfeld 			uint32_t pt:2;
2938*8f23e9faSHans Rosenfeld 			uint32_t rsvd:30;
2939*8f23e9faSHans Rosenfeld #endif
2940*8f23e9faSHans Rosenfeld #define	PORT_TYPE_GIGE		0
2941*8f23e9faSHans Rosenfeld #define	PORT_TYPE_FC		1
2942*8f23e9faSHans Rosenfeld 		} request;
2943*8f23e9faSHans Rosenfeld 
2944*8f23e9faSHans Rosenfeld 
2945*8f23e9faSHans Rosenfeld 		struct
2946*8f23e9faSHans Rosenfeld 		{
2947*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
2948*8f23e9faSHans Rosenfeld 			uint8_t port3_name;
2949*8f23e9faSHans Rosenfeld 			uint8_t port2_name;
2950*8f23e9faSHans Rosenfeld 			uint8_t port1_name;
2951*8f23e9faSHans Rosenfeld 			uint8_t port0_name;
2952*8f23e9faSHans Rosenfeld #endif
2953*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
2954*8f23e9faSHans Rosenfeld 			uint8_t port0_name;
2955*8f23e9faSHans Rosenfeld 			uint8_t port1_name;
2956*8f23e9faSHans Rosenfeld 			uint8_t port2_name;
2957*8f23e9faSHans Rosenfeld 			uint8_t port3_name;
2958*8f23e9faSHans Rosenfeld #endif
2959*8f23e9faSHans Rosenfeld 		} response;
2960*8f23e9faSHans Rosenfeld 
2961*8f23e9faSHans Rosenfeld 	} params;
2962*8f23e9faSHans Rosenfeld 
2963*8f23e9faSHans Rosenfeld } IOCTL_COMMON_GET_PORT_NAME_V1;
2964*8f23e9faSHans Rosenfeld 
2965*8f23e9faSHans Rosenfeld 
296682527734SSukumar Swaminathan typedef	struct
296782527734SSukumar Swaminathan {
296882527734SSukumar Swaminathan 	union
296982527734SSukumar Swaminathan 	{
297082527734SSukumar Swaminathan 		struct
297182527734SSukumar Swaminathan 		{
297282527734SSukumar Swaminathan 			uint32_t fat_operation;
297382527734SSukumar Swaminathan #define	RETRIEVE_FAT		0
297482527734SSukumar Swaminathan #define	QUERY_FAT		1
297582527734SSukumar Swaminathan #define	CLEAR_FAT		2
297682527734SSukumar Swaminathan 
297782527734SSukumar Swaminathan 			uint32_t read_log_offset;
297882527734SSukumar Swaminathan 			uint32_t read_log_length;
297982527734SSukumar Swaminathan 			uint32_t data_buffer_size;
298082527734SSukumar Swaminathan 			uint32_t data_buffer;
298182527734SSukumar Swaminathan 		} request;
298282527734SSukumar Swaminathan 
298382527734SSukumar Swaminathan 		struct
298482527734SSukumar Swaminathan 		{
298582527734SSukumar Swaminathan 			uint32_t log_size;
298682527734SSukumar Swaminathan 			uint32_t read_log_length;
298782527734SSukumar Swaminathan 			uint32_t rsvd0;
298882527734SSukumar Swaminathan 			uint32_t rsvd1;
298982527734SSukumar Swaminathan 			uint32_t data_buffer;
299082527734SSukumar Swaminathan 		} response;
299182527734SSukumar Swaminathan 
299282527734SSukumar Swaminathan 	} params;
299382527734SSukumar Swaminathan 
299482527734SSukumar Swaminathan } IOCTL_COMMON_MANAGE_FAT;
299582527734SSukumar Swaminathan 
299682527734SSukumar Swaminathan 
2997*8f23e9faSHans Rosenfeld typedef	struct
2998*8f23e9faSHans Rosenfeld {
2999*8f23e9faSHans Rosenfeld 	union
3000*8f23e9faSHans Rosenfeld 	{
3001*8f23e9faSHans Rosenfeld 		struct
3002*8f23e9faSHans Rosenfeld 		{
3003*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3004*8f23e9faSHans Rosenfeld 			uint32_t EOF:1; /* word 4 */
3005*8f23e9faSHans Rosenfeld 			uint32_t rsvd0:7;
3006*8f23e9faSHans Rosenfeld 			uint32_t desired_write_length:24;
3007*8f23e9faSHans Rosenfeld #endif
3008*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3009*8f23e9faSHans Rosenfeld 			uint32_t desired_write_length:24;
3010*8f23e9faSHans Rosenfeld 			uint32_t rsvd0:7;
3011*8f23e9faSHans Rosenfeld 			uint32_t EOF:1;  /* word 4 */
3012*8f23e9faSHans Rosenfeld #endif
3013*8f23e9faSHans Rosenfeld 			uint32_t write_offset;  /* word 5 */
3014*8f23e9faSHans Rosenfeld 			char object_name[(4 * 26)];   /* word 6 - 31 */
3015*8f23e9faSHans Rosenfeld 			uint32_t buffer_desc_count; /* word 32 */
3016*8f23e9faSHans Rosenfeld 
3017*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3018*8f23e9faSHans Rosenfeld 			uint32_t rsvd:8; /* word 33 */
3019*8f23e9faSHans Rosenfeld 			uint32_t buffer_length:24;
3020*8f23e9faSHans Rosenfeld #endif
3021*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3022*8f23e9faSHans Rosenfeld 			uint32_t buffer_length:24;
3023*8f23e9faSHans Rosenfeld 			uint32_t rsvd:8; /* word 33 */
3024*8f23e9faSHans Rosenfeld #endif
3025*8f23e9faSHans Rosenfeld 			uint32_t buffer_addrlo; /* word 34 */
3026*8f23e9faSHans Rosenfeld 			uint32_t buffer_addrhi; /* word 35 */
3027*8f23e9faSHans Rosenfeld 		} request;
3028*8f23e9faSHans Rosenfeld 
3029*8f23e9faSHans Rosenfeld 		struct
3030*8f23e9faSHans Rosenfeld 		{
3031*8f23e9faSHans Rosenfeld 			uint32_t actual_write_length;
3032*8f23e9faSHans Rosenfeld 
3033*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3034*8f23e9faSHans Rosenfeld 			uint32_t rsvd:24;
3035*8f23e9faSHans Rosenfeld 			uint32_t change_status:8;
3036*8f23e9faSHans Rosenfeld #endif
3037*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3038*8f23e9faSHans Rosenfeld 			uint32_t change_status:8;
3039*8f23e9faSHans Rosenfeld 			uint32_t rsvd:24;
3040*8f23e9faSHans Rosenfeld #endif
3041*8f23e9faSHans Rosenfeld #define	CS_NO_RESET		0
3042*8f23e9faSHans Rosenfeld #define	CS_REBOOT_RQD		1
3043*8f23e9faSHans Rosenfeld #define	CS_FW_RESET_RQD		2
3044*8f23e9faSHans Rosenfeld #define	CS_PROTO_RESET_RQD	3
3045*8f23e9faSHans Rosenfeld 		} response;
3046*8f23e9faSHans Rosenfeld 
3047*8f23e9faSHans Rosenfeld 	} params;
3048*8f23e9faSHans Rosenfeld 
3049*8f23e9faSHans Rosenfeld } IOCTL_COMMON_WRITE_OBJECT;
3050*8f23e9faSHans Rosenfeld 
3051*8f23e9faSHans Rosenfeld 
3052*8f23e9faSHans Rosenfeld typedef	struct
3053*8f23e9faSHans Rosenfeld {
3054*8f23e9faSHans Rosenfeld 	union
3055*8f23e9faSHans Rosenfeld 	{
3056*8f23e9faSHans Rosenfeld 		struct
3057*8f23e9faSHans Rosenfeld 		{
3058*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3059*8f23e9faSHans Rosenfeld 			uint32_t descriptor_offset:16; /* word 4 */
3060*8f23e9faSHans Rosenfeld 			uint32_t descriptor_count:16;
3061*8f23e9faSHans Rosenfeld #endif
3062*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3063*8f23e9faSHans Rosenfeld 			uint32_t descriptor_count:16;
3064*8f23e9faSHans Rosenfeld 			uint32_t descriptor_offset:16; /* word 4 */
3065*8f23e9faSHans Rosenfeld #endif
3066*8f23e9faSHans Rosenfeld 			uint32_t reserved;  /* word 5 */
3067*8f23e9faSHans Rosenfeld 			char object_name[(4 * 26)];   /* word 6 - 31 */
3068*8f23e9faSHans Rosenfeld 			uint32_t buffer_desc_count; /* word 32 */
3069*8f23e9faSHans Rosenfeld 
3070*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3071*8f23e9faSHans Rosenfeld 			uint32_t rsvd:8; /* word 33 */
3072*8f23e9faSHans Rosenfeld 			uint32_t buffer_length:24;
3073*8f23e9faSHans Rosenfeld #endif
3074*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3075*8f23e9faSHans Rosenfeld 			uint32_t buffer_length:24;
3076*8f23e9faSHans Rosenfeld 			uint32_t rsvd:8; /* word 33 */
3077*8f23e9faSHans Rosenfeld #endif
3078*8f23e9faSHans Rosenfeld 			uint32_t buffer_addrlo; /* word 34 */
3079*8f23e9faSHans Rosenfeld 			uint32_t buffer_addrhi; /* word 35 */
3080*8f23e9faSHans Rosenfeld 		} request;
3081*8f23e9faSHans Rosenfeld 
3082*8f23e9faSHans Rosenfeld 		struct
3083*8f23e9faSHans Rosenfeld 		{
3084*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3085*8f23e9faSHans Rosenfeld 			uint32_t reserved:16;
3086*8f23e9faSHans Rosenfeld 			uint32_t actual_descriptor_count:16;
3087*8f23e9faSHans Rosenfeld #endif
3088*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3089*8f23e9faSHans Rosenfeld 			uint32_t actual_descriptor_count:16;
3090*8f23e9faSHans Rosenfeld 			uint32_t reserved:16;
3091*8f23e9faSHans Rosenfeld #endif
3092*8f23e9faSHans Rosenfeld 		} response;
3093*8f23e9faSHans Rosenfeld 
3094*8f23e9faSHans Rosenfeld 	} params;
3095*8f23e9faSHans Rosenfeld 
3096*8f23e9faSHans Rosenfeld } IOCTL_COMMON_READ_OBJECT_LIST;
3097*8f23e9faSHans Rosenfeld 
3098*8f23e9faSHans Rosenfeld 
3099*8f23e9faSHans Rosenfeld typedef	struct
3100*8f23e9faSHans Rosenfeld {
3101*8f23e9faSHans Rosenfeld 	union
3102*8f23e9faSHans Rosenfeld 	{
3103*8f23e9faSHans Rosenfeld 		struct
3104*8f23e9faSHans Rosenfeld 		{
3105*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3106*8f23e9faSHans Rosenfeld 			uint32_t reserved:16; /* word 4 */
3107*8f23e9faSHans Rosenfeld 			uint32_t boot_instance:8;
3108*8f23e9faSHans Rosenfeld 			uint32_t boot_status:8;
3109*8f23e9faSHans Rosenfeld #endif
3110*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3111*8f23e9faSHans Rosenfeld 			uint32_t boot_status:8;
3112*8f23e9faSHans Rosenfeld 			uint32_t boot_instance:8;
3113*8f23e9faSHans Rosenfeld 			uint32_t reserved:16; /* word 4 */
3114*8f23e9faSHans Rosenfeld #endif
3115*8f23e9faSHans Rosenfeld 		} request;
3116*8f23e9faSHans Rosenfeld 
3117*8f23e9faSHans Rosenfeld 		struct
3118*8f23e9faSHans Rosenfeld 		{
3119*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3120*8f23e9faSHans Rosenfeld 			uint32_t reserved:16; /* word 4 */
3121*8f23e9faSHans Rosenfeld 			uint32_t boot_instance:8;
3122*8f23e9faSHans Rosenfeld 			uint32_t boot_status:8;
3123*8f23e9faSHans Rosenfeld #endif
3124*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3125*8f23e9faSHans Rosenfeld 			uint32_t boot_status:8;
3126*8f23e9faSHans Rosenfeld 			uint32_t boot_instance:8;
3127*8f23e9faSHans Rosenfeld 			uint32_t reserved:16; /* word 4 */
3128*8f23e9faSHans Rosenfeld #endif
3129*8f23e9faSHans Rosenfeld 		} response;
3130*8f23e9faSHans Rosenfeld 
3131*8f23e9faSHans Rosenfeld 	} params;
3132*8f23e9faSHans Rosenfeld 
3133*8f23e9faSHans Rosenfeld } IOCTL_COMMON_BOOT_CFG;
3134*8f23e9faSHans Rosenfeld 
3135*8f23e9faSHans Rosenfeld 
313682527734SSukumar Swaminathan /* IOCTL_COMMON_QUERY_FIRMWARE_CONFIG */
313782527734SSukumar Swaminathan typedef struct _BE_FW_CFG
313882527734SSukumar Swaminathan {
313982527734SSukumar Swaminathan 	uint32_t	BEConfigNumber;
314082527734SSukumar Swaminathan 	uint32_t	ASICRevision;
314182527734SSukumar Swaminathan 	uint32_t	PhysicalPort;
314282527734SSukumar Swaminathan 	uint32_t	FunctionMode;
314382527734SSukumar Swaminathan 	uint32_t	ULPMode;
314482527734SSukumar Swaminathan 
314582527734SSukumar Swaminathan } BE_FW_CFG;
314682527734SSukumar Swaminathan 
314782527734SSukumar Swaminathan typedef	struct _IOCTL_COMMON_QUERY_FIRMWARE_CONFIG
314882527734SSukumar Swaminathan {
314982527734SSukumar Swaminathan 	union
315082527734SSukumar Swaminathan 	{
315182527734SSukumar Swaminathan 		struct
315282527734SSukumar Swaminathan 		{
315382527734SSukumar Swaminathan 			uint32_t	rsvd0;
315482527734SSukumar Swaminathan 		} request;
315582527734SSukumar Swaminathan 
315682527734SSukumar Swaminathan 		BE_FW_CFG	response;
315782527734SSukumar Swaminathan 
315882527734SSukumar Swaminathan 	}	params;
315982527734SSukumar Swaminathan 
316082527734SSukumar Swaminathan } IOCTL_COMMON_QUERY_FIRMWARE_CONFIG;
316182527734SSukumar Swaminathan 
316282527734SSukumar Swaminathan 
316382527734SSukumar Swaminathan 
316482527734SSukumar Swaminathan /* IOCTL_FCOE_READ_FCF_TABLE */
316582527734SSukumar Swaminathan typedef struct
316682527734SSukumar Swaminathan {
316782527734SSukumar Swaminathan 	uint32_t	max_recv_size;
316882527734SSukumar Swaminathan 	uint32_t	fka_adv_period;
316982527734SSukumar Swaminathan 	uint32_t	fip_priority;
317082527734SSukumar Swaminathan 
317182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
317282527734SSukumar Swaminathan 	uint8_t		fcf_mac_address_hi[4];
317382527734SSukumar Swaminathan 
317482527734SSukumar Swaminathan 	uint8_t		mac_address_provider;
317582527734SSukumar Swaminathan 	uint8_t		fcf_available;
317682527734SSukumar Swaminathan 	uint8_t		fcf_mac_address_low[2];
317782527734SSukumar Swaminathan 
317882527734SSukumar Swaminathan 	uint8_t		fabric_name_identifier[8];
317982527734SSukumar Swaminathan 
3180*8f23e9faSHans Rosenfeld 	uint8_t		fcf_sol:1;
3181*8f23e9faSHans Rosenfeld 	uint8_t		rsvd0:5;
3182*8f23e9faSHans Rosenfeld 	uint8_t		fcf_fc:1;
3183*8f23e9faSHans Rosenfeld 	uint8_t		fcf_valid:1;
318482527734SSukumar Swaminathan 	uint8_t		fc_map[3];
318582527734SSukumar Swaminathan 
318682527734SSukumar Swaminathan 	uint16_t	fcf_state;
318782527734SSukumar Swaminathan 	uint16_t	fcf_index;
318882527734SSukumar Swaminathan #endif
318982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
319082527734SSukumar Swaminathan 	uint8_t		fcf_mac_address_hi[4];
319182527734SSukumar Swaminathan 
319282527734SSukumar Swaminathan 	uint8_t		fcf_mac_address_low[2];
319382527734SSukumar Swaminathan 	uint8_t		fcf_available;
319482527734SSukumar Swaminathan 	uint8_t		mac_address_provider;
319582527734SSukumar Swaminathan 
319682527734SSukumar Swaminathan 	uint8_t		fabric_name_identifier[8];
319782527734SSukumar Swaminathan 
319882527734SSukumar Swaminathan 	uint8_t		fc_map[3];
3199*8f23e9faSHans Rosenfeld 	uint8_t		fcf_valid:1;
3200*8f23e9faSHans Rosenfeld 	uint8_t		fcf_fc:1;
3201*8f23e9faSHans Rosenfeld 	uint8_t		rsvd0:5;
3202*8f23e9faSHans Rosenfeld 	uint8_t		fcf_sol:1;
320382527734SSukumar Swaminathan 
320482527734SSukumar Swaminathan 	uint16_t	fcf_index;
320582527734SSukumar Swaminathan 	uint16_t	fcf_state;
320682527734SSukumar Swaminathan #endif
320782527734SSukumar Swaminathan 
320882527734SSukumar Swaminathan 	uint8_t		vlan_bitmap[512];
320982527734SSukumar Swaminathan 	uint8_t		switch_name_identifier[8];
321082527734SSukumar Swaminathan 
321182527734SSukumar Swaminathan } FCF_RECORD_t;
321282527734SSukumar Swaminathan 
321382527734SSukumar Swaminathan #define	EMLXS_FCOE_MAX_RCV_SZ	0x800
321482527734SSukumar Swaminathan 
321582527734SSukumar Swaminathan /* defines for mac_address_provider */
321682527734SSukumar Swaminathan #define	EMLXS_MAM_BOTH	0	/* Both SPMA and FPMA */
321782527734SSukumar Swaminathan #define	EMLXS_MAM_FPMA	1	/* Fabric Provided MAC Address */
321882527734SSukumar Swaminathan #define	EMLXS_MAM_SPMA	2	/* Server Provided MAC Address */
321982527734SSukumar Swaminathan 
322082527734SSukumar Swaminathan typedef struct
322182527734SSukumar Swaminathan {
322282527734SSukumar Swaminathan 	union
322382527734SSukumar Swaminathan 	{
322482527734SSukumar Swaminathan 		struct
322582527734SSukumar Swaminathan 		{
322682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
322782527734SSukumar Swaminathan 			uint16_t	rsvd0;
322882527734SSukumar Swaminathan 			uint16_t	fcf_index;
322982527734SSukumar Swaminathan #endif
323082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
323182527734SSukumar Swaminathan 			uint16_t	fcf_index;
323282527734SSukumar Swaminathan 			uint16_t	rsvd0;
323382527734SSukumar Swaminathan #endif
323482527734SSukumar Swaminathan 
323582527734SSukumar Swaminathan 		} request;
323682527734SSukumar Swaminathan 
323782527734SSukumar Swaminathan 		struct
323882527734SSukumar Swaminathan 		{
323982527734SSukumar Swaminathan 			uint32_t	event_tag;
324082527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
324182527734SSukumar Swaminathan 			uint16_t	rsvd0;
324282527734SSukumar Swaminathan 			uint16_t	next_valid_fcf_index;
324382527734SSukumar Swaminathan #endif
324482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
324582527734SSukumar Swaminathan 			uint16_t	next_valid_fcf_index;
324682527734SSukumar Swaminathan 			uint16_t	rsvd0;
324782527734SSukumar Swaminathan #endif
324882527734SSukumar Swaminathan 			FCF_RECORD_t fcf_entry[1];
324982527734SSukumar Swaminathan 
325082527734SSukumar Swaminathan 		} response;
325182527734SSukumar Swaminathan 
325282527734SSukumar Swaminathan 	} params;
325382527734SSukumar Swaminathan 
325482527734SSukumar Swaminathan } IOCTL_FCOE_READ_FCF_TABLE;
325582527734SSukumar Swaminathan 
325682527734SSukumar Swaminathan 
325782527734SSukumar Swaminathan /* IOCTL_FCOE_ADD_FCF_TABLE */
325882527734SSukumar Swaminathan typedef struct
325982527734SSukumar Swaminathan {
326082527734SSukumar Swaminathan 	union
326182527734SSukumar Swaminathan 	{
326282527734SSukumar Swaminathan 		struct
326382527734SSukumar Swaminathan 		{
326482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
326582527734SSukumar Swaminathan 			uint16_t	rsvd0;
326682527734SSukumar Swaminathan 			uint16_t	fcf_index;
326782527734SSukumar Swaminathan #endif
326882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
326982527734SSukumar Swaminathan 			uint16_t	fcf_index;
327082527734SSukumar Swaminathan 			uint16_t	rsvd0;
327182527734SSukumar Swaminathan #endif
327282527734SSukumar Swaminathan 			FCF_RECORD_t fcf_entry;
327382527734SSukumar Swaminathan 
327482527734SSukumar Swaminathan 		} request;
3275a9800bebSGarrett D'Amore 	} params;
3276a9800bebSGarrett D'Amore 
3277a9800bebSGarrett D'Amore } IOCTL_FCOE_ADD_FCF_TABLE;
3278a9800bebSGarrett D'Amore 
327982527734SSukumar Swaminathan 
3280a9800bebSGarrett D'Amore /* IOCTL_FCOE_DELETE_FCF_TABLE */
3281a9800bebSGarrett D'Amore typedef struct
3282a9800bebSGarrett D'Amore {
3283a9800bebSGarrett D'Amore 	union
3284a9800bebSGarrett D'Amore 	{
3285a9800bebSGarrett D'Amore 		struct
3286a9800bebSGarrett D'Amore 		{
3287a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN
3288a9800bebSGarrett D'Amore 			uint16_t	fcf_indexes[1];
3289a9800bebSGarrett D'Amore 			uint16_t	fcf_count;
3290a9800bebSGarrett D'Amore #endif
3291a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN
3292a9800bebSGarrett D'Amore 			uint16_t	fcf_count;
3293a9800bebSGarrett D'Amore 			uint16_t	fcf_indexes[1];
3294a9800bebSGarrett D'Amore #endif
3295a9800bebSGarrett D'Amore 
3296a9800bebSGarrett D'Amore 		} request;
3297a9800bebSGarrett D'Amore 	} params;
3298a9800bebSGarrett D'Amore 
3299a9800bebSGarrett D'Amore } IOCTL_FCOE_DELETE_FCF_TABLE;
3300a9800bebSGarrett D'Amore 
3301a9800bebSGarrett D'Amore 
3302a9800bebSGarrett D'Amore /* IOCTL_FCOE_REDISCOVER_FCF_TABLE */
3303a9800bebSGarrett D'Amore typedef struct
3304a9800bebSGarrett D'Amore {
3305a9800bebSGarrett D'Amore 	union
3306a9800bebSGarrett D'Amore 	{
330782527734SSukumar Swaminathan 		struct
330882527734SSukumar Swaminathan 		{
330982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
331082527734SSukumar Swaminathan 			uint16_t	rsvd0;
3311a9800bebSGarrett D'Amore 			uint16_t	fcf_count;
331282527734SSukumar Swaminathan #endif
331382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
3314a9800bebSGarrett D'Amore 			uint16_t	fcf_count;
331582527734SSukumar Swaminathan 			uint16_t	rsvd0;
331682527734SSukumar Swaminathan #endif
3317a9800bebSGarrett D'Amore 			uint32_t	rsvd1;
3318a9800bebSGarrett D'Amore 			uint16_t	fcf_index[1];
3319a9800bebSGarrett D'Amore 
3320a9800bebSGarrett D'Amore 		} request;
332182527734SSukumar Swaminathan 	} params;
332282527734SSukumar Swaminathan 
3323a9800bebSGarrett D'Amore } IOCTL_FCOE_REDISCOVER_FCF_TABLE;
3324a9800bebSGarrett D'Amore 
332582527734SSukumar Swaminathan 
332682527734SSukumar Swaminathan #define	FCOE_FCF_MAC0	0x0E
332782527734SSukumar Swaminathan #define	FCOE_FCF_MAC1	0xFC
332882527734SSukumar Swaminathan #define	FCOE_FCF_MAC2	0x00
332982527734SSukumar Swaminathan #define	FCOE_FCF_MAC3	0xFF
333082527734SSukumar Swaminathan #define	FCOE_FCF_MAC4	0xFF
333182527734SSukumar Swaminathan #define	FCOE_FCF_MAC5	0xFE
333282527734SSukumar Swaminathan 
333382527734SSukumar Swaminathan #define	FCOE_FCF_MAP0	0x0E
333482527734SSukumar Swaminathan #define	FCOE_FCF_MAP1	0xFC
333582527734SSukumar Swaminathan #define	FCOE_FCF_MAP2	0x00
333682527734SSukumar Swaminathan 
333782527734SSukumar Swaminathan #define	MGMT_STATUS_FCF_IN_USE	0x3a
333882527734SSukumar Swaminathan 
333982527734SSukumar Swaminathan /* IOCTL_COMMON_NOP */
334082527734SSukumar Swaminathan typedef	struct _IOCTL_COMMON_NOP
334182527734SSukumar Swaminathan {
334282527734SSukumar Swaminathan 	union
334382527734SSukumar Swaminathan 	{
334482527734SSukumar Swaminathan 		struct
334582527734SSukumar Swaminathan 		{
334682527734SSukumar Swaminathan 			uint64_t	context;
334782527734SSukumar Swaminathan 		} request;
334882527734SSukumar Swaminathan 
334982527734SSukumar Swaminathan 		struct
335082527734SSukumar Swaminathan 		{
335182527734SSukumar Swaminathan 			uint64_t	context;
335282527734SSukumar Swaminathan 		} response;
335382527734SSukumar Swaminathan 
335482527734SSukumar Swaminathan 	} params;
335582527734SSukumar Swaminathan 
335682527734SSukumar Swaminathan } IOCTL_COMMON_NOP;
335782527734SSukumar Swaminathan 
335882527734SSukumar Swaminathan 
335982527734SSukumar Swaminathan /*	Context for EQ create	*/
336082527734SSukumar Swaminathan typedef	struct _EQ_CONTEXT
336182527734SSukumar Swaminathan {
336282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
336382527734SSukumar Swaminathan 	uint32_t	Size:1;
336482527734SSukumar Swaminathan 	uint32_t	Rsvd2:1;
336582527734SSukumar Swaminathan 	uint32_t	Valid:1;
3366*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:29;
336782527734SSukumar Swaminathan 
336882527734SSukumar Swaminathan 	uint32_t	Armed:1;
3369*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:2;
337082527734SSukumar Swaminathan 	uint32_t	Count:3;
3371*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:26;
337282527734SSukumar Swaminathan 
3373*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd6:9;
337482527734SSukumar Swaminathan 	uint32_t	DelayMult:10;
3375*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:13;
337682527734SSukumar Swaminathan #endif
337782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
3378*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:29;
337982527734SSukumar Swaminathan 	uint32_t	Valid:1;
338082527734SSukumar Swaminathan 	uint32_t	Rsvd2:1;
338182527734SSukumar Swaminathan 	uint32_t	Size:1;
338282527734SSukumar Swaminathan 
3383*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:26;
338482527734SSukumar Swaminathan 	uint32_t	Count:3;
3385*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:2;
338682527734SSukumar Swaminathan 	uint32_t	Armed:1;
338782527734SSukumar Swaminathan 
3388*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:13;
338982527734SSukumar Swaminathan 	uint32_t	DelayMult:10;
3390*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd6:9;
339182527734SSukumar Swaminathan #endif
339282527734SSukumar Swaminathan 
3393*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd7;
3394*8f23e9faSHans Rosenfeld 
3395*8f23e9faSHans Rosenfeld } EQ_CONTEXT;
339682527734SSukumar Swaminathan 
339782527734SSukumar Swaminathan 
339882527734SSukumar Swaminathan /* define for Count field */
339982527734SSukumar Swaminathan #define	EQ_ELEMENT_COUNT_1024	2
340082527734SSukumar Swaminathan #define	EQ_ELEMENT_COUNT_2048	3
340182527734SSukumar Swaminathan #define	EQ_ELEMENT_COUNT_4096	4
340282527734SSukumar Swaminathan 
340382527734SSukumar Swaminathan /* define for Size field */
340482527734SSukumar Swaminathan #define	EQ_ELEMENT_SIZE_4	0
340582527734SSukumar Swaminathan 
340682527734SSukumar Swaminathan /* define for DelayMullt - used for interrupt coalescing */
3407a9800bebSGarrett D'Amore #define	EQ_DELAY_MULT		64
340882527734SSukumar Swaminathan 
340982527734SSukumar Swaminathan /*	Context for CQ create	*/
341082527734SSukumar Swaminathan typedef	struct _CQ_CONTEXT
341182527734SSukumar Swaminathan {
341282527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
341382527734SSukumar Swaminathan 	uint32_t	Eventable:1;
3414*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:1;
341582527734SSukumar Swaminathan 	uint32_t	Valid:1;
341682527734SSukumar Swaminathan 	uint32_t	Count:2;
3417*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
341882527734SSukumar Swaminathan 	uint32_t	NoDelay:1;
341982527734SSukumar Swaminathan 	uint32_t	CoalesceWM:2;
3420*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:12;
342182527734SSukumar Swaminathan 
342282527734SSukumar Swaminathan 	uint32_t	Armed:1;
3423*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:1;
342482527734SSukumar Swaminathan 	uint32_t	EQId:8;
3425*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:22;
342682527734SSukumar Swaminathan 
3427*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd6;
342882527734SSukumar Swaminathan #endif
342982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
3430*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:12;
343182527734SSukumar Swaminathan 	uint32_t	CoalesceWM:2;
343282527734SSukumar Swaminathan 	uint32_t	NoDelay:1;
3433*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
343482527734SSukumar Swaminathan 	uint32_t	Count:2;
343582527734SSukumar Swaminathan 	uint32_t	Valid:1;
3436*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:1;
343782527734SSukumar Swaminathan 	uint32_t	Eventable:1;
343882527734SSukumar Swaminathan 
3439*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:22;
344082527734SSukumar Swaminathan 	uint32_t	EQId:8;
3441*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:1;
344282527734SSukumar Swaminathan 	uint32_t	Armed:1;
344382527734SSukumar Swaminathan 
3444*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd6;
344582527734SSukumar Swaminathan #endif
344682527734SSukumar Swaminathan 
3447*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd7;
344882527734SSukumar Swaminathan 
344982527734SSukumar Swaminathan } CQ_CONTEXT;
345082527734SSukumar Swaminathan 
3451*8f23e9faSHans Rosenfeld typedef	struct _CQ_CONTEXT_V2
3452*8f23e9faSHans Rosenfeld {
3453*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3454*8f23e9faSHans Rosenfeld 	uint32_t	Eventable:1;
3455*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:1;
3456*8f23e9faSHans Rosenfeld 	uint32_t	Valid:1;
3457*8f23e9faSHans Rosenfeld 	uint32_t	CqeCnt:2;
3458*8f23e9faSHans Rosenfeld 	uint32_t	CqeSize:2;
3459*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:9;
3460*8f23e9faSHans Rosenfeld 	uint32_t	AutoValid:1;
3461*8f23e9faSHans Rosenfeld 	uint32_t	NoDelay:1;
3462*8f23e9faSHans Rosenfeld 	uint32_t	CoalesceWM:2;
3463*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:12;
3464*8f23e9faSHans Rosenfeld 
3465*8f23e9faSHans Rosenfeld 	uint32_t	Armed:1;
3466*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:15;
3467*8f23e9faSHans Rosenfeld 	uint32_t	EQId:16;
3468*8f23e9faSHans Rosenfeld 
3469*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:16;
3470*8f23e9faSHans Rosenfeld 	uint32_t	Count1:16;
3471*8f23e9faSHans Rosenfeld #endif
3472*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3473*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:12;
3474*8f23e9faSHans Rosenfeld 	uint32_t	CoalesceWM:2;
3475*8f23e9faSHans Rosenfeld 	uint32_t	NoDelay:1;
3476*8f23e9faSHans Rosenfeld 	uint32_t	AutoValid:1;
3477*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:9;
3478*8f23e9faSHans Rosenfeld 	uint32_t	CqeSize:2;
3479*8f23e9faSHans Rosenfeld 	uint32_t	CqeCnt:2;
3480*8f23e9faSHans Rosenfeld 	uint32_t	Valid:1;
3481*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:1;
3482*8f23e9faSHans Rosenfeld 	uint32_t	Eventable:1;
3483*8f23e9faSHans Rosenfeld 
3484*8f23e9faSHans Rosenfeld 	uint32_t	EQId:16;
3485*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:15;
3486*8f23e9faSHans Rosenfeld 	uint32_t	Armed:1;
3487*8f23e9faSHans Rosenfeld 
3488*8f23e9faSHans Rosenfeld 	uint32_t	Count1:16;
3489*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5:16;
3490*8f23e9faSHans Rosenfeld #endif
3491*8f23e9faSHans Rosenfeld 
3492*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd7;
3493*8f23e9faSHans Rosenfeld 
3494*8f23e9faSHans Rosenfeld } CQ_CONTEXT_V2;
3495*8f23e9faSHans Rosenfeld 
3496*8f23e9faSHans Rosenfeld /* CqeSize */
3497*8f23e9faSHans Rosenfeld #define	CQE_SIZE_16_BYTES	0
3498*8f23e9faSHans Rosenfeld #define	CQE_SIZE_32_BYTES	1
3499*8f23e9faSHans Rosenfeld 
350082527734SSukumar Swaminathan /* define for Count field */
350182527734SSukumar Swaminathan #define	CQ_ELEMENT_COUNT_256	0
350282527734SSukumar Swaminathan #define	CQ_ELEMENT_COUNT_512	1
350382527734SSukumar Swaminathan #define	CQ_ELEMENT_COUNT_1024	2
3504*8f23e9faSHans Rosenfeld #define	CQ_ELEMENT_COUNT_SPECIFIED	3
350582527734SSukumar Swaminathan 
350682527734SSukumar Swaminathan /*	Context for MQ create	*/
350782527734SSukumar Swaminathan typedef	struct _MQ_CONTEXT
350882527734SSukumar Swaminathan {
350982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
351082527734SSukumar Swaminathan 	uint32_t	CQId:10;
351182527734SSukumar Swaminathan 	uint32_t	Rsvd2:2;
351282527734SSukumar Swaminathan 	uint32_t	Size:4;
3513*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:16;
351482527734SSukumar Swaminathan 
351582527734SSukumar Swaminathan 	uint32_t	Valid:1;
3516*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:31;
3517*8f23e9faSHans Rosenfeld 
3518*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:21;
3519*8f23e9faSHans Rosenfeld 	uint32_t	ACQId:10;
3520*8f23e9faSHans Rosenfeld 	uint32_t	ACQV:1;
352182527734SSukumar Swaminathan #endif
352282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
3523*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:16;
352482527734SSukumar Swaminathan 	uint32_t	Size:4;
352582527734SSukumar Swaminathan 	uint32_t	Rsvd2:2;
352682527734SSukumar Swaminathan 	uint32_t	CQId:10;
352782527734SSukumar Swaminathan 
3528*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:31;
352982527734SSukumar Swaminathan 	uint32_t	Valid:1;
3530*8f23e9faSHans Rosenfeld 
3531*8f23e9faSHans Rosenfeld 	uint32_t	ACQV:1;
3532*8f23e9faSHans Rosenfeld 	uint32_t	ACQId:10;
3533*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:21;
353482527734SSukumar Swaminathan #endif
353582527734SSukumar Swaminathan 
3536*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5;
353782527734SSukumar Swaminathan 
353882527734SSukumar Swaminathan } MQ_CONTEXT;
353982527734SSukumar Swaminathan 
3540*8f23e9faSHans Rosenfeld 
3541*8f23e9faSHans Rosenfeld typedef	struct _MQ_CONTEXT_V1
3542*8f23e9faSHans Rosenfeld {
3543*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3544*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
3545*8f23e9faSHans Rosenfeld 	uint32_t	Size:4;
3546*8f23e9faSHans Rosenfeld 	uint32_t	ACQId:16;
3547*8f23e9faSHans Rosenfeld 
3548*8f23e9faSHans Rosenfeld 	uint32_t	Valid:1;
3549*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:31;
3550*8f23e9faSHans Rosenfeld 
3551*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:31;
3552*8f23e9faSHans Rosenfeld 	uint32_t	ACQV:1;
3553*8f23e9faSHans Rosenfeld #endif
3554*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3555*8f23e9faSHans Rosenfeld 	uint32_t	ACQId:16;
3556*8f23e9faSHans Rosenfeld 	uint32_t	Size:4;
3557*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
3558*8f23e9faSHans Rosenfeld 
3559*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd3:31;
3560*8f23e9faSHans Rosenfeld 	uint32_t	Valid:1;
3561*8f23e9faSHans Rosenfeld 
3562*8f23e9faSHans Rosenfeld 	uint32_t	ACQV:1;
3563*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd4:31;
3564*8f23e9faSHans Rosenfeld #endif
3565*8f23e9faSHans Rosenfeld 
3566*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd5;
3567*8f23e9faSHans Rosenfeld 
3568*8f23e9faSHans Rosenfeld } MQ_CONTEXT_V1;
3569*8f23e9faSHans Rosenfeld 
3570*8f23e9faSHans Rosenfeld 
357182527734SSukumar Swaminathan /* define for Size field */
357282527734SSukumar Swaminathan #define	MQ_ELEMENT_COUNT_16 0x05
357382527734SSukumar Swaminathan 
357482527734SSukumar Swaminathan /*	Context for RQ create	*/
357582527734SSukumar Swaminathan typedef	struct _RQ_CONTEXT
357682527734SSukumar Swaminathan {
357782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
3578*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
3579*8f23e9faSHans Rosenfeld 	uint32_t	RqeCnt:4;
358082527734SSukumar Swaminathan 	uint32_t	Rsvd1:16;
358182527734SSukumar Swaminathan 
358282527734SSukumar Swaminathan 	uint32_t	Rsvd3;
358382527734SSukumar Swaminathan 
3584*8f23e9faSHans Rosenfeld 	uint32_t	CQId:16;
358582527734SSukumar Swaminathan 	uint32_t	BufferSize:16;
358682527734SSukumar Swaminathan #endif
358782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
358882527734SSukumar Swaminathan 	uint32_t	Rsvd1:16;
3589*8f23e9faSHans Rosenfeld 	uint32_t	RqeCnt:4;
3590*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2:12;
359182527734SSukumar Swaminathan 
359282527734SSukumar Swaminathan 	uint32_t	Rsvd3;
359382527734SSukumar Swaminathan 
359482527734SSukumar Swaminathan 	uint32_t	BufferSize:16;
3595*8f23e9faSHans Rosenfeld 	uint32_t	CQId:16;
359682527734SSukumar Swaminathan #endif
359782527734SSukumar Swaminathan 
359882527734SSukumar Swaminathan 	uint32_t  Rsvd5;
359982527734SSukumar Swaminathan 
360082527734SSukumar Swaminathan } RQ_CONTEXT;
360182527734SSukumar Swaminathan 
3602*8f23e9faSHans Rosenfeld typedef	struct _RQ_CONTEXT_V1
3603*8f23e9faSHans Rosenfeld {
3604*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3605*8f23e9faSHans Rosenfeld 	uint32_t	RqeCnt:16;
3606*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:4;
3607*8f23e9faSHans Rosenfeld 	uint32_t	RqeSize:4;
3608*8f23e9faSHans Rosenfeld 	uint32_t	PageSize:8;
3609*8f23e9faSHans Rosenfeld 
3610*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2;
3611*8f23e9faSHans Rosenfeld 
3612*8f23e9faSHans Rosenfeld 	uint32_t	CQId:16;
3613*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd:16;
3614*8f23e9faSHans Rosenfeld #endif
3615*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3616*8f23e9faSHans Rosenfeld 	uint32_t	PageSize:8;
3617*8f23e9faSHans Rosenfeld 	uint32_t	RqeSize:4;
3618*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd1:4;
3619*8f23e9faSHans Rosenfeld 	uint32_t	RqeCnt:16;
3620*8f23e9faSHans Rosenfeld 
3621*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd2;
3622*8f23e9faSHans Rosenfeld 
3623*8f23e9faSHans Rosenfeld 	uint32_t	Rsvd:16;
3624*8f23e9faSHans Rosenfeld 	uint32_t	CQId:16;
3625*8f23e9faSHans Rosenfeld #endif
3626*8f23e9faSHans Rosenfeld 
3627*8f23e9faSHans Rosenfeld 	uint32_t	BufferSize;
3628*8f23e9faSHans Rosenfeld 
3629*8f23e9faSHans Rosenfeld } RQ_CONTEXT_V1;
3630*8f23e9faSHans Rosenfeld 
3631*8f23e9faSHans Rosenfeld /* RqeSize */
3632*8f23e9faSHans Rosenfeld #define	RQE_SIZE_8_BYTES	0x02
3633*8f23e9faSHans Rosenfeld #define	RQE_SIZE_16_BYTES	0x03
3634*8f23e9faSHans Rosenfeld #define	RQE_SIZE_32_BYTES	0x04
3635*8f23e9faSHans Rosenfeld #define	RQE_SIZE_64_BYTES	0x05
3636*8f23e9faSHans Rosenfeld #define	RQE_SIZE_128_BYTES	0x06
3637*8f23e9faSHans Rosenfeld 
3638*8f23e9faSHans Rosenfeld /* RQ PageSize */
3639*8f23e9faSHans Rosenfeld #define	RQ_PAGE_SIZE_4K		0x01
3640*8f23e9faSHans Rosenfeld #define	RQ_PAGE_SIZE_8K		0x02
3641*8f23e9faSHans Rosenfeld #define	RQ_PAGE_SIZE_16K	0x04
3642*8f23e9faSHans Rosenfeld #define	RQ_PAGE_SIZE_32K	0x08
3643*8f23e9faSHans Rosenfeld #define	RQ_PAGE_SIZE_64K	0x10
3644*8f23e9faSHans Rosenfeld 
364582527734SSukumar Swaminathan 
364682527734SSukumar Swaminathan /* IOCTL_COMMON_EQ_CREATE */
364782527734SSukumar Swaminathan typedef	struct
364882527734SSukumar Swaminathan {
364982527734SSukumar Swaminathan 	union
365082527734SSukumar Swaminathan 	{
365182527734SSukumar Swaminathan 		struct
365282527734SSukumar Swaminathan 		{
365382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
365482527734SSukumar Swaminathan 			uint16_t	Rsvd1;
365582527734SSukumar Swaminathan 			uint16_t	NumPages;
365682527734SSukumar Swaminathan #endif
365782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
365882527734SSukumar Swaminathan 			uint16_t	NumPages;
365982527734SSukumar Swaminathan 			uint16_t	Rsvd1;
366082527734SSukumar Swaminathan #endif
366182527734SSukumar Swaminathan 			EQ_CONTEXT	EQContext;
366282527734SSukumar Swaminathan 			BE_PHYS_ADDR	Pages[8];
366382527734SSukumar Swaminathan 		} request;
366482527734SSukumar Swaminathan 
366582527734SSukumar Swaminathan 		struct
366682527734SSukumar Swaminathan 		{
366782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
3668*8f23e9faSHans Rosenfeld 			uint16_t	MsiIndex; /* V1 only */
366982527734SSukumar Swaminathan 			uint16_t	EQId;
367082527734SSukumar Swaminathan #endif
367182527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
367282527734SSukumar Swaminathan 			uint16_t	EQId;
3673*8f23e9faSHans Rosenfeld 			uint16_t	MsiIndex; /* V1 only */
367482527734SSukumar Swaminathan #endif
367582527734SSukumar Swaminathan 		} response;
367682527734SSukumar Swaminathan 	} params;
367782527734SSukumar Swaminathan 
367882527734SSukumar Swaminathan } IOCTL_COMMON_EQ_CREATE;
367982527734SSukumar Swaminathan 
368082527734SSukumar Swaminathan 
3681*8f23e9faSHans Rosenfeld typedef	struct
3682*8f23e9faSHans Rosenfeld {
3683*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3684*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd1:24;		/* Word 0 */
3685*8f23e9faSHans Rosenfeld 		uint32_t	ProtocolType:8;
3686*8f23e9faSHans Rosenfeld 
3687*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd3:3;		/* Word 1 */
3688*8f23e9faSHans Rosenfeld 		uint32_t	SliHint2:5;
3689*8f23e9faSHans Rosenfeld 		uint32_t	SliHint1:8;
3690*8f23e9faSHans Rosenfeld 		uint32_t	IfType:4;
3691*8f23e9faSHans Rosenfeld 		uint32_t	SliFamily:4;
3692*8f23e9faSHans Rosenfeld 		uint32_t	Revision:4;
3693*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd2:3;
3694*8f23e9faSHans Rosenfeld 		uint32_t	FT:1;
3695*8f23e9faSHans Rosenfeld 
3696*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd3:4;		/* Word 2 */
3697*8f23e9faSHans Rosenfeld 		uint32_t	EqeCntMethod:4;
3698*8f23e9faSHans Rosenfeld 		uint32_t	EqPageSize:8;
3699*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd2:4;
3700*8f23e9faSHans Rosenfeld 		uint32_t	EqeSize:4;
3701*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd1:4;
3702*8f23e9faSHans Rosenfeld 		uint32_t	EqPageCnt:4;
3703*8f23e9faSHans Rosenfeld 
3704*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd4:16;		/* Word 3 */
3705*8f23e9faSHans Rosenfeld 		uint32_t	EqeCntMask:16;
3706*8f23e9faSHans Rosenfeld 
3707*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd3:4;		/* Word 4 */
3708*8f23e9faSHans Rosenfeld 		uint32_t	CqeCntMethod:4;
3709*8f23e9faSHans Rosenfeld 		uint32_t	CqPageSize:8;
3710*8f23e9faSHans Rosenfeld 		uint32_t	CQV:2;
3711*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd2:2;
3712*8f23e9faSHans Rosenfeld 		uint32_t	CqeSize:4;
3713*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd1:4;
3714*8f23e9faSHans Rosenfeld 		uint32_t	CqPageCnt:4;
3715*8f23e9faSHans Rosenfeld 
3716*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd4:16;		/* Word 5 */
3717*8f23e9faSHans Rosenfeld 		uint32_t	CqeCntMask:16;
3718*8f23e9faSHans Rosenfeld 
3719*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd2:4;		/* Word 6 */
3720*8f23e9faSHans Rosenfeld 		uint32_t	MqeCntMethod:4;
3721*8f23e9faSHans Rosenfeld 		uint32_t	MqPageSize:8;
3722*8f23e9faSHans Rosenfeld 		uint32_t	MQV:2;
3723*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd1:10;
3724*8f23e9faSHans Rosenfeld 		uint32_t	MqPageCnt:4;
3725*8f23e9faSHans Rosenfeld 
3726*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd3:16;		/* Word 7 */
3727*8f23e9faSHans Rosenfeld 		uint32_t	MqeCntMask:16;
3728*8f23e9faSHans Rosenfeld 
3729*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd3:4;		/* Word 8 */
3730*8f23e9faSHans Rosenfeld 		uint32_t	WqeCntMethod:4;
3731*8f23e9faSHans Rosenfeld 		uint32_t	WqPageSize:8;
3732*8f23e9faSHans Rosenfeld 		uint32_t	WQV:2;
3733*8f23e9faSHans Rosenfeld 		uint32_t	WqeRsvd2:2;
3734*8f23e9faSHans Rosenfeld 		uint32_t	WqeSize:4;
3735*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd1:4;
3736*8f23e9faSHans Rosenfeld 		uint32_t	WqPageCnt:4;
3737*8f23e9faSHans Rosenfeld 
3738*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd4:16;		/* Word 9 */
3739*8f23e9faSHans Rosenfeld 		uint32_t	WqeCntMask:16;
3740*8f23e9faSHans Rosenfeld 
3741*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd3:4;		/* Word 10 */
3742*8f23e9faSHans Rosenfeld 		uint32_t	RqeCntMethod:4;
3743*8f23e9faSHans Rosenfeld 		uint32_t	RqPageSize:8;
3744*8f23e9faSHans Rosenfeld 		uint32_t	RQV:2;
3745*8f23e9faSHans Rosenfeld 		uint32_t	RqeRsvd2:2;
3746*8f23e9faSHans Rosenfeld 		uint32_t	RqeSize:4;
3747*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd1:4;
3748*8f23e9faSHans Rosenfeld 		uint32_t	RqPageCnt:4;
3749*8f23e9faSHans Rosenfeld 
3750*8f23e9faSHans Rosenfeld 		uint32_t	RqDbWin:4;		/* Word 11 */
3751*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd4:12;
3752*8f23e9faSHans Rosenfeld 		uint32_t	RqeCntMask:16;
3753*8f23e9faSHans Rosenfeld 
3754*8f23e9faSHans Rosenfeld 		uint32_t	Loopback:4;		/* Word 12 */
3755*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd4:12;
3756*8f23e9faSHans Rosenfeld 		uint32_t	PHWQ:1;
3757*8f23e9faSHans Rosenfeld 		uint32_t	PHON:1;
3758*8f23e9faSHans Rosenfeld 		uint32_t	PHOFF:1;
3759*8f23e9faSHans Rosenfeld 		uint32_t	TRIR:1;
3760*8f23e9faSHans Rosenfeld 		uint32_t	TRTY:1;
3761*8f23e9faSHans Rosenfeld 		uint32_t	TCCA:1;
3762*8f23e9faSHans Rosenfeld 		uint32_t	MWQE:1;
3763*8f23e9faSHans Rosenfeld 		uint32_t	ASSI:1;
3764*8f23e9faSHans Rosenfeld 		uint32_t	TERP:1;
3765*8f23e9faSHans Rosenfeld 		uint32_t	TGT:1;
3766*8f23e9faSHans Rosenfeld 		uint32_t	AREG:1;
3767*8f23e9faSHans Rosenfeld 		uint32_t	FBRR:1;
3768*8f23e9faSHans Rosenfeld 		uint32_t	SGLR:1;
3769*8f23e9faSHans Rosenfeld 		uint32_t	HDRR:1;
3770*8f23e9faSHans Rosenfeld 		uint32_t	EXT:1;
3771*8f23e9faSHans Rosenfeld 		uint32_t	FCOE:1;
3772*8f23e9faSHans Rosenfeld 
3773*8f23e9faSHans Rosenfeld 		uint32_t	SgeLength;		/* Word 13 */
3774*8f23e9faSHans Rosenfeld 
3775*8f23e9faSHans Rosenfeld 		uint32_t	SglRsvd2:8;		/* Word 14 */
3776*8f23e9faSHans Rosenfeld 		uint32_t	SglAlign:8;
3777*8f23e9faSHans Rosenfeld 		uint32_t	SglPageSize:8;
3778*8f23e9faSHans Rosenfeld 		uint32_t	SglRsvd1:4;
3779*8f23e9faSHans Rosenfeld 		uint32_t	SglPageCnt:4;
3780*8f23e9faSHans Rosenfeld 
3781*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd5:16;		/* Word 15 */
3782*8f23e9faSHans Rosenfeld 		uint32_t	MinRqSize:16;
3783*8f23e9faSHans Rosenfeld 
3784*8f23e9faSHans Rosenfeld 		uint32_t	MaxRqSize;		/* Word 16 */
3785*8f23e9faSHans Rosenfeld 
3786*8f23e9faSHans Rosenfeld 		uint32_t	RPIMax:16;
3787*8f23e9faSHans Rosenfeld 		uint32_t	XRIMax:16;		/* Word 17 */
3788*8f23e9faSHans Rosenfeld 
3789*8f23e9faSHans Rosenfeld 		uint32_t	VFIMax:16;
3790*8f23e9faSHans Rosenfeld 		uint32_t	VPIMax:16;		/* Word 18 */
3791*8f23e9faSHans Rosenfeld #endif
3792*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3793*8f23e9faSHans Rosenfeld 		uint32_t	ProtocolType:8;		/* Word 0 */
3794*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd1:24;
3795*8f23e9faSHans Rosenfeld 
3796*8f23e9faSHans Rosenfeld 		uint32_t	FT:1;			/* Word 1 */
3797*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd2:3;
3798*8f23e9faSHans Rosenfeld 		uint32_t	Revision:4;
3799*8f23e9faSHans Rosenfeld 		uint32_t	SliFamily:4;
3800*8f23e9faSHans Rosenfeld 		uint32_t	IfType:4;
3801*8f23e9faSHans Rosenfeld 		uint32_t	SliHint1:8;
3802*8f23e9faSHans Rosenfeld 		uint32_t	SliHint2:5;
3803*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd3:3;
3804*8f23e9faSHans Rosenfeld 
3805*8f23e9faSHans Rosenfeld 		uint32_t	EqPageCnt:4;		/* Word 2 */
3806*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd1:4;
3807*8f23e9faSHans Rosenfeld 		uint32_t	EqeSize:4;
3808*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd2:4;
3809*8f23e9faSHans Rosenfeld 		uint32_t	EqPageSize:8;
3810*8f23e9faSHans Rosenfeld 		uint32_t	EqeCntMethod:4;
3811*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd3:4;
3812*8f23e9faSHans Rosenfeld 
3813*8f23e9faSHans Rosenfeld 		uint32_t	EqeCntMask:16;		/* Word 3 */
3814*8f23e9faSHans Rosenfeld 		uint32_t	EqRsvd4:16;
3815*8f23e9faSHans Rosenfeld 
3816*8f23e9faSHans Rosenfeld 		uint32_t	CqPageCnt:4;		/* Word 4 */
3817*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd1:4;
3818*8f23e9faSHans Rosenfeld 		uint32_t	CqeSize:4;
3819*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd2:2;
3820*8f23e9faSHans Rosenfeld 		uint32_t	CQV:2;
3821*8f23e9faSHans Rosenfeld 		uint32_t	CqPageSize:8;
3822*8f23e9faSHans Rosenfeld 		uint32_t	CqeCntMethod:4;
3823*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd3:4;
3824*8f23e9faSHans Rosenfeld 
3825*8f23e9faSHans Rosenfeld 		uint32_t	CqeCntMask:16;		/* Word 5 */
3826*8f23e9faSHans Rosenfeld 		uint32_t	CqRsvd4:16;
3827*8f23e9faSHans Rosenfeld 
3828*8f23e9faSHans Rosenfeld 		uint32_t	MqPageCnt:4;		/* Word 6 */
3829*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd1:10;
3830*8f23e9faSHans Rosenfeld 		uint32_t	MQV:2;
3831*8f23e9faSHans Rosenfeld 		uint32_t	MqPageSize:8;
3832*8f23e9faSHans Rosenfeld 		uint32_t	MqeCntMethod:4;
3833*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd2:4;
3834*8f23e9faSHans Rosenfeld 
3835*8f23e9faSHans Rosenfeld 		uint32_t	MqeCntMask:16;		/* Word 7 */
3836*8f23e9faSHans Rosenfeld 		uint32_t	MqRsvd3:16;
3837*8f23e9faSHans Rosenfeld 
3838*8f23e9faSHans Rosenfeld 		uint32_t	WqPageCnt:4;		/* Word 8 */
3839*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd1:4;
3840*8f23e9faSHans Rosenfeld 		uint32_t	WqeSize:4;
3841*8f23e9faSHans Rosenfeld 		uint32_t	WqeRsvd2:2;
3842*8f23e9faSHans Rosenfeld 		uint32_t	WQV:2;
3843*8f23e9faSHans Rosenfeld 		uint32_t	WqPageSize:8;
3844*8f23e9faSHans Rosenfeld 		uint32_t	WqeCntMethod:4;
3845*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd3:4;
3846*8f23e9faSHans Rosenfeld 
3847*8f23e9faSHans Rosenfeld 		uint32_t	WqeCntMask:16;		/* Word 9 */
3848*8f23e9faSHans Rosenfeld 		uint32_t	WqRsvd4:16;
3849*8f23e9faSHans Rosenfeld 
3850*8f23e9faSHans Rosenfeld 		uint32_t	RqPageCnt:4;		/* Word 10 */
3851*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd1:4;
3852*8f23e9faSHans Rosenfeld 		uint32_t	RqeSize:4;
3853*8f23e9faSHans Rosenfeld 		uint32_t	RqeRsvd2:2;
3854*8f23e9faSHans Rosenfeld 		uint32_t	RQV:2;
3855*8f23e9faSHans Rosenfeld 		uint32_t	RqPageSize:8;
3856*8f23e9faSHans Rosenfeld 		uint32_t	RqeCntMethod:4;
3857*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd3:4;
3858*8f23e9faSHans Rosenfeld 
3859*8f23e9faSHans Rosenfeld 		uint32_t	RqeCntMask:16;		/* Word 11 */
3860*8f23e9faSHans Rosenfeld 		uint32_t	RqRsvd4:12;
3861*8f23e9faSHans Rosenfeld 		uint32_t	RqDbWin:4;
3862*8f23e9faSHans Rosenfeld 
3863*8f23e9faSHans Rosenfeld 		uint32_t	FCOE:1;			/* Word 12 */
3864*8f23e9faSHans Rosenfeld 		uint32_t	EXT:1;
3865*8f23e9faSHans Rosenfeld 		uint32_t	HDRR:1;
3866*8f23e9faSHans Rosenfeld 		uint32_t	SGLR:1;
3867*8f23e9faSHans Rosenfeld 		uint32_t	FBRR:1;
3868*8f23e9faSHans Rosenfeld 		uint32_t	AREG:1;
3869*8f23e9faSHans Rosenfeld 		uint32_t	TGT:1;
3870*8f23e9faSHans Rosenfeld 		uint32_t	TERP:1;
3871*8f23e9faSHans Rosenfeld 		uint32_t	ASSI:1;
3872*8f23e9faSHans Rosenfeld 		uint32_t	MWQE:1;
3873*8f23e9faSHans Rosenfeld 		uint32_t	TCCA:1;
3874*8f23e9faSHans Rosenfeld 		uint32_t	TRTY:1;
3875*8f23e9faSHans Rosenfeld 		uint32_t	TRIR:1;
3876*8f23e9faSHans Rosenfeld 		uint32_t	PHOFF:1;
3877*8f23e9faSHans Rosenfeld 		uint32_t	PHON:1;
3878*8f23e9faSHans Rosenfeld 		uint32_t	PHWQ:1;
3879*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd4:12;
3880*8f23e9faSHans Rosenfeld 		uint32_t	Loopback:4;
3881*8f23e9faSHans Rosenfeld 
3882*8f23e9faSHans Rosenfeld 		uint32_t	SgeLength;		/* Word 13 */
3883*8f23e9faSHans Rosenfeld 
3884*8f23e9faSHans Rosenfeld 		uint32_t	SglPageCnt:4;		/* Word 14 */
3885*8f23e9faSHans Rosenfeld 		uint32_t	SglRsvd1:4;
3886*8f23e9faSHans Rosenfeld 		uint32_t	SglPageSize:8;
3887*8f23e9faSHans Rosenfeld 		uint32_t	SglAlign:8;
3888*8f23e9faSHans Rosenfeld 		uint32_t	SglRsvd2:8;
3889*8f23e9faSHans Rosenfeld 
3890*8f23e9faSHans Rosenfeld 		uint32_t	MinRqSize:16;		/* Word 15 */
3891*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd5:16;
3892*8f23e9faSHans Rosenfeld 
3893*8f23e9faSHans Rosenfeld 		uint32_t	MaxRqSize;		/* Word 16 */
3894*8f23e9faSHans Rosenfeld 
3895*8f23e9faSHans Rosenfeld 		uint32_t	XRIMax:16;		/* Word 17 */
3896*8f23e9faSHans Rosenfeld 		uint32_t	RPIMax:16;
3897*8f23e9faSHans Rosenfeld 
3898*8f23e9faSHans Rosenfeld 		uint32_t	VPIMax:16;		/* Word 18 */
3899*8f23e9faSHans Rosenfeld 		uint32_t	VFIMax:16;
3900*8f23e9faSHans Rosenfeld #endif
3901*8f23e9faSHans Rosenfeld 
3902*8f23e9faSHans Rosenfeld 		uint32_t	Rsvd6;			/* Word 19 */
3903*8f23e9faSHans Rosenfeld 
3904*8f23e9faSHans Rosenfeld } sli_params_t;
3905*8f23e9faSHans Rosenfeld 
3906*8f23e9faSHans Rosenfeld /* SliFamily values */
3907*8f23e9faSHans Rosenfeld #define	SLI_FAMILY_BE2		0x0
3908*8f23e9faSHans Rosenfeld #define	SLI_FAMILY_BE3		0x1
3909*8f23e9faSHans Rosenfeld #define	SLI_FAMILY_LANCER_A	0xA
3910*8f23e9faSHans Rosenfeld #define	SLI_FAMILY_LANCER_B	0xB
3911*8f23e9faSHans Rosenfeld 
3912*8f23e9faSHans Rosenfeld 
3913*8f23e9faSHans Rosenfeld 
3914*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_SLI4_PARAMS */
3915*8f23e9faSHans Rosenfeld typedef	struct
3916*8f23e9faSHans Rosenfeld {
3917*8f23e9faSHans Rosenfeld 	union
3918*8f23e9faSHans Rosenfeld 	{
3919*8f23e9faSHans Rosenfeld 		struct
3920*8f23e9faSHans Rosenfeld 		{
3921*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd1;
3922*8f23e9faSHans Rosenfeld 		} request;
3923*8f23e9faSHans Rosenfeld 
3924*8f23e9faSHans Rosenfeld 		struct
3925*8f23e9faSHans Rosenfeld 		{
3926*8f23e9faSHans Rosenfeld 			sli_params_t param;
3927*8f23e9faSHans Rosenfeld 		} response;
3928*8f23e9faSHans Rosenfeld 	} params;
3929*8f23e9faSHans Rosenfeld 
3930*8f23e9faSHans Rosenfeld } IOCTL_COMMON_SLI4_PARAMS;
3931*8f23e9faSHans Rosenfeld 
3932*8f23e9faSHans Rosenfeld 
3933*8f23e9faSHans Rosenfeld #define	MAX_EXTENTS		16 /* 1 to 104 */
3934*8f23e9faSHans Rosenfeld 
3935*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_EXTENTS */
3936*8f23e9faSHans Rosenfeld typedef	struct
3937*8f23e9faSHans Rosenfeld {
3938*8f23e9faSHans Rosenfeld 	union
3939*8f23e9faSHans Rosenfeld 	{
3940*8f23e9faSHans Rosenfeld 		struct
3941*8f23e9faSHans Rosenfeld 		{
3942*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3943*8f23e9faSHans Rosenfeld 			uint16_t	RscCnt;
3944*8f23e9faSHans Rosenfeld 			uint16_t	RscType;
3945*8f23e9faSHans Rosenfeld #endif
3946*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3947*8f23e9faSHans Rosenfeld 			uint16_t	RscType;
3948*8f23e9faSHans Rosenfeld 			uint16_t	RscCnt;
3949*8f23e9faSHans Rosenfeld #endif
3950*8f23e9faSHans Rosenfeld 		} request;
3951*8f23e9faSHans Rosenfeld 
3952*8f23e9faSHans Rosenfeld 		struct
3953*8f23e9faSHans Rosenfeld 		{
3954*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
3955*8f23e9faSHans Rosenfeld 			uint16_t	ExtentSize;
3956*8f23e9faSHans Rosenfeld 			uint16_t	ExtentCnt;
3957*8f23e9faSHans Rosenfeld #endif
3958*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
3959*8f23e9faSHans Rosenfeld 			uint16_t	ExtentCnt;
3960*8f23e9faSHans Rosenfeld 			uint16_t	ExtentSize;
3961*8f23e9faSHans Rosenfeld #endif
3962*8f23e9faSHans Rosenfeld 
3963*8f23e9faSHans Rosenfeld 			uint16_t	RscId[MAX_EXTENTS];
3964*8f23e9faSHans Rosenfeld 
3965*8f23e9faSHans Rosenfeld 		} response;
3966*8f23e9faSHans Rosenfeld 	} params;
3967*8f23e9faSHans Rosenfeld 
3968*8f23e9faSHans Rosenfeld } IOCTL_COMMON_EXTENTS;
3969*8f23e9faSHans Rosenfeld 
3970*8f23e9faSHans Rosenfeld /* RscType */
3971*8f23e9faSHans Rosenfeld #define	RSC_TYPE_FCOE_VFI	0x20
3972*8f23e9faSHans Rosenfeld #define	RSC_TYPE_FCOE_VPI	0x21
3973*8f23e9faSHans Rosenfeld #define	RSC_TYPE_FCOE_RPI	0x22
3974*8f23e9faSHans Rosenfeld #define	RSC_TYPE_FCOE_XRI	0x23
3975*8f23e9faSHans Rosenfeld 
3976*8f23e9faSHans Rosenfeld 
3977*8f23e9faSHans Rosenfeld 
397882527734SSukumar Swaminathan /* IOCTL_COMMON_CQ_CREATE */
397982527734SSukumar Swaminathan typedef	struct
398082527734SSukumar Swaminathan {
398182527734SSukumar Swaminathan 	union
398282527734SSukumar Swaminathan 	{
398382527734SSukumar Swaminathan 		struct
398482527734SSukumar Swaminathan 		{
398582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
398682527734SSukumar Swaminathan 			uint16_t	Rsvd1;
398782527734SSukumar Swaminathan 			uint16_t	NumPages;
398882527734SSukumar Swaminathan #endif
398982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
399082527734SSukumar Swaminathan 			uint16_t	NumPages;
399182527734SSukumar Swaminathan 			uint16_t	Rsvd1;
399282527734SSukumar Swaminathan #endif
399382527734SSukumar Swaminathan 			CQ_CONTEXT	CQContext;
399482527734SSukumar Swaminathan 			BE_PHYS_ADDR	Pages[4];
399582527734SSukumar Swaminathan 		} request;
399682527734SSukumar Swaminathan 
399782527734SSukumar Swaminathan 		struct
399882527734SSukumar Swaminathan 		{
399982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
400082527734SSukumar Swaminathan 			uint16_t	Rsvd1;
400182527734SSukumar Swaminathan 			uint16_t	CQId;
400282527734SSukumar Swaminathan #endif
400382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
400482527734SSukumar Swaminathan 			uint16_t	CQId;
400582527734SSukumar Swaminathan 			uint16_t	Rsvd1;
400682527734SSukumar Swaminathan #endif
400782527734SSukumar Swaminathan 		} response;
400882527734SSukumar Swaminathan 	} params;
400982527734SSukumar Swaminathan 
401082527734SSukumar Swaminathan } IOCTL_COMMON_CQ_CREATE;
401182527734SSukumar Swaminathan 
401282527734SSukumar Swaminathan 
4013*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_CQ_CREATE_V2 */
4014*8f23e9faSHans Rosenfeld typedef	struct
4015*8f23e9faSHans Rosenfeld {
4016*8f23e9faSHans Rosenfeld 	union
4017*8f23e9faSHans Rosenfeld 	{
4018*8f23e9faSHans Rosenfeld 		struct
4019*8f23e9faSHans Rosenfeld 		{
4020*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4021*8f23e9faSHans Rosenfeld 			uint8_t		Rsvd1;
4022*8f23e9faSHans Rosenfeld 			uint8_t		PageSize;
4023*8f23e9faSHans Rosenfeld 			uint16_t	NumPages;
4024*8f23e9faSHans Rosenfeld #endif
4025*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4026*8f23e9faSHans Rosenfeld 			uint16_t	NumPages;
4027*8f23e9faSHans Rosenfeld 			uint8_t		PageSize;
4028*8f23e9faSHans Rosenfeld 			uint8_t		Rsvd1;
4029*8f23e9faSHans Rosenfeld #endif
4030*8f23e9faSHans Rosenfeld 			CQ_CONTEXT_V2	CQContext;
4031*8f23e9faSHans Rosenfeld 			BE_PHYS_ADDR	Pages[8];
4032*8f23e9faSHans Rosenfeld 		} request;
4033*8f23e9faSHans Rosenfeld 
4034*8f23e9faSHans Rosenfeld 		struct
4035*8f23e9faSHans Rosenfeld 		{
4036*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4037*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd1;
4038*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4039*8f23e9faSHans Rosenfeld #endif
4040*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4041*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4042*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd1;
4043*8f23e9faSHans Rosenfeld #endif
4044*8f23e9faSHans Rosenfeld 		} response;
4045*8f23e9faSHans Rosenfeld 	} params;
4046*8f23e9faSHans Rosenfeld 
4047*8f23e9faSHans Rosenfeld } IOCTL_COMMON_CQ_CREATE_V2;
4048*8f23e9faSHans Rosenfeld 
4049*8f23e9faSHans Rosenfeld #define	CQ_PAGE_SIZE_4K		0x01
4050*8f23e9faSHans Rosenfeld #define	CQ_PAGE_SIZE_8K		0x02
4051*8f23e9faSHans Rosenfeld #define	CQ_PAGE_SIZE_16K	0x04
4052*8f23e9faSHans Rosenfeld #define	CQ_PAGE_SIZE_32K	0x08
4053*8f23e9faSHans Rosenfeld #define	CQ_PAGE_SIZE_64K	0x10
4054*8f23e9faSHans Rosenfeld 
4055*8f23e9faSHans Rosenfeld 
4056*8f23e9faSHans Rosenfeld 
405782527734SSukumar Swaminathan /* IOCTL_COMMON_MQ_CREATE */
405882527734SSukumar Swaminathan typedef	struct
405982527734SSukumar Swaminathan {
406082527734SSukumar Swaminathan 	union
406182527734SSukumar Swaminathan 	{
406282527734SSukumar Swaminathan 		struct
406382527734SSukumar Swaminathan 		{
406482527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
406582527734SSukumar Swaminathan 			uint16_t	Rsvd1;
406682527734SSukumar Swaminathan 			uint16_t	NumPages;
406782527734SSukumar Swaminathan #endif
406882527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
406982527734SSukumar Swaminathan 			uint16_t	NumPages;
407082527734SSukumar Swaminathan 			uint16_t	Rsvd1;
407182527734SSukumar Swaminathan #endif
407282527734SSukumar Swaminathan 			MQ_CONTEXT	MQContext;
407382527734SSukumar Swaminathan 			BE_PHYS_ADDR	Pages[8];
407482527734SSukumar Swaminathan 		} request;
407582527734SSukumar Swaminathan 
407682527734SSukumar Swaminathan 		struct
407782527734SSukumar Swaminathan 		{
407882527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
407982527734SSukumar Swaminathan 			uint16_t	Rsvd1;
408082527734SSukumar Swaminathan 			uint16_t	MQId;
408182527734SSukumar Swaminathan #endif
408282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
408382527734SSukumar Swaminathan 			uint16_t	MQId;
408482527734SSukumar Swaminathan 			uint16_t	Rsvd1;
408582527734SSukumar Swaminathan #endif
408682527734SSukumar Swaminathan 		} response;
408782527734SSukumar Swaminathan 	} params;
408882527734SSukumar Swaminathan 
408982527734SSukumar Swaminathan } IOCTL_COMMON_MQ_CREATE;
409082527734SSukumar Swaminathan 
409182527734SSukumar Swaminathan 
4092*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_MQ_CREATE_EXT */
4093a9800bebSGarrett D'Amore typedef	struct
4094a9800bebSGarrett D'Amore {
4095a9800bebSGarrett D'Amore 	union
4096a9800bebSGarrett D'Amore 	{
4097a9800bebSGarrett D'Amore 		struct
4098a9800bebSGarrett D'Amore 		{
4099a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN
4100a9800bebSGarrett D'Amore 			uint16_t	rsvd0;
4101a9800bebSGarrett D'Amore 			uint16_t	num_pages;
4102a9800bebSGarrett D'Amore #endif
4103a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN
4104a9800bebSGarrett D'Amore 			uint16_t	num_pages;
4105a9800bebSGarrett D'Amore 			uint16_t	rsvd0;
4106a9800bebSGarrett D'Amore #endif
4107a9800bebSGarrett D'Amore 			uint32_t	async_event_bitmap;
4108a9800bebSGarrett D'Amore 
4109*8f23e9faSHans Rosenfeld #define	ASYNC_LINK_EVENT	0x00000002
4110*8f23e9faSHans Rosenfeld #define	ASYNC_FCF_EVENT		0x00000004
4111*8f23e9faSHans Rosenfeld #define	ASYNC_DCBX_EVENT	0x00000008
4112*8f23e9faSHans Rosenfeld #define	ASYNC_iSCSI_EVENT	0x00000010
4113*8f23e9faSHans Rosenfeld #define	ASYNC_GROUP5_EVENT	0x00000020
4114*8f23e9faSHans Rosenfeld #define	ASYNC_FC_EVENT		0x00010000
4115*8f23e9faSHans Rosenfeld #define	ASYNC_PORT_EVENT	0x00020000
4116*8f23e9faSHans Rosenfeld #define	ASYNC_VF_EVENT		0x00040000
4117*8f23e9faSHans Rosenfeld #define	ASYNC_MR_EVENT		0x00080000
4118a9800bebSGarrett D'Amore 
4119a9800bebSGarrett D'Amore 			MQ_CONTEXT	context;
4120a9800bebSGarrett D'Amore 			BE_PHYS_ADDR	pages[8];
4121a9800bebSGarrett D'Amore 		} request;
4122a9800bebSGarrett D'Amore 
4123a9800bebSGarrett D'Amore 		struct
4124a9800bebSGarrett D'Amore 		{
4125a9800bebSGarrett D'Amore #ifdef EMLXS_BIG_ENDIAN
4126a9800bebSGarrett D'Amore 			uint16_t	rsvd0;
4127*8f23e9faSHans Rosenfeld 			uint16_t	MQId;
4128a9800bebSGarrett D'Amore #endif
4129a9800bebSGarrett D'Amore #ifdef EMLXS_LITTLE_ENDIAN
4130*8f23e9faSHans Rosenfeld 			uint16_t	MQId;
4131a9800bebSGarrett D'Amore 			uint16_t	rsvd0;
4132a9800bebSGarrett D'Amore #endif
4133a9800bebSGarrett D'Amore 		} response;
4134a9800bebSGarrett D'Amore 
4135a9800bebSGarrett D'Amore 	} params;
4136a9800bebSGarrett D'Amore 
4137*8f23e9faSHans Rosenfeld } IOCTL_COMMON_MQ_CREATE_EXT;
4138*8f23e9faSHans Rosenfeld 
4139*8f23e9faSHans Rosenfeld 
4140*8f23e9faSHans Rosenfeld /* IOCTL_COMMON_MQ_CREATE_EXT_V1 */
4141*8f23e9faSHans Rosenfeld typedef	struct
4142*8f23e9faSHans Rosenfeld {
4143*8f23e9faSHans Rosenfeld 	union
4144*8f23e9faSHans Rosenfeld 	{
4145*8f23e9faSHans Rosenfeld 		struct
4146*8f23e9faSHans Rosenfeld 		{
4147*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4148*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4149*8f23e9faSHans Rosenfeld 			uint16_t	num_pages;
4150*8f23e9faSHans Rosenfeld #endif
4151*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4152*8f23e9faSHans Rosenfeld 			uint16_t	num_pages;
4153*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4154*8f23e9faSHans Rosenfeld #endif
4155*8f23e9faSHans Rosenfeld 			uint32_t	async_event_bitmap;
4156*8f23e9faSHans Rosenfeld 
4157*8f23e9faSHans Rosenfeld 			MQ_CONTEXT_V1	context;
4158*8f23e9faSHans Rosenfeld 			BE_PHYS_ADDR	pages[8];
4159*8f23e9faSHans Rosenfeld 		} request;
4160*8f23e9faSHans Rosenfeld 
4161*8f23e9faSHans Rosenfeld 		struct
4162*8f23e9faSHans Rosenfeld 		{
4163*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4164*8f23e9faSHans Rosenfeld 			uint16_t	rsvd0;
4165*8f23e9faSHans Rosenfeld 			uint16_t	MQId;
4166*8f23e9faSHans Rosenfeld #endif
4167*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4168*8f23e9faSHans Rosenfeld 			uint16_t	MQId;
4169*8f23e9faSHans Rosenfeld 			uint16_t	rsvd0;
4170*8f23e9faSHans Rosenfeld #endif
4171*8f23e9faSHans Rosenfeld 		} response;
4172*8f23e9faSHans Rosenfeld 
4173*8f23e9faSHans Rosenfeld 	} params;
4174*8f23e9faSHans Rosenfeld 
4175*8f23e9faSHans Rosenfeld } IOCTL_COMMON_MQ_CREATE_EXT_V1;
4176a9800bebSGarrett D'Amore 
4177a9800bebSGarrett D'Amore 
417882527734SSukumar Swaminathan /* IOCTL_FCOE_RQ_CREATE */
417982527734SSukumar Swaminathan typedef	struct
418082527734SSukumar Swaminathan {
418182527734SSukumar Swaminathan 	union
418282527734SSukumar Swaminathan 	{
418382527734SSukumar Swaminathan 		struct
418482527734SSukumar Swaminathan 		{
418582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
4186*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd0;
418782527734SSukumar Swaminathan 			uint16_t	NumPages;
418882527734SSukumar Swaminathan #endif
418982527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
419082527734SSukumar Swaminathan 			uint16_t	NumPages;
4191*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd0;
419282527734SSukumar Swaminathan #endif
419382527734SSukumar Swaminathan 			RQ_CONTEXT	RQContext;
419482527734SSukumar Swaminathan 			BE_PHYS_ADDR	Pages[8];
419582527734SSukumar Swaminathan 		} request;
419682527734SSukumar Swaminathan 
419782527734SSukumar Swaminathan 		struct
419882527734SSukumar Swaminathan 		{
419982527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
420082527734SSukumar Swaminathan 			uint16_t	Rsvd1;
420182527734SSukumar Swaminathan 			uint16_t	RQId;
420282527734SSukumar Swaminathan #endif
420382527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
420482527734SSukumar Swaminathan 			uint16_t	RQId;
420582527734SSukumar Swaminathan 			uint16_t	Rsvd1;
420682527734SSukumar Swaminathan #endif
420782527734SSukumar Swaminathan 		} response;
420882527734SSukumar Swaminathan 
420982527734SSukumar Swaminathan 	} params;
421082527734SSukumar Swaminathan 
421182527734SSukumar Swaminathan } IOCTL_FCOE_RQ_CREATE;
421282527734SSukumar Swaminathan 
421382527734SSukumar Swaminathan 
4214*8f23e9faSHans Rosenfeld /* IOCTL_FCOE_RQ_CREATE_V1 */
4215*8f23e9faSHans Rosenfeld typedef	struct
4216*8f23e9faSHans Rosenfeld {
4217*8f23e9faSHans Rosenfeld 	union
4218*8f23e9faSHans Rosenfeld 	{
4219*8f23e9faSHans Rosenfeld 		struct
4220*8f23e9faSHans Rosenfeld 		{
4221*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4222*8f23e9faSHans Rosenfeld 			uint32_t 	DNB:1;
4223*8f23e9faSHans Rosenfeld 			uint32_t 	DFD:1;
4224*8f23e9faSHans Rosenfeld 			uint32_t 	DIM:1;
4225*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd0:13;
4226*8f23e9faSHans Rosenfeld 			uint32_t	NumPages:16;
4227*8f23e9faSHans Rosenfeld #endif
4228*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4229*8f23e9faSHans Rosenfeld 			uint32_t	NumPages:16;
4230*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd0:13;
4231*8f23e9faSHans Rosenfeld 			uint32_t 	DIM:1;
4232*8f23e9faSHans Rosenfeld 			uint32_t 	DFD:1;
4233*8f23e9faSHans Rosenfeld 			uint32_t 	DNB:1;
4234*8f23e9faSHans Rosenfeld #endif
4235*8f23e9faSHans Rosenfeld 			RQ_CONTEXT_V1	RQContext;
4236*8f23e9faSHans Rosenfeld 			BE_PHYS_ADDR	Pages[8];
4237*8f23e9faSHans Rosenfeld 		} request;
4238*8f23e9faSHans Rosenfeld 
4239*8f23e9faSHans Rosenfeld 		struct
4240*8f23e9faSHans Rosenfeld 		{
4241*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4242*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd1;
4243*8f23e9faSHans Rosenfeld 			uint16_t	RQId;
4244*8f23e9faSHans Rosenfeld #endif
4245*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4246*8f23e9faSHans Rosenfeld 			uint16_t	RQId;
4247*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd1;
4248*8f23e9faSHans Rosenfeld #endif
4249*8f23e9faSHans Rosenfeld 		} response;
4250*8f23e9faSHans Rosenfeld 
4251*8f23e9faSHans Rosenfeld 	} params;
4252*8f23e9faSHans Rosenfeld 
4253*8f23e9faSHans Rosenfeld } IOCTL_FCOE_RQ_CREATE_V1;
4254*8f23e9faSHans Rosenfeld 
4255*8f23e9faSHans Rosenfeld 
425682527734SSukumar Swaminathan /* IOCTL_FCOE_WQ_CREATE */
425782527734SSukumar Swaminathan typedef	struct
425882527734SSukumar Swaminathan {
425982527734SSukumar Swaminathan 	union
426082527734SSukumar Swaminathan 	{
426182527734SSukumar Swaminathan 		struct
426282527734SSukumar Swaminathan 		{
426382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
426482527734SSukumar Swaminathan 			uint16_t	CQId;
426582527734SSukumar Swaminathan 			uint16_t	NumPages;
426682527734SSukumar Swaminathan #endif
426782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
426882527734SSukumar Swaminathan 			uint16_t	NumPages;
426982527734SSukumar Swaminathan 			uint16_t	CQId;
427082527734SSukumar Swaminathan #endif
427182527734SSukumar Swaminathan 			BE_PHYS_ADDR	Pages[4];
427282527734SSukumar Swaminathan 		} request;
427382527734SSukumar Swaminathan 
427482527734SSukumar Swaminathan 		struct
427582527734SSukumar Swaminathan 		{
427682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
427782527734SSukumar Swaminathan 			uint16_t	Rsvd0;
427882527734SSukumar Swaminathan 			uint16_t	WQId;
427982527734SSukumar Swaminathan #endif
428082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
428182527734SSukumar Swaminathan 			uint16_t	WQId;
428282527734SSukumar Swaminathan 			uint16_t	Rsvd0;
428382527734SSukumar Swaminathan #endif
428482527734SSukumar Swaminathan 		} response;
428582527734SSukumar Swaminathan 
428682527734SSukumar Swaminathan 	} params;
428782527734SSukumar Swaminathan 
428882527734SSukumar Swaminathan } IOCTL_FCOE_WQ_CREATE;
428982527734SSukumar Swaminathan 
429082527734SSukumar Swaminathan 
4291*8f23e9faSHans Rosenfeld /* IOCTL_FCOE_WQ_CREATE_V1 */
4292*8f23e9faSHans Rosenfeld typedef	struct
4293*8f23e9faSHans Rosenfeld {
4294*8f23e9faSHans Rosenfeld 	union
4295*8f23e9faSHans Rosenfeld 	{
4296*8f23e9faSHans Rosenfeld 		struct
4297*8f23e9faSHans Rosenfeld 		{
4298*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4299*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4300*8f23e9faSHans Rosenfeld 			uint16_t	NumPages;
4301*8f23e9faSHans Rosenfeld 
4302*8f23e9faSHans Rosenfeld 			uint32_t	WqeCnt:16;
4303*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd1:4;
4304*8f23e9faSHans Rosenfeld 			uint32_t	WqeSize:4;
4305*8f23e9faSHans Rosenfeld 			uint32_t	PageSize:8;
4306*8f23e9faSHans Rosenfeld #endif
4307*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4308*8f23e9faSHans Rosenfeld 			uint16_t	NumPages;
4309*8f23e9faSHans Rosenfeld 			uint16_t	CQId;
4310*8f23e9faSHans Rosenfeld 
4311*8f23e9faSHans Rosenfeld 			uint32_t	PageSize:8;
4312*8f23e9faSHans Rosenfeld 			uint32_t	WqeSize:4;
4313*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd1:4;
4314*8f23e9faSHans Rosenfeld 			uint32_t	WqeCnt:16;
4315*8f23e9faSHans Rosenfeld #endif
4316*8f23e9faSHans Rosenfeld 			uint32_t	Rsvd:2;
4317*8f23e9faSHans Rosenfeld 			BE_PHYS_ADDR	Pages[4];
4318*8f23e9faSHans Rosenfeld 		} request;
4319*8f23e9faSHans Rosenfeld 
4320*8f23e9faSHans Rosenfeld 		struct
4321*8f23e9faSHans Rosenfeld 		{
4322*8f23e9faSHans Rosenfeld #ifdef EMLXS_BIG_ENDIAN
4323*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd0;
4324*8f23e9faSHans Rosenfeld 			uint16_t	WQId;
4325*8f23e9faSHans Rosenfeld #endif
4326*8f23e9faSHans Rosenfeld #ifdef EMLXS_LITTLE_ENDIAN
4327*8f23e9faSHans Rosenfeld 			uint16_t	WQId;
4328*8f23e9faSHans Rosenfeld 			uint16_t	Rsvd0;
4329*8f23e9faSHans Rosenfeld #endif
4330*8f23e9faSHans Rosenfeld 		} response;
4331*8f23e9faSHans Rosenfeld 
4332*8f23e9faSHans Rosenfeld 	} params;
4333*8f23e9faSHans Rosenfeld 
4334*8f23e9faSHans Rosenfeld } IOCTL_FCOE_WQ_CREATE_V1;
4335*8f23e9faSHans Rosenfeld 
4336*8f23e9faSHans Rosenfeld /* WqeSize */
4337*8f23e9faSHans Rosenfeld #define	WQE_SIZE_64_BYTES	0x05
4338*8f23e9faSHans Rosenfeld #define	WQE_SIZE_128_BYTES	0x06
4339*8f23e9faSHans Rosenfeld 
4340*8f23e9faSHans Rosenfeld /* PageSize */
4341*8f23e9faSHans Rosenfeld #define	WQ_PAGE_SIZE_4K		0x01
4342*8f23e9faSHans Rosenfeld #define	WQ_PAGE_SIZE_8K		0x02
4343*8f23e9faSHans Rosenfeld #define	WQ_PAGE_SIZE_16K	0x04
4344*8f23e9faSHans Rosenfeld #define	WQ_PAGE_SIZE_32K	0x08
4345*8f23e9faSHans Rosenfeld #define	WQ_PAGE_SIZE_64K	0x10
4346*8f23e9faSHans Rosenfeld 
4347*8f23e9faSHans Rosenfeld 
4348*8f23e9faSHans Rosenfeld 
434982527734SSukumar Swaminathan /* IOCTL_FCOE_CFG_POST_SGL_PAGES */
435082527734SSukumar Swaminathan typedef	struct _FCOE_SGL_PAGES
435182527734SSukumar Swaminathan {
435282527734SSukumar Swaminathan 	BE_PHYS_ADDR	sgl_page0;	/* 1st page per XRI */
435382527734SSukumar Swaminathan 	BE_PHYS_ADDR	sgl_page1;	/* 2nd page per XRI */
435482527734SSukumar Swaminathan 
435582527734SSukumar Swaminathan } FCOE_SGL_PAGES;
435682527734SSukumar Swaminathan 
435782527734SSukumar Swaminathan typedef	struct
435882527734SSukumar Swaminathan {
435982527734SSukumar Swaminathan 	union
436082527734SSukumar Swaminathan 	{
436182527734SSukumar Swaminathan 		struct
436282527734SSukumar Swaminathan 		{
436382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
436482527734SSukumar Swaminathan 			uint16_t	xri_count;
436582527734SSukumar Swaminathan 			uint16_t	xri_start;
436682527734SSukumar Swaminathan #endif
436782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
436882527734SSukumar Swaminathan 			uint16_t	xri_start;
436982527734SSukumar Swaminathan 			uint16_t	xri_count;
437082527734SSukumar Swaminathan #endif
437182527734SSukumar Swaminathan 			FCOE_SGL_PAGES	pages[1];
437282527734SSukumar Swaminathan 		} request;
437382527734SSukumar Swaminathan 
437482527734SSukumar Swaminathan 		struct
437582527734SSukumar Swaminathan 		{
437682527734SSukumar Swaminathan 			uint32_t	rsvd0;
437782527734SSukumar Swaminathan 		} response;
437882527734SSukumar Swaminathan 
437982527734SSukumar Swaminathan 	} params;
438082527734SSukumar Swaminathan 
438182527734SSukumar Swaminathan 	uint32_t	rsvd0[2];
438282527734SSukumar Swaminathan 
438382527734SSukumar Swaminathan } IOCTL_FCOE_CFG_POST_SGL_PAGES;
438482527734SSukumar Swaminathan 
438582527734SSukumar Swaminathan 
438682527734SSukumar Swaminathan /* IOCTL_FCOE_POST_HDR_TEMPLATES */
438782527734SSukumar Swaminathan typedef struct _IOCTL_FCOE_POST_HDR_TEMPLATES
438882527734SSukumar Swaminathan {
438982527734SSukumar Swaminathan 	union
439082527734SSukumar Swaminathan 	{
439182527734SSukumar Swaminathan 		struct
439282527734SSukumar Swaminathan 		{
439382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
439482527734SSukumar Swaminathan 			uint16_t	num_pages;
4395*8f23e9faSHans Rosenfeld 			uint16_t	rpi_offset;
439682527734SSukumar Swaminathan #endif
439782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
4398*8f23e9faSHans Rosenfeld 			uint16_t	rpi_offset;
439982527734SSukumar Swaminathan 			uint16_t	num_pages;
440082527734SSukumar Swaminathan #endif
440182527734SSukumar Swaminathan 			BE_PHYS_ADDR	pages[32];
440282527734SSukumar Swaminathan 
440382527734SSukumar Swaminathan 		}request;
440482527734SSukumar Swaminathan 
440582527734SSukumar Swaminathan 	}params;
440682527734SSukumar Swaminathan 
440782527734SSukumar Swaminathan } IOCTL_FCOE_POST_HDR_TEMPLATES;
440882527734SSukumar Swaminathan 
440982527734SSukumar Swaminathan 
441082527734SSukumar Swaminathan 
441182527734SSukumar Swaminathan #define	EMLXS_IOCTL_DCBX_MODE_CEE	0	/* Mapped to FIP mode */
441282527734SSukumar Swaminathan #define	EMLXS_IOCTL_DCBX_MODE_CIN	1	/* Mapped to nonFIP mode */
441382527734SSukumar Swaminathan 
441482527734SSukumar Swaminathan /* IOCTL_DCBX_GET_DCBX_MODE */
441582527734SSukumar Swaminathan typedef struct _IOCTL_DCBX_GET_DCBX_MODE
441682527734SSukumar Swaminathan {
441782527734SSukumar Swaminathan 	union
441882527734SSukumar Swaminathan 	{
441982527734SSukumar Swaminathan 		struct
442082527734SSukumar Swaminathan 		{
442182527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
442282527734SSukumar Swaminathan 			uint8_t		rsvd0[3];
442382527734SSukumar Swaminathan 			uint8_t		port_num;
442482527734SSukumar Swaminathan #endif
442582527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
442682527734SSukumar Swaminathan 			uint8_t		port_num;
442782527734SSukumar Swaminathan 			uint8_t		rsvd0[3];
442882527734SSukumar Swaminathan #endif
442982527734SSukumar Swaminathan 		} request;
443082527734SSukumar Swaminathan 
443182527734SSukumar Swaminathan 		struct
443282527734SSukumar Swaminathan 		{
443382527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
443482527734SSukumar Swaminathan 			uint8_t		rsvd1[3];
443582527734SSukumar Swaminathan 			uint8_t		dcbx_mode;
443682527734SSukumar Swaminathan #endif
443782527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
443882527734SSukumar Swaminathan 			uint8_t		dcbx_mode;
443982527734SSukumar Swaminathan 			uint8_t		rsvd1[3];
444082527734SSukumar Swaminathan #endif
444182527734SSukumar Swaminathan 		} response;
444282527734SSukumar Swaminathan 
444382527734SSukumar Swaminathan 	} params;
444482527734SSukumar Swaminathan 
444582527734SSukumar Swaminathan } IOCTL_DCBX_GET_DCBX_MODE;
444682527734SSukumar Swaminathan 
444782527734SSukumar Swaminathan 
444882527734SSukumar Swaminathan /* IOCTL_DCBX_SET_DCBX_MODE */
444982527734SSukumar Swaminathan typedef struct _IOCTL_DCBX_SET_DCBX_MODE
445082527734SSukumar Swaminathan {
445182527734SSukumar Swaminathan 	union
445282527734SSukumar Swaminathan 	{
445382527734SSukumar Swaminathan 		struct
445482527734SSukumar Swaminathan 		{
445582527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
445682527734SSukumar Swaminathan 			uint8_t		rsvd0[2];
445782527734SSukumar Swaminathan 			uint8_t		dcbx_mode;
445882527734SSukumar Swaminathan 			uint8_t		port_num;
445982527734SSukumar Swaminathan #endif
446082527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
446182527734SSukumar Swaminathan 			uint8_t		port_num;
446282527734SSukumar Swaminathan 			uint8_t		dcbx_mode;
446382527734SSukumar Swaminathan 			uint8_t		rsvd0[2];
446482527734SSukumar Swaminathan #endif
446582527734SSukumar Swaminathan 		} request;
446682527734SSukumar Swaminathan 
446782527734SSukumar Swaminathan 		struct
446882527734SSukumar Swaminathan 		{
446982527734SSukumar Swaminathan 			uint32_t	rsvd1;
447082527734SSukumar Swaminathan 		} response;
447182527734SSukumar Swaminathan 
447282527734SSukumar Swaminathan 	} params;
447382527734SSukumar Swaminathan 
447482527734SSukumar Swaminathan } IOCTL_DCBX_SET_DCBX_MODE;
447582527734SSukumar Swaminathan 
447682527734SSukumar Swaminathan 
447782527734SSukumar Swaminathan /* IOCTL_COMMON_GET_CNTL_ATTRIB */
447882527734SSukumar Swaminathan typedef	struct
447982527734SSukumar Swaminathan {
448082527734SSukumar Swaminathan 	char		flashrom_version_string[32];
448182527734SSukumar Swaminathan 	char		manufacturer_name[32];
448282527734SSukumar Swaminathan 	char		rsvd0[28];
448382527734SSukumar Swaminathan 	uint32_t	default_extended_timeout;
448482527734SSukumar Swaminathan 	char		controller_model_number[32];
448582527734SSukumar Swaminathan 	char		controller_description[64];
448682527734SSukumar Swaminathan 	char		controller_serial_number[32];
448782527734SSukumar Swaminathan 	char		ip_version_string[32];
448882527734SSukumar Swaminathan 	char		firmware_version_string[32];
448982527734SSukumar Swaminathan 	char		bios_version_string[32];
449082527734SSukumar Swaminathan 	char		redboot_version_string[32];
449182527734SSukumar Swaminathan 	char		driver_version_string[32];
449282527734SSukumar Swaminathan 	char		fw_on_flash_version_string[32];
449382527734SSukumar Swaminathan 	uint32_t	functionalities_supported;
449482527734SSukumar Swaminathan 	uint16_t	max_cdblength;
449582527734SSukumar Swaminathan 	uint8_t		asic_revision;
449682527734SSukumar Swaminathan 	uint8_t		generational_guid[16];
449782527734SSukumar Swaminathan 	uint8_t		hba_port_count;
449882527734SSukumar Swaminathan 	uint16_t	default_link_down_timeout;
449982527734SSukumar Swaminathan 	uint8_t		iscsi_ver_min_max;
450082527734SSukumar Swaminathan 	uint8_t		multifunction_device;
450182527734SSukumar Swaminathan 	uint8_t		cache_valid;
450282527734SSukumar Swaminathan 	uint8_t		hba_status;
450382527734SSukumar Swaminathan 	uint8_t		max_domains_supported;
450482527734SSukumar Swaminathan 	uint8_t		phy_port;
450582527734SSukumar Swaminathan 	uint32_t	firmware_post_status;
450682527734SSukumar Swaminathan 	uint32_t	hba_mtu[2];
450782527734SSukumar Swaminathan 
450882527734SSukumar Swaminathan } MGMT_HBA_ATTRIB;
450982527734SSukumar Swaminathan 
451082527734SSukumar Swaminathan typedef	struct
451182527734SSukumar Swaminathan {
451282527734SSukumar Swaminathan 	MGMT_HBA_ATTRIB		hba_attribs;
451382527734SSukumar Swaminathan 	uint16_t		pci_vendor_id;
451482527734SSukumar Swaminathan 	uint16_t		pci_device_id;
451582527734SSukumar Swaminathan 	uint16_t		pci_sub_vendor_id;
451682527734SSukumar Swaminathan 	uint16_t		pci_sub_system_id;
451782527734SSukumar Swaminathan 	uint8_t			pci_bus_number;
451882527734SSukumar Swaminathan 	uint8_t			pci_device_number;
451982527734SSukumar Swaminathan 	uint8_t			pci_function_number;
452082527734SSukumar Swaminathan 	uint8_t			interface_type;
452182527734SSukumar Swaminathan 	uint64_t		unique_identifier;
452282527734SSukumar Swaminathan 
452382527734SSukumar Swaminathan } MGMT_CONTROLLER_ATTRIB;
452482527734SSukumar Swaminathan 
452582527734SSukumar Swaminathan typedef	struct
452682527734SSukumar Swaminathan {
452782527734SSukumar Swaminathan 	union
452882527734SSukumar Swaminathan 	{
452982527734SSukumar Swaminathan 		struct
453082527734SSukumar Swaminathan 		{
453182527734SSukumar Swaminathan 			uint32_t rsvd0;
453282527734SSukumar Swaminathan 		} request;
453382527734SSukumar Swaminathan 
453482527734SSukumar Swaminathan 		struct
453582527734SSukumar Swaminathan 		{
453682527734SSukumar Swaminathan 			MGMT_CONTROLLER_ATTRIB cntl_attributes_info;
453782527734SSukumar Swaminathan 		} response;
453882527734SSukumar Swaminathan 
453982527734SSukumar Swaminathan 	} params;
454082527734SSukumar Swaminathan 
454182527734SSukumar Swaminathan } IOCTL_COMMON_GET_CNTL_ATTRIB;
454282527734SSukumar Swaminathan 
454382527734SSukumar Swaminathan 
454482527734SSukumar Swaminathan typedef	union
454582527734SSukumar Swaminathan {
454682527734SSukumar Swaminathan 	IOCTL_COMMON_NOP		NOPVar;
454782527734SSukumar Swaminathan 	IOCTL_FCOE_WQ_CREATE		WQCreateVar;
4548*8f23e9faSHans Rosenfeld 	IOCTL_FCOE_WQ_CREATE_V1		WQCreateVar1;
4549*8f23e9faSHans Rosenfeld 	IOCTL_FCOE_RQ_CREATE		RQCreateVar;
4550*8f23e9faSHans Rosenfeld 	IOCTL_FCOE_RQ_CREATE_V1		RQCreateVar1;
455182527734SSukumar Swaminathan 	IOCTL_COMMON_EQ_CREATE		EQCreateVar;
455282527734SSukumar Swaminathan 	IOCTL_COMMON_CQ_CREATE		CQCreateVar;
4553*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_CQ_CREATE_V2	CQCreateVar2;
455482527734SSukumar Swaminathan 	IOCTL_COMMON_MQ_CREATE		MQCreateVar;
4555*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_MQ_CREATE_EXT	MQCreateExtVar;
4556*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_MQ_CREATE_EXT_V1	MQCreateExtVar1;
455782527734SSukumar Swaminathan 	IOCTL_FCOE_CFG_POST_SGL_PAGES	PostSGLVar;
455882527734SSukumar Swaminathan 	IOCTL_COMMON_GET_CNTL_ATTRIB	GetCntlAttributesVar;
455982527734SSukumar Swaminathan 	IOCTL_FCOE_READ_FCF_TABLE	ReadFCFTableVar;
456082527734SSukumar Swaminathan 	IOCTL_FCOE_ADD_FCF_TABLE	AddFCFTableVar;
4561a9800bebSGarrett D'Amore 	IOCTL_FCOE_REDISCOVER_FCF_TABLE	RediscoverFCFTableVar;
456282527734SSukumar Swaminathan 	IOCTL_COMMON_FLASHROM		FlashRomVar;
456382527734SSukumar Swaminathan 	IOCTL_COMMON_MANAGE_FAT		FATVar;
456482527734SSukumar Swaminathan 	IOCTL_DCBX_GET_DCBX_MODE	GetDCBX;
456582527734SSukumar Swaminathan 	IOCTL_DCBX_SET_DCBX_MODE	SetDCBX;
4566*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_SLI4_PARAMS	Sli4ParamVar;
4567*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_EXTENTS		ExtentsVar;
4568*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_GET_PHY_DETAILS	PHYDetailsVar;
4569*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_GET_PORT_NAME	PortNameVar;
4570*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_GET_PORT_NAME_V1	PortNameVar1;
4571*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_WRITE_OBJECT	WriteObjVar;
4572*8f23e9faSHans Rosenfeld 	IOCTL_COMMON_BOOT_CFG		BootCfgVar;
457382527734SSukumar Swaminathan 
457482527734SSukumar Swaminathan } IOCTL_VARIANTS;
457582527734SSukumar Swaminathan 
457682527734SSukumar Swaminathan /* Structure for MB Command SLI_CONFIG(0x9b) */
457782527734SSukumar Swaminathan /* Good for SLI4 only */
457882527734SSukumar Swaminathan 
457982527734SSukumar Swaminathan typedef struct
458082527734SSukumar Swaminathan {
458182527734SSukumar Swaminathan 	be_req_hdr_t	be;
458282527734SSukumar Swaminathan 	BE_PHYS_ADDR	payload;
458382527734SSukumar Swaminathan } SLI_CONFIG_VAR;
458482527734SSukumar Swaminathan 
458582527734SSukumar Swaminathan #define	IOCTL_HEADER_SZ	(4 * sizeof (uint32_t))
458682527734SSukumar Swaminathan 
458782527734SSukumar Swaminathan 
458882527734SSukumar Swaminathan typedef union
458982527734SSukumar Swaminathan {
459082527734SSukumar Swaminathan 	uint32_t		varWords[63];
459182527734SSukumar Swaminathan 	READ_NV_VAR		varRDnvp;	/* cmd = x02 (READ_NVPARMS) */
459282527734SSukumar Swaminathan 	INIT_LINK_VAR		varInitLnk;	/* cmd = x05 (INIT_LINK) */
459382527734SSukumar Swaminathan 	CONFIG_LINK		varCfgLnk;	/* cmd = x07 (CONFIG_LINK) */
459482527734SSukumar Swaminathan 	READ_REV4_VAR		varRdRev4;	/* cmd = x11 (READ_REV) */
459582527734SSukumar Swaminathan 	READ_LNK_VAR		varRdLnk;	/* cmd = x12 (READ_LNK_STAT) */
459682527734SSukumar Swaminathan 	DUMP4_VAR		varDmp4;	/* cmd = x17 (DUMP) */
4597*8f23e9faSHans Rosenfeld 	UPDATE_CFG_VAR		varUpdateCfg;	/* cmd = x1b (update Cfg) */
4598*8f23e9faSHans Rosenfeld 	BIU_DIAG_VAR		varBIUdiag;	/* cmd = x84 (RUN_BIU_DIAG64) */
459982527734SSukumar Swaminathan 	READ_SPARM_VAR		varRdSparm;	/* cmd = x8D (READ_SPARM64) */
460082527734SSukumar Swaminathan 	REG_FCFI_VAR		varRegFCFI;	/* cmd = xA0 (REG_FCFI) */
460182527734SSukumar Swaminathan 	UNREG_FCFI_VAR		varUnRegFCFI;	/* cmd = xA2 (UNREG_FCFI) */
460282527734SSukumar Swaminathan 	READ_LA_VAR		varReadLA;	/* cmd = x95 (READ_LA64) */
460382527734SSukumar Swaminathan 	READ_CONFIG4_VAR	varRdConfig4;	/* cmd = x0B (READ_CONFIG) */
460482527734SSukumar Swaminathan 	RESUME_RPI_VAR		varResumeRPI;	/* cmd = x9E (RESUME_RPI) */
460582527734SSukumar Swaminathan 	REG_LOGIN_VAR		varRegLogin;	/* cmd = x93 (REG_RPI) */
460682527734SSukumar Swaminathan 	UNREG_LOGIN_VAR		varUnregLogin;	/* cmd = x14 (UNREG_RPI) */
460782527734SSukumar Swaminathan 	REG_VPI_VAR		varRegVPI4;	/* cmd = x96 (REG_VPI) */
4608e2ca2865SSukumar Swaminathan 	UNREG_VPI_VAR4		varUnRegVPI4;	/* cmd = x97 (UNREG_VPI) */
460982527734SSukumar Swaminathan 	REG_VFI_VAR		varRegVFI4;	/* cmd = x9F (REG_VFI) */
461082527734SSukumar Swaminathan 	UNREG_VFI_VAR		varUnRegVFI4;	/* cmd = xA1 (UNREG_VFI) */
461182527734SSukumar Swaminathan 	REQUEST_FEATURES_VAR	varReqFeatures;	/* cmd = x9D (REQ_FEATURES) */
461282527734SSukumar Swaminathan 	SLI_CONFIG_VAR		varSLIConfig;	/* cmd = x9B (SLI_CONFIG) */
461382527734SSukumar Swaminathan 	INIT_VPI_VAR		varInitVPI4;	/* cmd = xA3 (INIT_VPI) */
461482527734SSukumar Swaminathan 	INIT_VFI_VAR		varInitVFI4;	/* cmd = xA4 (INIT_VFI) */
461582527734SSukumar Swaminathan 
461682527734SSukumar Swaminathan } MAILVARIANTS4;		/* Used for SLI-4 */
461782527734SSukumar Swaminathan 
461882527734SSukumar Swaminathan #define	MAILBOX_CMD_SLI4_BSIZE	256
461982527734SSukumar Swaminathan #define	MAILBOX_CMD_SLI4_WSIZE	64
462082527734SSukumar Swaminathan 
462182527734SSukumar Swaminathan #define	MAILBOX_CMD_MAX_BSIZE	256
462282527734SSukumar Swaminathan #define	MAILBOX_CMD_MAX_WSIZE	64
462382527734SSukumar Swaminathan 
462482527734SSukumar Swaminathan 
462582527734SSukumar Swaminathan typedef volatile struct
462682527734SSukumar Swaminathan {
462782527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
462882527734SSukumar Swaminathan 	uint16_t	mbxStatus;
462982527734SSukumar Swaminathan 	uint8_t		mbxCommand;
463082527734SSukumar Swaminathan 	uint8_t		mbxReserved:6;
463182527734SSukumar Swaminathan 	uint8_t		mbxHc:1;
463282527734SSukumar Swaminathan 	uint8_t		mbxOwner:1;	/* Low order bit first word */
463382527734SSukumar Swaminathan #endif
463482527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
463582527734SSukumar Swaminathan 	uint8_t		mbxOwner:1;	/* Low order bit first word */
463682527734SSukumar Swaminathan 	uint8_t		mbxHc:1;
463782527734SSukumar Swaminathan 	uint8_t		mbxReserved:6;
463882527734SSukumar Swaminathan 	uint8_t		mbxCommand;
463982527734SSukumar Swaminathan 	uint16_t	mbxStatus;
464082527734SSukumar Swaminathan #endif
4641*8f23e9faSHans Rosenfeld 	MAILVARIANTS4	un;		/* 252 bytes */
464282527734SSukumar Swaminathan } MAILBOX4;				/* Used for SLI-4 */
464382527734SSukumar Swaminathan 
464482527734SSukumar Swaminathan /*
464582527734SSukumar Swaminathan  * End Structure Definitions for Mailbox Commands
464682527734SSukumar Swaminathan  */
464782527734SSukumar Swaminathan 
464882527734SSukumar Swaminathan 
464982527734SSukumar Swaminathan typedef struct emlxs_mbq
465082527734SSukumar Swaminathan {
465182527734SSukumar Swaminathan 	volatile uint32_t	mbox[MAILBOX_CMD_MAX_WSIZE];
465282527734SSukumar Swaminathan 	struct emlxs_mbq	*next;
465382527734SSukumar Swaminathan 
465482527734SSukumar Swaminathan 	/* Defferred handling pointers */
4655a9800bebSGarrett D'Amore 	void			*nonembed;	/* ptr to data buffer */
465682527734SSukumar Swaminathan 						/* structure */
4657a9800bebSGarrett D'Amore 	void			*bp;		/* ptr to data buffer */
465882527734SSukumar Swaminathan 						/* structure */
4659a9800bebSGarrett D'Amore 	void			*sbp;		/* ptr to emlxs_buf_t */
466082527734SSukumar Swaminathan 						/* structure */
4661a9800bebSGarrett D'Amore 	void			*ubp;		/* ptr to fc_unsol_buf_t */
466282527734SSukumar Swaminathan 						/* structure */
4663a9800bebSGarrett D'Amore 	void			*iocbq;		/* ptr to IOCBQ structure */
4664a9800bebSGarrett D'Amore 	void			*context;	/* ptr to mbox context data */
4665a9800bebSGarrett D'Amore 	void			*port;		/* Sending port */
466682527734SSukumar Swaminathan 	uint32_t		flag;
466782527734SSukumar Swaminathan 
466882527734SSukumar Swaminathan #define	MBQ_POOL_ALLOCATED	0x00000001
466982527734SSukumar Swaminathan #define	MBQ_PASSTHRU		0x00000002
467082527734SSukumar Swaminathan #define	MBQ_EMBEDDED		0x00000004
467182527734SSukumar Swaminathan #define	MBQ_BOOTSTRAP		0x00000008
467282527734SSukumar Swaminathan #define	MBQ_COMPLETED		0x00010000	/* Used for MBX_SLEEP */
467382527734SSukumar Swaminathan #define	MBQ_INIT_MASK		0x0000ffff
467482527734SSukumar Swaminathan 
467582527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT
467682527734SSukumar Swaminathan 	uint8_t			*extbuf;	/* ptr to mailbox ext buffer */
467782527734SSukumar Swaminathan 	uint32_t		extsize;	/* size of mailbox ext buffer */
467882527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */
4679a9800bebSGarrett D'Amore 	uint32_t		(*mbox_cmpl)();
468082527734SSukumar Swaminathan } emlxs_mbq_t;
468182527734SSukumar Swaminathan typedef emlxs_mbq_t MAILBOXQ;
468282527734SSukumar Swaminathan 
468382527734SSukumar Swaminathan 
468482527734SSukumar Swaminathan /* We currently do not support IOCBs in SLI1 mode */
468582527734SSukumar Swaminathan typedef struct
468682527734SSukumar Swaminathan {
468782527734SSukumar Swaminathan 	MAILBOX		mbx;
468882527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT
468982527734SSukumar Swaminathan 	uint8_t		mbxExt[MBOX_EXTENSION_SIZE];
469082527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */
469182527734SSukumar Swaminathan 	uint8_t		pad[(SLI_SLIM1_SIZE -
469282527734SSukumar Swaminathan 				(sizeof (MAILBOX) + MBOX_EXTENSION_SIZE))];
469382527734SSukumar Swaminathan } SLIM1;
469482527734SSukumar Swaminathan 
469582527734SSukumar Swaminathan 
469682527734SSukumar Swaminathan typedef struct
469782527734SSukumar Swaminathan {
469882527734SSukumar Swaminathan 	MAILBOX		mbx;
469982527734SSukumar Swaminathan #ifdef MBOX_EXT_SUPPORT
470082527734SSukumar Swaminathan 	uint8_t		mbxExt[MBOX_EXTENSION_SIZE];
470182527734SSukumar Swaminathan #endif /* MBOX_EXT_SUPPORT */
470282527734SSukumar Swaminathan 	PCB		pcb;
470382527734SSukumar Swaminathan 	uint8_t		IOCBs[SLI_IOCB_MAX_SIZE];
470482527734SSukumar Swaminathan } SLIM2;
470582527734SSukumar Swaminathan 
470682527734SSukumar Swaminathan 
470782527734SSukumar Swaminathan /* def for new 2MB Flash (Pegasus ...) */
470882527734SSukumar Swaminathan #define	MBX_LOAD_AREA		0x81
470982527734SSukumar Swaminathan #define	MBX_LOAD_EXP_ROM	0x9C
471082527734SSukumar Swaminathan 
471182527734SSukumar Swaminathan #define	FILE_TYPE_AWC		0xE1A01001
471282527734SSukumar Swaminathan #define	FILE_TYPE_DWC		0xE1A02002
471382527734SSukumar Swaminathan #define	FILE_TYPE_BWC		0xE1A03003
471482527734SSukumar Swaminathan 
471582527734SSukumar Swaminathan #define	AREA_ID_MASK		0xFFFFFF0F
471682527734SSukumar Swaminathan #define	AREA_ID_AWC		0x00000001
471782527734SSukumar Swaminathan #define	AREA_ID_DWC		0x00000002
471882527734SSukumar Swaminathan #define	AREA_ID_BWC		0x00000003
471982527734SSukumar Swaminathan 
472082527734SSukumar Swaminathan #define	CMD_START_ERASE		1
472182527734SSukumar Swaminathan #define	CMD_CONTINUE_ERASE	2
472282527734SSukumar Swaminathan #define	CMD_DOWNLOAD		3
472382527734SSukumar Swaminathan #define	CMD_END_DOWNLOAD	4
472482527734SSukumar Swaminathan 
472582527734SSukumar Swaminathan #define	RSP_ERASE_STARTED	1
472682527734SSukumar Swaminathan #define	RSP_ERASE_COMPLETE	2
472782527734SSukumar Swaminathan #define	RSP_DOWNLOAD_MORE	3
472882527734SSukumar Swaminathan #define	RSP_DOWNLOAD_DONE	4
472982527734SSukumar Swaminathan 
473082527734SSukumar Swaminathan #define	EROM_CMD_FIND_IMAGE	8
473182527734SSukumar Swaminathan #define	EROM_CMD_CONTINUE_ERASE	9
473282527734SSukumar Swaminathan #define	EROM_CMD_COPY		10
473382527734SSukumar Swaminathan 
473482527734SSukumar Swaminathan #define	EROM_RSP_ERASE_STARTED	8
473582527734SSukumar Swaminathan #define	EROM_RSP_ERASE_COMPLETE	9
473682527734SSukumar Swaminathan #define	EROM_RSP_COPY_MORE	10
473782527734SSukumar Swaminathan #define	EROM_RSP_COPY_DONE	11
473882527734SSukumar Swaminathan 
473982527734SSukumar Swaminathan #define	ALLext			1
474082527734SSukumar Swaminathan #define	DWCext			2
474182527734SSukumar Swaminathan #define	BWCext			3
474282527734SSukumar Swaminathan 
474382527734SSukumar Swaminathan #define	NO_ALL			0
474482527734SSukumar Swaminathan #define	ALL_WITHOUT_BWC		1
474582527734SSukumar Swaminathan #define	ALL_WITH_BWC		2
474682527734SSukumar Swaminathan 
474782527734SSukumar Swaminathan #define	KERNEL_START_ADDRESS	0x000000
474882527734SSukumar Swaminathan #define	DOWNLOAD_START_ADDRESS	0x040000
474982527734SSukumar Swaminathan #define	EXP_ROM_START_ADDRESS	0x180000
475082527734SSukumar Swaminathan #define	SCRATCH_START_ADDRESS	0x1C0000
475182527734SSukumar Swaminathan #define	CONFIG_START_ADDRESS	0x1E0000
475282527734SSukumar Swaminathan 
475382527734SSukumar Swaminathan 
475482527734SSukumar Swaminathan typedef struct SliAifHdr
475582527734SSukumar Swaminathan {
475682527734SSukumar Swaminathan 	uint32_t	CompressBr;
475782527734SSukumar Swaminathan 	uint32_t	RelocBr;
475882527734SSukumar Swaminathan 	uint32_t	ZinitBr;
475982527734SSukumar Swaminathan 	uint32_t	EntryBr;
476082527734SSukumar Swaminathan 	uint32_t	Area_ID;
476182527734SSukumar Swaminathan 	uint32_t	RoSize;
476282527734SSukumar Swaminathan 	uint32_t	RwSize;
476382527734SSukumar Swaminathan 	uint32_t	DbgSize;
476482527734SSukumar Swaminathan 	uint32_t	ZinitSize;
476582527734SSukumar Swaminathan 	uint32_t	DbgType;
476682527734SSukumar Swaminathan 	uint32_t	ImageBase;
476782527734SSukumar Swaminathan 	uint32_t	Area_Size;
476882527734SSukumar Swaminathan 	uint32_t	AddressMode;
476982527734SSukumar Swaminathan 	uint32_t	DataBase;
477082527734SSukumar Swaminathan 	uint32_t	AVersion;
477182527734SSukumar Swaminathan 	uint32_t	Spare2;
477282527734SSukumar Swaminathan 	uint32_t	DebugSwi;
477382527734SSukumar Swaminathan 	uint32_t	ZinitCode[15];
477482527734SSukumar Swaminathan } AIF_HDR, *PAIF_HDR;
477582527734SSukumar Swaminathan 
477682527734SSukumar Swaminathan typedef struct ImageHdr
477782527734SSukumar Swaminathan {
477882527734SSukumar Swaminathan 	uint32_t	BlockSize;
477982527734SSukumar Swaminathan 	PROG_ID		Id;
478082527734SSukumar Swaminathan 	uint32_t	Flags;
478182527734SSukumar Swaminathan 	uint32_t	EntryAdr;
478282527734SSukumar Swaminathan 	uint32_t	InitAdr;
478382527734SSukumar Swaminathan 	uint32_t	ExitAdr;
478482527734SSukumar Swaminathan 	uint32_t	ImageBase;
478582527734SSukumar Swaminathan 	uint32_t	ImageSize;
478682527734SSukumar Swaminathan 	uint32_t	ZinitSize;
478782527734SSukumar Swaminathan 	uint32_t	RelocSize;
478882527734SSukumar Swaminathan 	uint32_t	HdrCks;
478982527734SSukumar Swaminathan } IMAGE_HDR, *PIMAGE_HDR;
479082527734SSukumar Swaminathan 
479182527734SSukumar Swaminathan 
479282527734SSukumar Swaminathan 
479382527734SSukumar Swaminathan typedef struct
479482527734SSukumar Swaminathan {
479582527734SSukumar Swaminathan 	PROG_ID		prog_id;
479682527734SSukumar Swaminathan #ifdef EMLXS_BIG_ENDIAN
479782527734SSukumar Swaminathan 	uint32_t	pci_cfg_rsvd:27;
479882527734SSukumar Swaminathan 	uint32_t	use_hdw_def:1;
479982527734SSukumar Swaminathan 	uint32_t	pci_cfg_sel:3;
480082527734SSukumar Swaminathan 	uint32_t	pci_cfg_lookup_sel:1;
480182527734SSukumar Swaminathan #endif
480282527734SSukumar Swaminathan #ifdef EMLXS_LITTLE_ENDIAN
480382527734SSukumar Swaminathan 	uint32_t	pci_cfg_lookup_sel:1;
480482527734SSukumar Swaminathan 	uint32_t	pci_cfg_sel:3;
480582527734SSukumar Swaminathan 	uint32_t	use_hdw_def:1;
480682527734SSukumar Swaminathan 	uint32_t	pci_cfg_rsvd:27;
480782527734SSukumar Swaminathan #endif
480882527734SSukumar Swaminathan 	union
480982527734SSukumar Swaminathan 	{
481082527734SSukumar Swaminathan 		PROG_ID		boot_bios_id;
481182527734SSukumar Swaminathan 		uint32_t	boot_bios_wd[2];
481282527734SSukumar Swaminathan 	} u0;
481382527734SSukumar Swaminathan 	PROG_ID		sli1_prog_id;
481482527734SSukumar Swaminathan 	PROG_ID		sli2_prog_id;
481582527734SSukumar Swaminathan 	PROG_ID		sli3_prog_id;
481682527734SSukumar Swaminathan 	PROG_ID		sli4_prog_id;
481782527734SSukumar Swaminathan 	union
481882527734SSukumar Swaminathan 	{
481982527734SSukumar Swaminathan 		PROG_ID		EROM_prog_id;
482082527734SSukumar Swaminathan 		uint32_t	EROM_prog_wd[2];
482182527734SSukumar Swaminathan 	} u1;
482282527734SSukumar Swaminathan } WAKE_UP_PARMS, *PWAKE_UP_PARMS;
482382527734SSukumar Swaminathan 
482482527734SSukumar Swaminathan 
482582527734SSukumar Swaminathan #define	PROG_DESCR_STR_LEN	24
48266a573d82SSukumar Swaminathan #define	MAX_LOAD_ENTRY		32
482782527734SSukumar Swaminathan 
482882527734SSukumar Swaminathan typedef struct
482982527734SSukumar Swaminathan {
483082527734SSukumar Swaminathan 	uint32_t	next;
483182527734SSukumar Swaminathan 	uint32_t	prev;
483282527734SSukumar Swaminathan 	uint32_t	start_adr;
483382527734SSukumar Swaminathan 	uint32_t	len;
483482527734SSukumar Swaminathan 	union
483582527734SSukumar Swaminathan 	{
483682527734SSukumar Swaminathan 		PROG_ID		id;
483782527734SSukumar Swaminathan 		uint32_t	wd[2];
483882527734SSukumar Swaminathan 	} un;
483982527734SSukumar Swaminathan 	uint8_t		prog_descr[PROG_DESCR_STR_LEN];
484082527734SSukumar Swaminathan } LOAD_ENTRY;
484182527734SSukumar Swaminathan 
484282527734SSukumar Swaminathan typedef struct
484382527734SSukumar Swaminathan {
484482527734SSukumar Swaminathan 	uint32_t	head;
484582527734SSukumar Swaminathan 	uint32_t	tail;
484682527734SSukumar Swaminathan 	uint32_t	entry_cnt;
484782527734SSukumar Swaminathan 	LOAD_ENTRY	load_entry[MAX_LOAD_ENTRY];
484882527734SSukumar Swaminathan } LOAD_LIST;
484982527734SSukumar Swaminathan 
485082527734SSukumar Swaminathan #ifdef	__cplusplus
485182527734SSukumar Swaminathan }
485282527734SSukumar Swaminathan #endif
485382527734SSukumar Swaminathan 
485482527734SSukumar Swaminathan #endif	/* _EMLXS_MBOX_H */
4855