1fcf3ce44SJohn Forte /*
2fcf3ce44SJohn Forte  * CDDL HEADER START
3fcf3ce44SJohn Forte  *
4fcf3ce44SJohn Forte  * The contents of this file are subject to the terms of the
5fcf3ce44SJohn Forte  * Common Development and Distribution License (the "License").
6fcf3ce44SJohn Forte  * You may not use this file except in compliance with the License.
7fcf3ce44SJohn Forte  *
8fcf3ce44SJohn Forte  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9fcf3ce44SJohn Forte  * or http://www.opensolaris.org/os/licensing.
10fcf3ce44SJohn Forte  * See the License for the specific language governing permissions
11fcf3ce44SJohn Forte  * and limitations under the License.
12fcf3ce44SJohn Forte  *
13fcf3ce44SJohn Forte  * When distributing Covered Code, include this CDDL HEADER in each
14fcf3ce44SJohn Forte  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15fcf3ce44SJohn Forte  * If applicable, add the following below this CDDL HEADER, with the
16fcf3ce44SJohn Forte  * fields enclosed by brackets "[]" replaced with your own identifying
17fcf3ce44SJohn Forte  * information: Portions Copyright [yyyy] [name of copyright owner]
18fcf3ce44SJohn Forte  *
19fcf3ce44SJohn Forte  * CDDL HEADER END
20fcf3ce44SJohn Forte  */
21fcf3ce44SJohn Forte 
22eb82ff87SDaniel Beauregard /*
23*4c3888b8SHans Rosenfeld  * Copyright 2015 QLogic Corporation.  All rights reserved.
24eb82ff87SDaniel Beauregard  * Use is subject to license terms.
25eb82ff87SDaniel Beauregard  */
26fcf3ce44SJohn Forte 
27fcf3ce44SJohn Forte /*
28fcf3ce44SJohn Forte  * File Name: exioct.h
29fcf3ce44SJohn Forte  *
30fcf3ce44SJohn Forte  * San/Device Management Ioctl Header
31fcf3ce44SJohn Forte  * File is created to adhere to Solaris requirement using 8-space tabs.
32fcf3ce44SJohn Forte  *
33fcf3ce44SJohn Forte  * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
34fcf3ce44SJohn Forte  * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
35fcf3ce44SJohn Forte  * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
36fcf3ce44SJohn Forte  *
37fcf3ce44SJohn Forte  * ***********************************************************************
38fcf3ce44SJohn Forte  * *                                                                    **
39fcf3ce44SJohn Forte  * *                            NOTICE                                  **
40*4c3888b8SHans Rosenfeld  * *            COPYRIGHT (C) 2000-2015 QLOGIC CORPORATION              **
41fcf3ce44SJohn Forte  * *                    ALL RIGHTS RESERVED                             **
42fcf3ce44SJohn Forte  * *                                                                    **
43fcf3ce44SJohn Forte  * ***********************************************************************
44fcf3ce44SJohn Forte  */
45fcf3ce44SJohn Forte 
46fcf3ce44SJohn Forte #ifndef	_EXIOCT_H
47fcf3ce44SJohn Forte #define	_EXIOCT_H
48fcf3ce44SJohn Forte 
49fcf3ce44SJohn Forte #ifdef	__cplusplus
50fcf3ce44SJohn Forte extern "C" {
51fcf3ce44SJohn Forte #endif
52fcf3ce44SJohn Forte 
53fcf3ce44SJohn Forte #include <exioctso.h>
54fcf3ce44SJohn Forte 
55fcf3ce44SJohn Forte /*
56fcf3ce44SJohn Forte  * NOTE: the following version defines must be updated each time the
57fcf3ce44SJohn Forte  *	 changes made may affect the backward compatibility of the
58fcf3ce44SJohn Forte  *	 input/output relations of the SDM IOCTL functions.
59fcf3ce44SJohn Forte  */
60fcf3ce44SJohn Forte #define	EXT_VERSION				5
61fcf3ce44SJohn Forte 
62fcf3ce44SJohn Forte /*
63fcf3ce44SJohn Forte  * OS independent General definitions
64fcf3ce44SJohn Forte  */
65fcf3ce44SJohn Forte #define	EXT_DEF_SIGNATURE_SIZE			8
66fcf3ce44SJohn Forte #define	EXT_DEF_WWN_NAME_SIZE			8
67fcf3ce44SJohn Forte #define	EXT_DEF_WWP_NAME_SIZE			8
68fcf3ce44SJohn Forte #define	EXT_DEF_SERIAL_NUM_SIZE			4
69fcf3ce44SJohn Forte #define	EXT_DEF_PORTID_SIZE			4
70fcf3ce44SJohn Forte #define	EXT_DEF_PORTID_SIZE_ACTUAL		3
71fcf3ce44SJohn Forte #define	EXT_DEF_MAX_STR_SIZE			128
72*4c3888b8SHans Rosenfeld #define	EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH	16
734f8b8adcSDaniel Beauregard #define	EXT_DEF_MAC_ADDRESS_SIZE		6
74fcf3ce44SJohn Forte 
75fcf3ce44SJohn Forte #define	EXT_DEF_ADDR_MODE_32			1
76fcf3ce44SJohn Forte #define	EXT_DEF_ADDR_MODE_64			2
77fcf3ce44SJohn Forte 
78fcf3ce44SJohn Forte /*
79fcf3ce44SJohn Forte  * ***********************************************************************
80fcf3ce44SJohn Forte  * OS dependent General configuration defines
81fcf3ce44SJohn Forte  * ***********************************************************************
82fcf3ce44SJohn Forte  */
835dfd244aSDaniel Beauregard #define	EXT_DEF_MAX_HBA			EXT_DEF_MAX_HBA_OS
845dfd244aSDaniel Beauregard #define	EXT_DEF_MAX_BUS			EXT_DEF_MAX_BUS_OS
855dfd244aSDaniel Beauregard #define	EXT_DEF_MAX_TARGET		EXT_DEF_MAX_TARGET_OS
865dfd244aSDaniel Beauregard #define	EXT_DEF_MAX_LUN			EXT_DEF_MAX_LUN_OS
875dfd244aSDaniel Beauregard #define	EXT_DEF_NON_SCSI3_MAX_LUN	EXT_DEF_NON_SCSI3_MAX_LUN_OS
88fcf3ce44SJohn Forte 
89fcf3ce44SJohn Forte /*
90fcf3ce44SJohn Forte  * ***********************************************************************
91fcf3ce44SJohn Forte  * Common header struct definitions for San/Device Mgmt
92fcf3ce44SJohn Forte  * ***********************************************************************
93fcf3ce44SJohn Forte  */
94fcf3ce44SJohn Forte typedef struct {
95fcf3ce44SJohn Forte 	UINT64	Signature;			/* 8 chars string */
96fcf3ce44SJohn Forte 	UINT64	RequestAdr;			/* 8  */
97fcf3ce44SJohn Forte 	UINT64	ResponseAdr;			/* 8  */
98fcf3ce44SJohn Forte 	UINT64	VendorSpecificData;		/* 8 chars string */
99fcf3ce44SJohn Forte 	UINT32	Status;				/* 4  */
100fcf3ce44SJohn Forte 	UINT32	DetailStatus;			/* 4  */
101fcf3ce44SJohn Forte 	UINT32	Reserved1;			/* 4  */
102fcf3ce44SJohn Forte 	UINT32	RequestLen;			/* 4  */
103fcf3ce44SJohn Forte 	UINT32	ResponseLen;			/* 4  */
104fcf3ce44SJohn Forte 	UINT16	AddrMode;			/* 2  */
105fcf3ce44SJohn Forte 	UINT16	Version;			/* 2  */
106fcf3ce44SJohn Forte 	UINT16	SubCode;			/* 2  */
107fcf3ce44SJohn Forte 	UINT16	Instance;			/* 2  */
108fcf3ce44SJohn Forte 	UINT16	HbaSelect;			/* 2  */
109fcf3ce44SJohn Forte 	UINT16	VendorSpecificStatus[11];	/* 22 */
110fcf3ce44SJohn Forte } EXT_IOCTL, *PEXT_IOCTL;			/* size = 84 / 0x54 */
111fcf3ce44SJohn Forte 
112fcf3ce44SJohn Forte typedef union _ext_signature {
113fcf3ce44SJohn Forte 	UINT64	Signature;
114fcf3ce44SJohn Forte 	char	bytes[EXT_DEF_SIGNATURE_SIZE];
115fcf3ce44SJohn Forte } ext_sig_t;
116fcf3ce44SJohn Forte 
117fcf3ce44SJohn Forte /*
118fcf3ce44SJohn Forte  * Addressing mode used by the user application
119fcf3ce44SJohn Forte  */
120fcf3ce44SJohn Forte #define	EXT_ADDR_MODE	EXT_ADDR_MODE_OS
121fcf3ce44SJohn Forte 
122fcf3ce44SJohn Forte /*
123fcf3ce44SJohn Forte  * Status.  These macros are being used for setting Status field in
124fcf3ce44SJohn Forte  * EXT_IOCTL structure.
125fcf3ce44SJohn Forte  */
126fcf3ce44SJohn Forte #define	EXT_STATUS_OK			0
127fcf3ce44SJohn Forte #define	EXT_STATUS_ERR			1
128fcf3ce44SJohn Forte #define	EXT_STATUS_BUSY			2
129fcf3ce44SJohn Forte #define	EXT_STATUS_PENDING		3
130fcf3ce44SJohn Forte #define	EXT_STATUS_SUSPENDED		4
131fcf3ce44SJohn Forte #define	EXT_STATUS_RETRY_PENDING	5
132fcf3ce44SJohn Forte #define	EXT_STATUS_INVALID_PARAM	6
133fcf3ce44SJohn Forte #define	EXT_STATUS_DATA_OVERRUN		7
134fcf3ce44SJohn Forte #define	EXT_STATUS_DATA_UNDERRUN	8
135fcf3ce44SJohn Forte #define	EXT_STATUS_DEV_NOT_FOUND	9
136fcf3ce44SJohn Forte #define	EXT_STATUS_COPY_ERR		10
137fcf3ce44SJohn Forte #define	EXT_STATUS_MAILBOX		11
138fcf3ce44SJohn Forte #define	EXT_STATUS_UNSUPPORTED_SUBCODE	12
139fcf3ce44SJohn Forte #define	EXT_STATUS_UNSUPPORTED_VERSION	13
140fcf3ce44SJohn Forte #define	EXT_STATUS_MS_NO_RESPONSE	14
141fcf3ce44SJohn Forte #define	EXT_STATUS_SCSI_STATUS		15
142fcf3ce44SJohn Forte #define	EXT_STATUS_BUFFER_TOO_SMALL	16
143fcf3ce44SJohn Forte #define	EXT_STATUS_NO_MEMORY		17
144fcf3ce44SJohn Forte #define	EXT_STATUS_UNKNOWN		18
145fcf3ce44SJohn Forte #define	EXT_STATUS_UNKNOWN_DSTATUS	19
146fcf3ce44SJohn Forte #define	EXT_STATUS_INVALID_REQUEST	20
147fcf3ce44SJohn Forte #define	EXT_STATUS_DEVICE_NOT_READY	21
148fcf3ce44SJohn Forte #define	EXT_STATUS_DEVICE_OFFLINE	22
149fcf3ce44SJohn Forte #define	EXT_STATUS_HBA_NOT_READY	23
150fcf3ce44SJohn Forte #define	EXT_STATUS_HBA_QUEUE_FULL	24
151fcf3ce44SJohn Forte #define	EXT_STATUS_INVALID_VPINDEX	25
152fcf3ce44SJohn Forte 
153fcf3ce44SJohn Forte /*
154fcf3ce44SJohn Forte  * Detail Status contains the SCSI bus status codes.
155fcf3ce44SJohn Forte  */
156fcf3ce44SJohn Forte 
157fcf3ce44SJohn Forte #define	EXT_DSTATUS_GOOD			0x00
158fcf3ce44SJohn Forte #define	EXT_DSTATUS_CHECK_CONDITION		0x02
159fcf3ce44SJohn Forte #define	EXT_DSTATUS_CONDITION_MET		0x04
160fcf3ce44SJohn Forte #define	EXT_DSTATUS_BUSY			0x08
161fcf3ce44SJohn Forte #define	EXT_DSTATUS_INTERMEDIATE		0x10
162fcf3ce44SJohn Forte #define	EXT_DSTATUS_INTERMEDIATE_COND_MET	0x14
163fcf3ce44SJohn Forte #define	EXT_DSTATUS_RESERVATION_CONFLICT	0x18
164fcf3ce44SJohn Forte #define	EXT_DSTATUS_COMMAND_TERMINATED		0x22
165fcf3ce44SJohn Forte #define	EXT_DSTATUS_QUEUE_FULL			0x28
166fcf3ce44SJohn Forte 
167fcf3ce44SJohn Forte /*
168fcf3ce44SJohn Forte  * Detail Status contains the needed Response buffer space(bytes)
169fcf3ce44SJohn Forte  * when Status = EXT_STATUS_BUFFER_TOO_SMALL
170fcf3ce44SJohn Forte  */
171fcf3ce44SJohn Forte 
172fcf3ce44SJohn Forte 
173fcf3ce44SJohn Forte /*
174fcf3ce44SJohn Forte  * Detail Status contains one of the following codes
175fcf3ce44SJohn Forte  * when Status = EXT_STATUS_INVALID_PARAM or
176fcf3ce44SJohn Forte  *             = EXT_STATUS_DEV_NOT_FOUND
177fcf3ce44SJohn Forte  */
178fcf3ce44SJohn Forte #define	EXT_DSTATUS_NOADNL_INFO			0x00
179fcf3ce44SJohn Forte #define	EXT_DSTATUS_HBA_INST			0x01
180fcf3ce44SJohn Forte #define	EXT_DSTATUS_TARGET			0x02
181fcf3ce44SJohn Forte #define	EXT_DSTATUS_LUN				0x03
182fcf3ce44SJohn Forte #define	EXT_DSTATUS_REQUEST_LEN			0x04
183fcf3ce44SJohn Forte #define	EXT_DSTATUS_PATH_INDEX			0x05
184fcf3ce44SJohn Forte 
185fcf3ce44SJohn Forte /*
186fcf3ce44SJohn Forte  * Currently supported DeviceControl / ioctl command codes
187fcf3ce44SJohn Forte  */
188fcf3ce44SJohn Forte #define	EXT_CC_QUERY			EXT_CC_QUERY_OS
189fcf3ce44SJohn Forte #define	EXT_CC_SEND_FCCT_PASSTHRU	EXT_CC_SEND_FCCT_PASSTHRU_OS
190fcf3ce44SJohn Forte #define	EXT_CC_REG_AEN			EXT_CC_REG_AEN_OS
191fcf3ce44SJohn Forte #define	EXT_CC_GET_AEN			EXT_CC_GET_AEN_OS
192fcf3ce44SJohn Forte #define	EXT_CC_SEND_ELS_RNID		EXT_CC_SEND_ELS_RNID_OS
193fcf3ce44SJohn Forte #define	EXT_CC_SEND_SCSI_PASSTHRU	EXT_CC_SCSI_PASSTHRU_OS
194fcf3ce44SJohn Forte #define	EXT_CC_READ_HOST_PARAMS		EXT_CC_READ_HOST_PARAMS_OS
195fcf3ce44SJohn Forte #define	EXT_CC_READ_RISC_PARAMS		EXT_CC_READ_RISC_PARAMS_OS
196fcf3ce44SJohn Forte #define	EXT_CC_UPDATE_HOST_PARAMS	EXT_CC_UPDATE_HOST_PARAMS_OS
197fcf3ce44SJohn Forte #define	EXT_CC_UPDATE_RISC_PARAMS	EXT_CC_UPDATE_RISC_PARAMS_OS
198fcf3ce44SJohn Forte #define	EXT_CC_READ_NVRAM		EXT_CC_READ_NVRAM_OS
199fcf3ce44SJohn Forte #define	EXT_CC_UPDATE_NVRAM		EXT_CC_UPDATE_NVRAM_OS
200fcf3ce44SJohn Forte #define	EXT_CC_HOST_IDX			EXT_CC_HOST_IDX_OS
201fcf3ce44SJohn Forte #define	EXT_CC_LOOPBACK			EXT_CC_LOOPBACK_OS
202fcf3ce44SJohn Forte #define	EXT_CC_READ_OPTION_ROM		EXT_CC_READ_OPTION_ROM_OS
203fcf3ce44SJohn Forte #define	EXT_CC_READ_OPTION_ROM_EX	EXT_CC_READ_OPTION_ROM_EX_OS
204fcf3ce44SJohn Forte #define	EXT_CC_UPDATE_OPTION_ROM	EXT_CC_UPDATE_OPTION_ROM_OS
205fcf3ce44SJohn Forte #define	EXT_CC_UPDATE_OPTION_ROM_EX	EXT_CC_UPDATE_OPTION_ROM_EX_OS
206fcf3ce44SJohn Forte #define	EXT_CC_GET_VPD			EXT_CC_GET_VPD_OS
207fcf3ce44SJohn Forte #define	EXT_CC_SET_VPD			EXT_CC_SET_VPD_OS
208fcf3ce44SJohn Forte #define	EXT_CC_GET_FCACHE		EXT_CC_GET_FCACHE_OS
209fcf3ce44SJohn Forte #define	EXT_CC_GET_FCACHE_EX		EXT_CC_GET_FCACHE_EX_OS
210fcf3ce44SJohn Forte #define	EXT_CC_HOST_DRVNAME		EXT_CC_HOST_DRVNAME_OS
211fcf3ce44SJohn Forte #define	EXT_CC_GET_SFP_DATA		EXT_CC_GET_SFP_DATA_OS
212fcf3ce44SJohn Forte #define	EXT_CC_WWPN_TO_SCSIADDR		EXT_CC_WWPN_TO_SCSIADDR_OS
213fcf3ce44SJohn Forte #define	EXT_CC_PORT_PARAM		EXT_CC_PORT_PARAM_OS
214fcf3ce44SJohn Forte #define	EXT_CC_GET_PCI_DATA		EXT_CC_GET_PCI_DATA_OS
215fcf3ce44SJohn Forte #define	EXT_CC_GET_FWEXTTRACE		EXT_CC_GET_FWEXTTRACE_OS
216fcf3ce44SJohn Forte #define	EXT_CC_GET_FWFCETRACE		EXT_CC_GET_FWFCETRACE_OS
217fcf3ce44SJohn Forte #define	EXT_CC_GET_VP_CNT_ID		EXT_CC_GET_VP_CNT_ID_OS
218fcf3ce44SJohn Forte #define	EXT_CC_VPORT_CMD		EXT_CC_VPORT_CMD_OS
2195dfd244aSDaniel Beauregard #define	EXT_CC_ACCESS_FLASH		EXT_CC_ACCESS_FLASH_OS
2205dfd244aSDaniel Beauregard #define	EXT_CC_RESET_FW			EXT_CC_RESET_FW_OS
221*4c3888b8SHans Rosenfeld #define	EXT_CC_I2C_DATA			EXT_CC_I2C_DATA_OS
222*4c3888b8SHans Rosenfeld #define	EXT_CC_DUMP			EXT_CC_DUMP_OS
223*4c3888b8SHans Rosenfeld #define	EXT_CC_SERDES_REG_OP		EXT_CC_SERDES_REG_OP_OS
224*4c3888b8SHans Rosenfeld #define	EXT_CC_VF_STATE			EXT_CC_VF_STATE_OS
225*4c3888b8SHans Rosenfeld #define	EXT_CC_SERDES_REG_OP_EX		EXT_CC_SERDES_REG_OP_EX_OS
226*4c3888b8SHans Rosenfeld #define	EXT_CC_SEND_ELS_PASSTHRU	EXT_CC_ELS_PASSTHRU_OS
227*4c3888b8SHans Rosenfeld #define	EXT_CC_FLASH_UPDATE_CAPS	EXT_CC_FLASH_UPDATE_CAPS_OS
228*4c3888b8SHans Rosenfeld #define	EXT_CC_GET_BBCR_DATA		EXT_CC_GET_BBCR_DATA_OS
229fcf3ce44SJohn Forte /*
230fcf3ce44SJohn Forte  * HBA port operations
231fcf3ce44SJohn Forte  */
232fcf3ce44SJohn Forte #define	EXT_CC_GET_DATA		EXT_CC_GET_DATA_OS
233fcf3ce44SJohn Forte #define	EXT_CC_SET_DATA		EXT_CC_SET_DATA_OS
234fcf3ce44SJohn Forte 
235fcf3ce44SJohn Forte /*
236fcf3ce44SJohn Forte  * The following DeviceControl / ioctl command codes currently are not
237fcf3ce44SJohn Forte  * supported.
238fcf3ce44SJohn Forte  */
239fcf3ce44SJohn Forte #define	EXT_CC_SEND_ELS_RTIN	EXT_CC_SEND_ELS_RTIN_OS
240fcf3ce44SJohn Forte 
241fcf3ce44SJohn Forte 
242fcf3ce44SJohn Forte /*
243fcf3ce44SJohn Forte  * ***********************************************************************
244fcf3ce44SJohn Forte  * EXT_IOCTL SubCode definition.
245fcf3ce44SJohn Forte  * These macros are being used for setting SubCode field in EXT_IOCTL
246fcf3ce44SJohn Forte  * structure.
247fcf3ce44SJohn Forte  * ***********************************************************************
248fcf3ce44SJohn Forte  */
249fcf3ce44SJohn Forte 
250fcf3ce44SJohn Forte /*
251fcf3ce44SJohn Forte  * Query.
252fcf3ce44SJohn Forte  * Uses with EXT_QUERY as the ioctl code.
253fcf3ce44SJohn Forte  */
254eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_HBA_NODE		1
255eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_HBA_PORT		2
256eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_DISC_PORT		3
257eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_DISC_TGT		4
258eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_DISC_LUN		5	/* Currently Not Supported */
259eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_DRIVER		6
260eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_FW			7
261eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_CHIP		8
262eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_CNA_PORT		9
263eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_ADAPTER_VERSIONS	10
264fcf3ce44SJohn Forte 
265fcf3ce44SJohn Forte /*
266fcf3ce44SJohn Forte  * Get.
267fcf3ce44SJohn Forte  * Uses with EXT_GET_DATA as the ioctl code
268fcf3ce44SJohn Forte  */
269fcf3ce44SJohn Forte /* 1 - 99 Common */
270fcf3ce44SJohn Forte #define	EXT_SC_GET_SCSI_ADDR		1	/* Currently Not Supported */
271fcf3ce44SJohn Forte #define	EXT_SC_GET_ERR_DETECTIONS	2	/* Currently Not Supported */
272fcf3ce44SJohn Forte #define	EXT_SC_GET_STATISTICS		3
273fcf3ce44SJohn Forte #define	EXT_SC_GET_BUS_MODE		4	/* Currently Not Supported */
274fcf3ce44SJohn Forte #define	EXT_SC_GET_DR_DUMP_BUF		5	/* Currently Not Supported */
275fcf3ce44SJohn Forte #define	EXT_SC_GET_RISC_CODE		6
276fcf3ce44SJohn Forte #define	EXT_SC_GET_FLASH_RAM		7
277fcf3ce44SJohn Forte #define	EXT_SC_GET_BEACON_STATE		8
2784f8b8adcSDaniel Beauregard #define	EXT_SC_GET_DCBX_PARAM		9
279eb82ff87SDaniel Beauregard #define	EXT_SC_GET_FCF_LIST		10
280eb82ff87SDaniel Beauregard #define	EXT_SC_GET_RESOURCE_CNTS	11
281*4c3888b8SHans Rosenfeld #define	EXT_SC_GET_PRIV_STATS		12
282fcf3ce44SJohn Forte 
283fcf3ce44SJohn Forte /* 100 - 199 FC_INTF_TYPE */
284fcf3ce44SJohn Forte #define	EXT_SC_GET_LINK_STATUS		101	/* Currently Not Supported */
285fcf3ce44SJohn Forte #define	EXT_SC_GET_LOOP_ID		102	/* Currently Not Supported */
286fcf3ce44SJohn Forte #define	EXT_SC_GET_LUN_BITMASK		103
287fcf3ce44SJohn Forte #define	EXT_SC_GET_PORT_DATABASE	104	/* Currently Not Supported */
288fcf3ce44SJohn Forte #define	EXT_SC_GET_PORT_DATABASE_MEM	105	/* Currently Not Supported */
289fcf3ce44SJohn Forte #define	EXT_SC_GET_PORT_SUMMARY		106
290fcf3ce44SJohn Forte #define	EXT_SC_GET_POSITION_MAP		107
291fcf3ce44SJohn Forte #define	EXT_SC_GET_RETRY_CNT		108	/* Currently Not Supported */
292fcf3ce44SJohn Forte #define	EXT_SC_GET_RNID			109
293fcf3ce44SJohn Forte #define	EXT_SC_GET_RTIN			110	/* Currently Not Supported */
294fcf3ce44SJohn Forte #define	EXT_SC_GET_FC_LUN_BITMASK	111
295fcf3ce44SJohn Forte #define	EXT_SC_GET_FC_STATISTICS	112
296fcf3ce44SJohn Forte #define	EXT_SC_GET_FC4_STATISTICS	113
297fcf3ce44SJohn Forte #define	EXT_SC_GET_TARGET_ID		114
298fcf3ce44SJohn Forte 
299fcf3ce44SJohn Forte 
300fcf3ce44SJohn Forte /* 200 - 299 SCSI_INTF_TYPE */
301fcf3ce44SJohn Forte #define	EXT_SC_GET_SEL_TIMEOUT		201	/* Currently Not Supported */
302fcf3ce44SJohn Forte 
3034f8b8adcSDaniel Beauregard #define	EXT_DEF_DCBX_PARAM_BUF_SIZE	4096	/* Bytes */
304fcf3ce44SJohn Forte 
305fcf3ce44SJohn Forte /*
306fcf3ce44SJohn Forte  * Set.
307fcf3ce44SJohn Forte  * Uses with EXT_SET_DATA as the ioctl code
308fcf3ce44SJohn Forte  */
309fcf3ce44SJohn Forte /* 1 - 99 Common */
310fcf3ce44SJohn Forte #define	EXT_SC_RST_STATISTICS		3
311fcf3ce44SJohn Forte #define	EXT_SC_SET_BUS_MODE		4	/* Currently Not Supported */
312fcf3ce44SJohn Forte #define	EXT_SC_SET_DR_DUMP_BUF		5	/* Currently Not Supported */
313fcf3ce44SJohn Forte #define	EXT_SC_SET_RISC_CODE		6
314fcf3ce44SJohn Forte #define	EXT_SC_SET_FLASH_RAM		7
315fcf3ce44SJohn Forte #define	EXT_SC_SET_BEACON_STATE		8
316fcf3ce44SJohn Forte 
317fcf3ce44SJohn Forte /* special types (non snia) */
318fcf3ce44SJohn Forte #define	EXT_SC_SET_PARMS		99	/* dpb */
319fcf3ce44SJohn Forte 
320fcf3ce44SJohn Forte /* 100 - 199 FC_INTF_TYPE */
321fcf3ce44SJohn Forte #define	EXT_SC_SET_LUN_BITMASK		103
322fcf3ce44SJohn Forte #define	EXT_SC_SET_RETRY_CNT		108	/* Currently Not Supported */
323fcf3ce44SJohn Forte #define	EXT_SC_SET_RNID			109
324fcf3ce44SJohn Forte #define	EXT_SC_SET_RTIN			110	/* Currently Not Supported */
325fcf3ce44SJohn Forte #define	EXT_SC_SET_FC_LUN_BITMASK	111
326fcf3ce44SJohn Forte #define	EXT_SC_ADD_TARGET_DEVICE	112
327fcf3ce44SJohn Forte #define	EXT_SC_SWAP_TARGET_DEVICE	113
328fcf3ce44SJohn Forte 
329fcf3ce44SJohn Forte /* 200 - 299 SCSI_INTF_TYPE */
330fcf3ce44SJohn Forte #define	EXT_SC_SET_SEL_TIMEOUT		201	/* Currently Not Supported */
331fcf3ce44SJohn Forte 
332fcf3ce44SJohn Forte /* SCSI passthrough */
333fcf3ce44SJohn Forte #define	EXT_SC_SEND_SCSI_PASSTHRU	0
334fcf3ce44SJohn Forte #define	EXT_SC_SEND_FC_SCSI_PASSTHRU	1
335fcf3ce44SJohn Forte 
336fcf3ce44SJohn Forte /* NVRAM */
337fcf3ce44SJohn Forte #define	EXT_SC_NVRAM_HARDWARE		0	/* Save */
338fcf3ce44SJohn Forte #define	EXT_SC_NVRAM_DRIVER		1	/* Driver (Apply) */
339fcf3ce44SJohn Forte #define	EXT_SC_NVRAM_ALL		2	/* NVRAM/Driver (Save+Apply) */
340fcf3ce44SJohn Forte 
341fcf3ce44SJohn Forte /*
342fcf3ce44SJohn Forte  * Vport functions
343fcf3ce44SJohn Forte  * Used with EXT_CC_VPORT_CMD as the ioctl code.
344fcf3ce44SJohn Forte  */
345fcf3ce44SJohn Forte #define	EXT_VF_SC_VPORT_GETINFO		1
3465dfd244aSDaniel Beauregard #define	EXT_VF_SC_VPORT_DELETE		2
3475dfd244aSDaniel Beauregard #define	EXT_VF_SC_VPORT_MODIFY		3
3485dfd244aSDaniel Beauregard #define	EXT_VF_SC_VPORT_CREATE		4
3495dfd244aSDaniel Beauregard 
3505dfd244aSDaniel Beauregard /*
3515dfd244aSDaniel Beauregard  * Flash access sub codes
3525dfd244aSDaniel Beauregard  * Used with EXT_CC_ACCESS_FLASH as the ioctl code.
3535dfd244aSDaniel Beauregard  */
3545dfd244aSDaniel Beauregard #define	EXT_SC_FLASH_READ	0
3555dfd244aSDaniel Beauregard #define	EXT_SC_FLASH_WRITE	1
3565dfd244aSDaniel Beauregard 
3575dfd244aSDaniel Beauregard /*
3585dfd244aSDaniel Beauregard  * Reset FW subcodes for Schultz
3595dfd244aSDaniel Beauregard  * Used with EXT_CC_RESET_FW as the ioctl code.
3605dfd244aSDaniel Beauregard  */
3615dfd244aSDaniel Beauregard #define	EXT_SC_RESET_FC_FW	1
3625dfd244aSDaniel Beauregard #define	EXT_SC_RESET_MPI_FW	2
363fcf3ce44SJohn Forte 
364*4c3888b8SHans Rosenfeld /*
365*4c3888b8SHans Rosenfeld  * Thermal temp adapter subcodes
366*4c3888b8SHans Rosenfeld  * Used with EXT_CC_I2C_DATA as the ioctl code.
367*4c3888b8SHans Rosenfeld  */
368*4c3888b8SHans Rosenfeld #define	EXT_SC_GET_BOARD_TEMP	1
369*4c3888b8SHans Rosenfeld 
370*4c3888b8SHans Rosenfeld /*
371*4c3888b8SHans Rosenfeld  * Dump sub codes
372*4c3888b8SHans Rosenfeld  * Used with EXT_CC_DUMP_OP as the ioctl code.
373*4c3888b8SHans Rosenfeld  */
374*4c3888b8SHans Rosenfeld #define	EXT_SC_DUMP_SIZE	1
375*4c3888b8SHans Rosenfeld #define	EXT_SC_DUMP_READ	2
376*4c3888b8SHans Rosenfeld #define	EXT_SC_DUMP_TRIGGER	3
377*4c3888b8SHans Rosenfeld 
378*4c3888b8SHans Rosenfeld /*
379*4c3888b8SHans Rosenfeld  * SerDes Register subcodes
380*4c3888b8SHans Rosenfeld  * Used with EXT_CC_SERDES_REG_OP and EXT_CC_SERDES_REG_OP_EX
381*4c3888b8SHans Rosenfeld  * as the ioctl code.
382*4c3888b8SHans Rosenfeld  */
383*4c3888b8SHans Rosenfeld #define	EXT_SC_READ_SERDES_REG	1
384*4c3888b8SHans Rosenfeld #define	EXT_SC_WRITE_SERDES_REG	2
385*4c3888b8SHans Rosenfeld 
386*4c3888b8SHans Rosenfeld /* Flash update capabilities subcommands */
387*4c3888b8SHans Rosenfeld #define	EXT_SC_GET_FLASH_UPDATE_CAPS	1
388*4c3888b8SHans Rosenfeld #define	EXT_SC_SET_FLASH_UPDATE_CAPS	2
389*4c3888b8SHans Rosenfeld 
390fcf3ce44SJohn Forte /* Read */
391fcf3ce44SJohn Forte 
392fcf3ce44SJohn Forte /* Write */
393fcf3ce44SJohn Forte 
394fcf3ce44SJohn Forte /* Reset */
395fcf3ce44SJohn Forte 
396fcf3ce44SJohn Forte /* Request struct */
397fcf3ce44SJohn Forte 
398fcf3ce44SJohn Forte 
399fcf3ce44SJohn Forte /*
400fcf3ce44SJohn Forte  * Response struct
401fcf3ce44SJohn Forte  */
402fcf3ce44SJohn Forte typedef struct _EXT_HBA_NODE {
403fcf3ce44SJohn Forte 	UINT32	DriverAttr;				/* 4 */
404fcf3ce44SJohn Forte 	UINT32	FWAttr;					/* 4 */
405fcf3ce44SJohn Forte 	UINT16	PortCount;				/* 2; 1 */
406fcf3ce44SJohn Forte 	UINT16	InterfaceType;				/* 2; FC/SCSI */
407fcf3ce44SJohn Forte 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];		/* 8 */
408fcf3ce44SJohn Forte 	UINT8	Manufacturer[EXT_DEF_MAX_STR_SIZE];	/* 128; "QLOGIC" */
409fcf3ce44SJohn Forte 	UINT8	Model[EXT_DEF_MAX_STR_SIZE];		/* 128; "QLA2200" */
410fcf3ce44SJohn Forte 	UINT8	SerialNum[EXT_DEF_SERIAL_NUM_SIZE];	/* 4;  123  */
411fcf3ce44SJohn Forte 	UINT8	DriverVersion[EXT_DEF_MAX_STR_SIZE];	/* 128; "7.4.3" */
412fcf3ce44SJohn Forte 	UINT8	FWVersion[EXT_DEF_MAX_STR_SIZE];	/* 128; "2.1.6" */
413fcf3ce44SJohn Forte 	UINT8	OptRomVersion[EXT_DEF_MAX_STR_SIZE];	/* 128; "1.44" */
414*4c3888b8SHans Rosenfeld 	UINT8	MpiVersion[4];				/* 4 */
415*4c3888b8SHans Rosenfeld 	UINT8	PepFwVersion[4];			/* 4 */
416*4c3888b8SHans Rosenfeld 	UINT8	Reserved[24];				/* 24 */
417fcf3ce44SJohn Forte } EXT_HBA_NODE, *PEXT_HBA_NODE;				/* 696 */
418fcf3ce44SJohn Forte 
419fcf3ce44SJohn Forte /* HBA node query interface type */
420fcf3ce44SJohn Forte #define	EXT_DEF_FC_INTF_TYPE			1
421fcf3ce44SJohn Forte #define	EXT_DEF_SCSI_INTF_TYPE			2
422fcf3ce44SJohn Forte #define	EXT_DEF_VIRTUAL_FC_INTF_TYPE		3
423fcf3ce44SJohn Forte 
424fcf3ce44SJohn Forte typedef struct _EXT_HBA_PORT {
425fcf3ce44SJohn Forte 	UINT64	Target;				/* 8 */
426fcf3ce44SJohn Forte 	UINT32	PortSupportedSpeed;		/* 4 */
427fcf3ce44SJohn Forte 	UINT32	PortSpeed;			/* 4 */
428fcf3ce44SJohn Forte 	UINT16	Type;				/* 2; Port Type */
429fcf3ce44SJohn Forte 	UINT16	State;				/* 2; Port State */
430fcf3ce44SJohn Forte 	UINT16	Mode;				/* 2 */
431fcf3ce44SJohn Forte 	UINT16	DiscPortCount;			/* 2 */
432fcf3ce44SJohn Forte 	UINT16	DiscPortNameType;		/* 2; USE_NODE_NAME or */
433fcf3ce44SJohn Forte 						/* USE_PORT_NAME */
434fcf3ce44SJohn Forte 	UINT16	DiscTargetCount;		/* 2 */
435fcf3ce44SJohn Forte 	UINT16	Bus;				/* 2 */
436fcf3ce44SJohn Forte 	UINT16	Lun;				/* 2 */
437fcf3ce44SJohn Forte 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
4387a2b99c0SDaniel Beauregard 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes valid Port Id. */
439fcf3ce44SJohn Forte 	UINT8	PortSupportedFC4Types;		/* 1 */
440fcf3ce44SJohn Forte 	UINT8	PortActiveFC4Types;		/* 1 */
441fcf3ce44SJohn Forte 	UINT8	FabricName[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
4425dfd244aSDaniel Beauregard 	UINT16	LinkState2;			/* 2; sfp status */
4435dfd244aSDaniel Beauregard 	UINT16	LinkState3;			/* 2; reserved field */
444*4c3888b8SHans Rosenfeld 	UINT16	LinkState1;			/* 2; sfp status */
445*4c3888b8SHans Rosenfeld 	UINT16	LinkState6;			/* 2; sfp status */
446*4c3888b8SHans Rosenfeld 	UINT8	Reserved[2];			/* 2 */
4477a2b99c0SDaniel Beauregard } EXT_HBA_PORT, *PEXT_HBA_PORT;			/* 64 */
448fcf3ce44SJohn Forte 
449fcf3ce44SJohn Forte /* FC-4 Instrumentation */
450fcf3ce44SJohn Forte typedef struct _EXT_HBA_FC4Statistics {
451fcf3ce44SJohn Forte 	INT64	InputRequests;			/* 8  */
452fcf3ce44SJohn Forte 	INT64	OutputRequests;			/* 8  */
453fcf3ce44SJohn Forte 	INT64	ControlRequests;		/* 8  */
454fcf3ce44SJohn Forte 	INT64	InputMegabytes;			/* 8  */
455fcf3ce44SJohn Forte 	INT64	OutputMegabytes;		/* 8  */
456fcf3ce44SJohn Forte 	UINT64	Reserved[6];			/* 48 */
457fcf3ce44SJohn Forte } EXT_HBA_FC4STATISTICS, *PEXT_HBA_FC4STATISTICS;	/* 88 */
458fcf3ce44SJohn Forte 
459fcf3ce44SJohn Forte typedef struct _EXT_LOOPBACK_REQ {
460fcf3ce44SJohn Forte 	UINT32	TransferCount;
461fcf3ce44SJohn Forte 	UINT32	IterationCount;
462fcf3ce44SJohn Forte 	UINT32	BufferAddress;
463fcf3ce44SJohn Forte 	UINT32	BufferLength;
464fcf3ce44SJohn Forte 	UINT16	Options;
465fcf3ce44SJohn Forte 	UINT8	Reserved[18];
466fcf3ce44SJohn Forte } EXT_LOOPBACK_REQ, *PEXT_LOOPBACK_REQ;
467fcf3ce44SJohn Forte 
468fcf3ce44SJohn Forte typedef struct _EXT_LOOPBACK_RSP {
469fcf3ce44SJohn Forte 	UINT64	BufferAddress;
470fcf3ce44SJohn Forte 	UINT32	BufferLength;
471fcf3ce44SJohn Forte 	UINT32	IterationCountLastError;
472fcf3ce44SJohn Forte 	UINT16	CompletionStatus;
473fcf3ce44SJohn Forte 	UINT16	CrcErrorCount;
474fcf3ce44SJohn Forte 	UINT16	DisparityErrorCount;
475fcf3ce44SJohn Forte 	UINT16	FrameLengthErrorCount;
476fcf3ce44SJohn Forte 	UINT8	CommandSent;
477fcf3ce44SJohn Forte 	UINT8	Reserved[15];
478fcf3ce44SJohn Forte } EXT_LOOPBACK_RSP, *PEXT_LOOPBACK_RSP;
479fcf3ce44SJohn Forte 
480fcf3ce44SJohn Forte /* used with loopback response CommandSent */
481fcf3ce44SJohn Forte #define	INT_DEF_LB_LOOPBACK_CMD		0
482fcf3ce44SJohn Forte #define	INT_DEF_LB_ECHO_CMD		1
483fcf3ce44SJohn Forte 
484fcf3ce44SJohn Forte /* definition for interpreting CompletionStatus values */
485fcf3ce44SJohn Forte #define	EXT_DEF_LB_COMPLETE	0x4000
486fcf3ce44SJohn Forte #define	EXT_DEF_LB_PARAM_ERR	0x4006
487fcf3ce44SJohn Forte #define	EXT_DEF_LB_LOOP_DOWN	0x400b
488fcf3ce44SJohn Forte #define	EXT_DEF_LB_CMD_ERROR	0x400c
489fcf3ce44SJohn Forte 
490fcf3ce44SJohn Forte /* port type */
491fcf3ce44SJohn Forte #define	EXT_DEF_INITIATOR_DEV	0x1
492fcf3ce44SJohn Forte #define	EXT_DEF_TARGET_DEV	0x2
493fcf3ce44SJohn Forte #define	EXT_DEF_TAPE_DEV	0x4
494fcf3ce44SJohn Forte #define	EXT_DEF_FABRIC_DEV	0x8
495fcf3ce44SJohn Forte 
496fcf3ce44SJohn Forte 
497fcf3ce44SJohn Forte /* HBA port state */
498fcf3ce44SJohn Forte #define	EXT_DEF_HBA_OK		0
499fcf3ce44SJohn Forte #define	EXT_DEF_HBA_SUSPENDED	1
500fcf3ce44SJohn Forte #define	EXT_DEF_HBA_LOOP_DOWN	2
501fcf3ce44SJohn Forte 
502fcf3ce44SJohn Forte /* Connection mode */
503fcf3ce44SJohn Forte #define	EXT_DEF_UNKNOWN_MODE	0
504fcf3ce44SJohn Forte #define	EXT_DEF_P2P_MODE	1
505fcf3ce44SJohn Forte #define	EXT_DEF_LOOP_MODE	2
506fcf3ce44SJohn Forte #define	EXT_DEF_FL_MODE		3
507fcf3ce44SJohn Forte #define	EXT_DEF_N_MODE		4
508fcf3ce44SJohn Forte 
509fcf3ce44SJohn Forte /* Valid name type for Disc. port/target */
510fcf3ce44SJohn Forte #define	EXT_DEF_USE_NODE_NAME	1
511fcf3ce44SJohn Forte #define	EXT_DEF_USE_PORT_NAME	2
512fcf3ce44SJohn Forte 
513fcf3ce44SJohn Forte /* FC4 type values */
514fcf3ce44SJohn Forte #define	EXT_DEF_FC4_TYPE_SCSI	0x1
515fcf3ce44SJohn Forte #define	EXT_DEF_FC4_TYPE_IP	0x2
516fcf3ce44SJohn Forte #define	EXT_DEF_FC4_TYPE_SCTP	0x4
517fcf3ce44SJohn Forte #define	EXT_DEF_FC4_TYPE_VI	0x8
518fcf3ce44SJohn Forte 
5195dfd244aSDaniel Beauregard /* IIDMA rate values */
5205dfd244aSDaniel Beauregard #define	IIDMA_RATE_1GB		0x0
5215dfd244aSDaniel Beauregard #define	IIDMA_RATE_2GB		0x1
5225dfd244aSDaniel Beauregard #define	IIDMA_RATE_4GB		0x3
5235dfd244aSDaniel Beauregard #define	IIDMA_RATE_8GB		0x4
5247a2b99c0SDaniel Beauregard #define	IIDMA_RATE_10GB		0x13
525*4c3888b8SHans Rosenfeld #define	IIDMA_RATE_16GB		0x5
526*4c3888b8SHans Rosenfeld #define	IIDMA_RATE_32GB		0x6
5275dfd244aSDaniel Beauregard #define	IIDMA_RATE_UNKNOWN	0xffff
5285dfd244aSDaniel Beauregard 
5295dfd244aSDaniel Beauregard /* IIDMA Mode values */
5305dfd244aSDaniel Beauregard #define	IIDMA_MODE_0		0
5315dfd244aSDaniel Beauregard #define	IIDMA_MODE_1		1
5325dfd244aSDaniel Beauregard #define	IIDMA_MODE_2		2
5335dfd244aSDaniel Beauregard #define	IIDMA_MODE_3		3
5345dfd244aSDaniel Beauregard 
535fcf3ce44SJohn Forte /* Port Speed values */
536*4c3888b8SHans Rosenfeld #define	EXT_DEF_PORTSPEED_UNKNOWN	0x0
537fcf3ce44SJohn Forte #define	EXT_DEF_PORTSPEED_1GBIT		0x1
538fcf3ce44SJohn Forte #define	EXT_DEF_PORTSPEED_2GBIT		0x2
539fcf3ce44SJohn Forte #define	EXT_DEF_PORTSPEED_4GBIT		0x4
540fcf3ce44SJohn Forte #define	EXT_DEF_PORTSPEED_8GBIT		0x8
541fcf3ce44SJohn Forte #define	EXT_DEF_PORTSPEED_10GBIT	0x10
542*4c3888b8SHans Rosenfeld #define	EXT_DEF_PORTSPEED_16GBIT	0x20
543*4c3888b8SHans Rosenfeld #define	EXT_DEF_PORTSPEED_32GBIT	0x40
544fcf3ce44SJohn Forte #define	EXT_PORTSPEED_NOT_NEGOTIATED	(1<<15)	/* Speed not established */
545fcf3ce44SJohn Forte 
546fcf3ce44SJohn Forte typedef struct _EXT_DISC_PORT {
547fcf3ce44SJohn Forte 	UINT64	TargetId;		/* 8 */
548fcf3ce44SJohn Forte 	UINT16	Type;			/* 2; Port Type */
549fcf3ce44SJohn Forte 	UINT16	Status;			/* 2; Port Status */
550fcf3ce44SJohn Forte 	UINT16	Bus;			/* 2; n/a for Solaris */
551fcf3ce44SJohn Forte 	UINT16	LoopID;			/* 2; Loop ID */
552fcf3ce44SJohn Forte 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
553fcf3ce44SJohn Forte 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
554fcf3ce44SJohn Forte 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes used big endian */
555fcf3ce44SJohn Forte 	UINT8	Local;			/* 1; Local or Remote */
556fcf3ce44SJohn Forte 	UINT8	Reserved[27];		/* 27 */
557fcf3ce44SJohn Forte } EXT_DISC_PORT, *PEXT_DISC_PORT;	/* 64 */
558fcf3ce44SJohn Forte 
559fcf3ce44SJohn Forte typedef struct _EXT_DISC_TARGET {
560fcf3ce44SJohn Forte 	UINT64	TargetId;		/* 8 */
561fcf3ce44SJohn Forte 	UINT16	Type;			/* 2; Target Type */
562fcf3ce44SJohn Forte 	UINT16	Status;			/* 2; Target Status */
563fcf3ce44SJohn Forte 	UINT16	Bus;			/* 2; n/a for Solaris */
564fcf3ce44SJohn Forte 	UINT16	LunCount;		/* 2; n/a for nt */
565fcf3ce44SJohn Forte 	UINT16	LoopID;			/* 2; Loop ID */
566fcf3ce44SJohn Forte 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
567fcf3ce44SJohn Forte 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
5685dfd244aSDaniel Beauregard 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes used big endian */
569fcf3ce44SJohn Forte 	UINT8	Local;			/* 1; Local or Remote */
570fcf3ce44SJohn Forte 	UINT8	Reserved[25];		/* 25 */
571fcf3ce44SJohn Forte } EXT_DISC_TARGET, *PEXT_DISC_TARGET;	/* 64 */
572fcf3ce44SJohn Forte 
573fcf3ce44SJohn Forte /* The following command is not supported */
574fcf3ce44SJohn Forte typedef struct _EXT_DISC_LUN {	/* n/a for nt */
575fcf3ce44SJohn Forte 	UINT16	Id;		/* 2 */
576fcf3ce44SJohn Forte 	UINT16	State;		/* 2 */
577fcf3ce44SJohn Forte 	UINT16	IoCount;	/* 2 */
578fcf3ce44SJohn Forte 	UINT8	Reserved[30];	/* 30 */
579fcf3ce44SJohn Forte } EXT_DISC_LUN, *PEXT_DISC_LUN;	/* 36 */
580fcf3ce44SJohn Forte 
581fcf3ce44SJohn Forte 
582fcf3ce44SJohn Forte /* SCSI address */
583fcf3ce44SJohn Forte typedef struct _EXT_SCSI_ADDR {
584fcf3ce44SJohn Forte 	UINT64	Target;			/* 8 */
585fcf3ce44SJohn Forte 	UINT16	Bus;			/* 2 */
586fcf3ce44SJohn Forte 	UINT16	Lun;			/* 2 */
587fcf3ce44SJohn Forte 	UINT8	Padding[12];		/* 12 */
588fcf3ce44SJohn Forte } EXT_SCSI_ADDR, *PEXT_SCSI_ADDR;	/* 24 */
589fcf3ce44SJohn Forte 
590fcf3ce44SJohn Forte 
591fcf3ce44SJohn Forte /* Fibre Channel address */
592fcf3ce44SJohn Forte typedef struct _EXT_FC_ADDR {
593fcf3ce44SJohn Forte 	UINT16	Type;					/* 2 */
594fcf3ce44SJohn Forte 	union {
595fcf3ce44SJohn Forte 		UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
596fcf3ce44SJohn Forte 		UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
597fcf3ce44SJohn Forte 		UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4 */
598fcf3ce44SJohn Forte 	} FcAddr;
599fcf3ce44SJohn Forte 	UINT8	Padding[4];				/* 4 */
600fcf3ce44SJohn Forte } EXT_FC_ADDR, *PEXT_FC_ADDR;				/* 14 */
601fcf3ce44SJohn Forte 
602fcf3ce44SJohn Forte #define	EXT_DEF_TYPE_WWNN	1
603fcf3ce44SJohn Forte #define	EXT_DEF_TYPE_WWPN	2
604fcf3ce44SJohn Forte #define	EXT_DEF_TYPE_PORTID	3
605fcf3ce44SJohn Forte #define	EXT_DEF_TYPE_FABRIC	4
606fcf3ce44SJohn Forte 
607fcf3ce44SJohn Forte /* Destination address */
608fcf3ce44SJohn Forte typedef struct _EXT_DEST_ADDR {
609fcf3ce44SJohn Forte 	union {
610fcf3ce44SJohn Forte 		struct {
611fcf3ce44SJohn Forte 			UINT64	Target;			/* 8 */
612fcf3ce44SJohn Forte 			UINT16	Bus;			/* 2 */
613fcf3ce44SJohn Forte 			UINT8	pad[6];			/* 6 */
614fcf3ce44SJohn Forte 		} ScsiAddr;
615fcf3ce44SJohn Forte 		UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
616fcf3ce44SJohn Forte 		UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
617fcf3ce44SJohn Forte 		UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4 */
618fcf3ce44SJohn Forte 	} DestAddr;
619fcf3ce44SJohn Forte 	UINT16	DestType;				/* 2 */
620fcf3ce44SJohn Forte 	UINT16	Lun;					/* 2 */
621fcf3ce44SJohn Forte 	UINT8	Padding[4];				/* 4 */
622fcf3ce44SJohn Forte } EXT_DEST_ADDR, *PEXT_DEST_ADDR;			/* 24 */
623fcf3ce44SJohn Forte 
624fcf3ce44SJohn Forte 
625fcf3ce44SJohn Forte #define	EXT_DEF_DESTTYPE_WWNN		1
626fcf3ce44SJohn Forte #define	EXT_DEF_DESTTYPE_WWPN		2
627fcf3ce44SJohn Forte #define	EXT_DEF_DESTTYPE_PORTID		3
628fcf3ce44SJohn Forte #define	EXT_DEF_DESTTYPE_FABRIC		4
629fcf3ce44SJohn Forte #define	EXT_DEF_DESTTYPE_SCSI		5
630fcf3ce44SJohn Forte 
631fcf3ce44SJohn Forte /* Statistic */
632fcf3ce44SJohn Forte typedef struct _EXT_HBA_PORT_STAT {
633fcf3ce44SJohn Forte 	UINT32	ControllerErrorCount;		/* 4 */
634fcf3ce44SJohn Forte 	UINT32	DeviceErrorCount;		/* 4 */
635fcf3ce44SJohn Forte 	UINT32	IoCount;			/* 4 */
636fcf3ce44SJohn Forte 	UINT32	MBytesCount;			/* 4; MB of data processed */
637fcf3ce44SJohn Forte 	UINT32	LipResetCount;			/* 4; Total no. of LIP Reset */
638fcf3ce44SJohn Forte 	UINT32	InterruptCount;			/* 4; Total no. of Interrupts */
639fcf3ce44SJohn Forte 	UINT32	LinkFailureCount;		/* 4 */
640fcf3ce44SJohn Forte 	UINT32	LossOfSyncCount;		/* 4 */
641fcf3ce44SJohn Forte 	UINT32	LossOfSignalsCount;		/* 4 */
642fcf3ce44SJohn Forte 	UINT32	PrimitiveSeqProtocolErrorCount;	/* 4 */
643fcf3ce44SJohn Forte 	UINT32	InvalidTransmissionWordCount;	/* 4 */
644fcf3ce44SJohn Forte 	UINT32	InvalidCRCCount;		/* 4 */
645fcf3ce44SJohn Forte 	UINT8	Reserved[64];			/* 64 */
646fcf3ce44SJohn Forte } EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT;	/* 112 */
647fcf3ce44SJohn Forte 
648fcf3ce44SJohn Forte 
649fcf3ce44SJohn Forte /* Driver property */
650fcf3ce44SJohn Forte typedef struct _EXT_DRIVER {
651fcf3ce44SJohn Forte 	UINT32	MaxTransferLen;			/* 4 */
652fcf3ce44SJohn Forte 	UINT32	MaxDataSegments;		/* 4 */
653fcf3ce44SJohn Forte 	UINT32	Attrib;				/* 4 */
654fcf3ce44SJohn Forte 	UINT32	InternalFlags[4];		/* 16 */
655fcf3ce44SJohn Forte 	UINT16	NumOfBus;			/* 2; Port Type */
656fcf3ce44SJohn Forte 	UINT16	TargetsPerBus;			/* 2; Port Status */
657fcf3ce44SJohn Forte 	UINT16	LunsPerTarget;			/* 2 */
658fcf3ce44SJohn Forte 	UINT16	DmaBitAddresses;		/* 2 */
659fcf3ce44SJohn Forte 	UINT16	IoMapType;			/* 2 */
660fcf3ce44SJohn Forte 	UINT8	Version[EXT_DEF_MAX_STR_SIZE];	/* 128 */
661fcf3ce44SJohn Forte 	UINT8	Reserved[32];			/* 32 */
662fcf3ce44SJohn Forte } EXT_DRIVER, *PEXT_DRIVER;			/* 198 */
663fcf3ce44SJohn Forte 
664fcf3ce44SJohn Forte 
665fcf3ce44SJohn Forte /* Firmware property */
666fcf3ce44SJohn Forte typedef struct _EXT_FW {
667fcf3ce44SJohn Forte 	UINT32	Attrib;				/* 4 */
668fcf3ce44SJohn Forte 	UINT8	Version[EXT_DEF_MAX_STR_SIZE];	/* 128 */
669fcf3ce44SJohn Forte 	UINT8	Reserved[66];			/* 66 */
670fcf3ce44SJohn Forte } EXT_FW, *PEXT_FW;				/* 198 */
671fcf3ce44SJohn Forte 
672fcf3ce44SJohn Forte /* ISP/Chip property */
673fcf3ce44SJohn Forte typedef struct _EXT_CHIP {
674fcf3ce44SJohn Forte 	UINT32	IoAddr;		/* 4 */
675fcf3ce44SJohn Forte 	UINT32	IoAddrLen;	/* 4 */
676fcf3ce44SJohn Forte 	UINT32	MemAddr;	/* 4 */
677fcf3ce44SJohn Forte 	UINT32	MemAddrLen;	/* 4 */
678fcf3ce44SJohn Forte 	UINT16	VendorId;	/* 2 */
679fcf3ce44SJohn Forte 	UINT16	DeviceId;	/* 2 */
680fcf3ce44SJohn Forte 	UINT16	SubVendorId;	/* 2 */
681fcf3ce44SJohn Forte 	UINT16	SubSystemId;	/* 2 */
682fcf3ce44SJohn Forte 	UINT16	PciBusNumber;	/* 2 */
683fcf3ce44SJohn Forte 	UINT16	PciSlotNumber;	/* 2 */
684fcf3ce44SJohn Forte 	UINT16	ChipType;	/* 2 */
685fcf3ce44SJohn Forte 	UINT16	InterruptLevel;	/* 2 */
686fcf3ce44SJohn Forte 	UINT16	OutMbx[8];	/* 16 */
6875dfd244aSDaniel Beauregard 	UINT16	FuncNo;		/* 2 */
6885dfd244aSDaniel Beauregard 	UINT8	Reserved[29];	/* 29 */
689fcf3ce44SJohn Forte 	UINT8	ChipRevID;	/* 1 */
690fcf3ce44SJohn Forte } EXT_CHIP, *PEXT_CHIP;		/* 80 */
691fcf3ce44SJohn Forte 
6924f8b8adcSDaniel Beauregard /* CNA properties */
6934f8b8adcSDaniel Beauregard typedef struct _EXT_CNA_PORT {
6944f8b8adcSDaniel Beauregard 	UINT16	VLanId;						/* 2 */
6954f8b8adcSDaniel Beauregard 	UINT8	VNPortMACAddress[EXT_DEF_MAC_ADDRESS_SIZE];	/* 6 */
6964f8b8adcSDaniel Beauregard 	UINT16	FabricParam;					/* 2 */
6974f8b8adcSDaniel Beauregard 	UINT16	Reserved0;					/* 2 */
6984f8b8adcSDaniel Beauregard 	UINT32	Reserved[29];					/* 116 */
6994f8b8adcSDaniel Beauregard } EXT_CNA_PORT, *PEXT_CNA_PORT;					/* 128 */
700fcf3ce44SJohn Forte 
7017a2b99c0SDaniel Beauregard /* Fabric Parameters */
7027a2b99c0SDaniel Beauregard #define	EXT_DEF_MAC_ADDR_MODE_FPMA	0x8000
7037a2b99c0SDaniel Beauregard 
704eb82ff87SDaniel Beauregard #define	NO_OF_VERSIONS			2
705eb82ff87SDaniel Beauregard #define	FLASH_VERSION			0
706eb82ff87SDaniel Beauregard #define	RUNNING_VERSION			1
707eb82ff87SDaniel Beauregard #define	EXT_OPT_ROM_REGION_MPI_RISC_FW	0x40
708eb82ff87SDaniel Beauregard #define	EXT_OPT_ROM_REGION_EDC_PHY_FW	0x45
709eb82ff87SDaniel Beauregard 
710eb82ff87SDaniel Beauregard typedef struct _EXT_REGIONVERSION {
711eb82ff87SDaniel Beauregard 	UINT16	Region;
712eb82ff87SDaniel Beauregard 	UINT16	SubRegion;	/* If all boot codes are under region 0x7 */
713eb82ff87SDaniel Beauregard 	UINT16	Location;	/* 0: Flash, 1: Running */
714eb82ff87SDaniel Beauregard 	UINT16	VersionLength;
715eb82ff87SDaniel Beauregard 	UINT8	Version[8];
716eb82ff87SDaniel Beauregard 	UINT8	Reserved[8];
717eb82ff87SDaniel Beauregard } EXT_REGIONVERSION, *PEXT_REGIONVERSION;
718eb82ff87SDaniel Beauregard 
719eb82ff87SDaniel Beauregard typedef struct _EXT_ADAPTERREGIONVERSION {
720eb82ff87SDaniel Beauregard 	UINT32	Length;		/* number of struct REGIONVERSION */
721eb82ff87SDaniel Beauregard 	UINT32	Reserved;
722eb82ff87SDaniel Beauregard 	EXT_REGIONVERSION RegionVersion[1];	/* variable length */
723eb82ff87SDaniel Beauregard } EXT_ADAPTERREGIONVERSION, *PEXT_ADAPTERREGIONVERSION;
724eb82ff87SDaniel Beauregard 
725fcf3ce44SJohn Forte /* Request Buffer for RNID */
726fcf3ce44SJohn Forte typedef struct _EXT_RNID_REQ {
727fcf3ce44SJohn Forte 	EXT_FC_ADDR	Addr;				/* 14 */
728fcf3ce44SJohn Forte 	UINT8		DataFormat;			/* 1 */
729fcf3ce44SJohn Forte 	UINT8		Pad;				/* 1 */
730fcf3ce44SJohn Forte 	UINT8		OptWWN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
731fcf3ce44SJohn Forte 	UINT8		OptPortId[EXT_DEF_PORTID_SIZE];	/* 4 */
732fcf3ce44SJohn Forte 	UINT8		Reserved[51];			/* 51 */
733fcf3ce44SJohn Forte } EXT_RNID_REQ, *PEXT_RNID_REQ;				/* 79 */
734fcf3ce44SJohn Forte 
735fcf3ce44SJohn Forte #define	EXT_DEF_RNID_DFORMAT_NONE	0
736fcf3ce44SJohn Forte #define	EXT_DEF_RNID_DFORMAT_TOPO_DISC	0xDF
737fcf3ce44SJohn Forte 
738fcf3ce44SJohn Forte /* Request Buffer for Set RNID */
739fcf3ce44SJohn Forte typedef struct _EXT_SET_RNID_REQ {
740fcf3ce44SJohn Forte 	UINT8	IPVersion[2];		/*  2 */
741fcf3ce44SJohn Forte 	UINT8	UDPPortNumber[2];	/*  2 */
742fcf3ce44SJohn Forte 	UINT8	IPAddress[16];		/* 16 */
743fcf3ce44SJohn Forte 	UINT8	Reserved[64];		/* 64 */
744fcf3ce44SJohn Forte } EXT_SET_RNID_REQ, *PEXT_SET_RNID_REQ; /* 84 */
745fcf3ce44SJohn Forte 
746fcf3ce44SJohn Forte /* RNID definition and data struct */
747*4c3888b8SHans Rosenfeld #define	SEND_RNID_RSP_SIZE	72
748fcf3ce44SJohn Forte 
749fcf3ce44SJohn Forte typedef struct _RNID_DATA
750fcf3ce44SJohn Forte {
751fcf3ce44SJohn Forte 	UINT32	UnitType;		/* 4 */
752fcf3ce44SJohn Forte 	UINT32	NumOfAttachedNodes;	/* 4 */
753fcf3ce44SJohn Forte 	UINT16	TopoDiscFlags;		/* 2 */
754fcf3ce44SJohn Forte 	UINT16	Reserved;		/* 2 */
755fcf3ce44SJohn Forte 	UINT8	WWN[16];		/* 16 */
756fcf3ce44SJohn Forte 	UINT8	PortId[4];		/* 4 */
757fcf3ce44SJohn Forte 	UINT8	IPVersion[2];		/* 2 */
758fcf3ce44SJohn Forte 	UINT8	UDPPortNumber[2];	/* 2 */
759fcf3ce44SJohn Forte 	UINT8	IPAddress[16];		/* 16 */
760fcf3ce44SJohn Forte } EXT_RNID_DATA, *PEXT_RNID_DATA;	/* 52 */
761fcf3ce44SJohn Forte 
762fcf3ce44SJohn Forte 
763fcf3ce44SJohn Forte /* SCSI pass-through */
764fcf3ce44SJohn Forte typedef struct _EXT_SCSI_PASSTHRU {
765fcf3ce44SJohn Forte 	EXT_SCSI_ADDR	TargetAddr;
766fcf3ce44SJohn Forte 	UINT8		Direction;
767fcf3ce44SJohn Forte 	UINT8		CdbLength;
768fcf3ce44SJohn Forte 	UINT8		Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
769*4c3888b8SHans Rosenfeld 	UINT8		Reserved[62];
770fcf3ce44SJohn Forte 	UINT8		SenseData[256];
771fcf3ce44SJohn Forte } EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
772fcf3ce44SJohn Forte 
773fcf3ce44SJohn Forte /* FC SCSI pass-through */
774fcf3ce44SJohn Forte typedef struct _EXT_FC_SCSI_PASSTHRU {
775fcf3ce44SJohn Forte 	EXT_DEST_ADDR	FCScsiAddr;
776fcf3ce44SJohn Forte 	UINT8		Direction;
777fcf3ce44SJohn Forte 	UINT8		CdbLength;
778fcf3ce44SJohn Forte 	UINT8		Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
779*4c3888b8SHans Rosenfeld 	UINT8		Reserved[60];
780fcf3ce44SJohn Forte 	UINT8		SenseData[256];
781fcf3ce44SJohn Forte } EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
782fcf3ce44SJohn Forte 
783fcf3ce44SJohn Forte /* SCSI pass-through direction */
784fcf3ce44SJohn Forte #define	EXT_DEF_SCSI_PASSTHRU_DATA_IN		1
785fcf3ce44SJohn Forte #define	EXT_DEF_SCSI_PASSTHRU_DATA_OUT		2
786fcf3ce44SJohn Forte 
787fcf3ce44SJohn Forte 
788fcf3ce44SJohn Forte /* EXT_REG_AEN Request struct */
789fcf3ce44SJohn Forte typedef struct _EXT_REG_AEN {
790fcf3ce44SJohn Forte 	UINT32	Enable;		/* 4; non-0 to enable, 0 to disable. */
791fcf3ce44SJohn Forte 	UINT8	Reserved[4];	/* 4 */
792fcf3ce44SJohn Forte } EXT_REG_AEN, *PEXT_REG_AEN;	/* 8 */
793fcf3ce44SJohn Forte 
794fcf3ce44SJohn Forte /* EXT_GET_AEN Response struct */
795fcf3ce44SJohn Forte typedef struct _EXT_ASYNC_EVENT {
796fcf3ce44SJohn Forte 	UINT32	AsyncEventCode;		/* 4 */
797fcf3ce44SJohn Forte 	union {
798fcf3ce44SJohn Forte 		struct {
799fcf3ce44SJohn Forte 			UINT8 RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL]; /* 3 BE */
800fcf3ce44SJohn Forte 			UINT8 AddrFormat;			/* 1 */
801fcf3ce44SJohn Forte 			UINT8 Rsvd_1[8];			/* 8 */
802fcf3ce44SJohn Forte 		} RSCN;
803fcf3ce44SJohn Forte 
804fcf3ce44SJohn Forte 		UINT8	Reserved[12];	/* 12 */
805fcf3ce44SJohn Forte 	} Payload;
806fcf3ce44SJohn Forte } EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT;	/* 16 */
807fcf3ce44SJohn Forte 
808fcf3ce44SJohn Forte 
809fcf3ce44SJohn Forte /* Asynchronous Event Codes */
810fcf3ce44SJohn Forte #define	EXT_DEF_LIP_OCCURRED	0x8010
811fcf3ce44SJohn Forte #define	EXT_DEF_LINK_UP		0x8011
812fcf3ce44SJohn Forte #define	EXT_DEF_LINK_DOWN	0x8012
813fcf3ce44SJohn Forte #define	EXT_DEF_LIP_RESET	0x8013
814fcf3ce44SJohn Forte #define	EXT_DEF_RSCN		0x8015
815fcf3ce44SJohn Forte #define	EXT_DEF_DEVICE_UPDATE	0x8014
816*4c3888b8SHans Rosenfeld #define	EXT_DEF_DPORT_DIAGS	0x8080
817fcf3ce44SJohn Forte 
818fcf3ce44SJohn Forte /* LED state information */
819fcf3ce44SJohn Forte #define	EXT_DEF_GRN_BLINK_OFF	0x00
820fcf3ce44SJohn Forte #define	EXT_DEF_GRN_BLINK_ON	0x01
821fcf3ce44SJohn Forte 
822fcf3ce44SJohn Forte typedef struct _EXT_BEACON_CONTROL {
823fcf3ce44SJohn Forte 	UINT32	State;				/* 4  */
824fcf3ce44SJohn Forte 	UINT8	Reserved[12];			/* 12 */
825fcf3ce44SJohn Forte } EXT_BEACON_CONTROL, *PEXT_BEACON_CONTROL;	/* 16 */
826fcf3ce44SJohn Forte 
827fcf3ce44SJohn Forte /* Required # of entries in the queue buffer allocated. */
828fcf3ce44SJohn Forte #define	EXT_DEF_MAX_AEN_QUEUE	EXT_DEF_MAX_AEN_QUEUE_OS
829fcf3ce44SJohn Forte 
830fcf3ce44SJohn Forte /*
831fcf3ce44SJohn Forte  * LUN BitMask structure definition, array of 8bit bytes,
832fcf3ce44SJohn Forte  * 1 bit per lun.  When bit == 1, the lun is masked.
833fcf3ce44SJohn Forte  * Most significant bit of mask[0] is lun 0.
834fcf3ce44SJohn Forte  * Least significant bit of mask[0] is lun 7.
835fcf3ce44SJohn Forte  */
836fcf3ce44SJohn Forte typedef struct _EXT_LUN_BIT_MASK {
8375dfd244aSDaniel Beauregard #if ((EXT_DEF_NON_SCSI3_MAX_LUN & 0x7) == 0)
8385dfd244aSDaniel Beauregard 	UINT8	mask[EXT_DEF_NON_SCSI3_MAX_LUN >> 3];
839fcf3ce44SJohn Forte #else
8405dfd244aSDaniel Beauregard 	UINT8	mask[(EXT_DEF_NON_SCSI3_MAX_LUN + 8) >> 3 ];
841fcf3ce44SJohn Forte #endif
842fcf3ce44SJohn Forte } EXT_LUN_BIT_MASK, *PEXT_LUN_BIT_MASK;
843fcf3ce44SJohn Forte 
844fcf3ce44SJohn Forte /* Device type to get for EXT_SC_GET_PORT_SUMMARY */
845fcf3ce44SJohn Forte #define	EXT_DEF_GET_KNOWN_DEVICE	0x1
846fcf3ce44SJohn Forte #define	EXT_DEF_GET_VISIBLE_DEVICE	0x2
847fcf3ce44SJohn Forte #define	EXT_DEF_GET_HIDDEN_DEVICE	0x4
848fcf3ce44SJohn Forte #define	EXT_DEF_GET_FABRIC_DEVICE	0x8
849fcf3ce44SJohn Forte #define	EXT_DEF_GET_LOOP_DEVICE		0x10
850fcf3ce44SJohn Forte 
851fcf3ce44SJohn Forte /* Each entry in device database */
852fcf3ce44SJohn Forte typedef struct _EXT_DEVICEDATAENTRY
853fcf3ce44SJohn Forte {
854fcf3ce44SJohn Forte 	EXT_SCSI_ADDR	TargetAddress;	/* scsi address */
855fcf3ce44SJohn Forte 	UINT32		DeviceFlags;	/* Flags for device */
856fcf3ce44SJohn Forte 	UINT16		LoopID;		/* Loop ID */
857fcf3ce44SJohn Forte 	UINT16		BaseLunNumber;
858fcf3ce44SJohn Forte 	UINT8		NodeWWN[8];	/* Node World Wide Name for device */
859fcf3ce44SJohn Forte 	UINT8		PortWWN[8];	/* Port World Wide Name for device */
860fcf3ce44SJohn Forte 	UINT8		PortID[3];	/* Current PortId for device */
861fcf3ce44SJohn Forte 	UINT8		ControlFlags;	/* Control flag */
862fcf3ce44SJohn Forte 	UINT8		Reserved[132];
863fcf3ce44SJohn Forte } EXT_DEVICEDATAENTRY, *PEXT_DEVICEDATAENTRY;
864fcf3ce44SJohn Forte 
865fcf3ce44SJohn Forte #define	EXT_DEF_EXTERNAL_LUN_COUNT		2048
866fcf3ce44SJohn Forte #define	EXT_DEF_EXTERNAL_LUN_BITMASK_BYTES	(EXT_DEF_EXTERNAL_LUN_COUNT / 8)
867fcf3ce44SJohn Forte 
868fcf3ce44SJohn Forte /* Structure as used in the IOCTL. */
869fcf3ce44SJohn Forte 
870fcf3ce44SJohn Forte typedef struct _EXT_EXTERNAL_LUN_BITMASK_ENTRY
871fcf3ce44SJohn Forte {
872fcf3ce44SJohn Forte 	UINT8	NodeName[EXT_DEF_WWN_NAME_SIZE];
873fcf3ce44SJohn Forte 	UINT8	PortName[EXT_DEF_WWN_NAME_SIZE];
874fcf3ce44SJohn Forte 	UINT8	Reserved1[16];		/* Pad to 32-byte header */
875fcf3ce44SJohn Forte 	UINT8	Bitmask[EXT_DEF_EXTERNAL_LUN_BITMASK_BYTES];
876fcf3ce44SJohn Forte } EXT_EXTERNAL_LUN_BITMASK_ENTRY, *PEXT_EXTERNAL_LUN_BITMASK_ENTRY;
877fcf3ce44SJohn Forte 
878fcf3ce44SJohn Forte 
879fcf3ce44SJohn Forte /* Structure as it is stored in the NT registry */
880fcf3ce44SJohn Forte 
881fcf3ce44SJohn Forte typedef struct _LUN_BITMASK_LIST
882fcf3ce44SJohn Forte {
883fcf3ce44SJohn Forte 	UINT16	Version;	/* Should be LUN_BITMASK_REGISTRY_VERSION */
884fcf3ce44SJohn Forte 	UINT16	EntryCount;	/* Count of variable entries following */
885fcf3ce44SJohn Forte 	UINT8	Reserved[28];	/* Pad to 32-byte header */
886fcf3ce44SJohn Forte 
887fcf3ce44SJohn Forte 	EXT_EXTERNAL_LUN_BITMASK_ENTRY
888fcf3ce44SJohn Forte 		BitmaskEntry[1]; /* Var-length data */
889fcf3ce44SJohn Forte } EXT_LUN_BITMASK_LIST, *PEXT_LUN_BITMASK_LIST;
890fcf3ce44SJohn Forte 
891fcf3ce44SJohn Forte 
892fcf3ce44SJohn Forte /* Device database information */
893fcf3ce44SJohn Forte typedef struct _EXT_DEVICEDATA
894fcf3ce44SJohn Forte {
895fcf3ce44SJohn Forte 	UINT32	TotalDevices;		/* Set to total number of device */
896fcf3ce44SJohn Forte 	UINT32	ReturnListEntryCount;	/* Set to number of device entries */
897fcf3ce44SJohn Forte 					/* returned in list. */
898fcf3ce44SJohn Forte 
899*4c3888b8SHans Rosenfeld 	EXT_DEVICEDATAENTRY	EntryList[1];	/* Variable length */
900fcf3ce44SJohn Forte } EXT_DEVICEDATA, *PEXT_DEVICEDATA;
901fcf3ce44SJohn Forte 
902fcf3ce44SJohn Forte 
903fcf3ce44SJohn Forte /* Swap Target Device Data structure */
904fcf3ce44SJohn Forte typedef struct _EXT_SWAPTARGETDEVICE
905fcf3ce44SJohn Forte {
906fcf3ce44SJohn Forte 	EXT_DEVICEDATAENTRY	CurrentExistDevice;
907fcf3ce44SJohn Forte 	EXT_DEVICEDATAENTRY	NewDevice;
908fcf3ce44SJohn Forte } EXT_SWAPTARGETDEVICE, *PEXT_SWAPTARGETDEVICE;
909fcf3ce44SJohn Forte 
910fcf3ce44SJohn Forte #define	EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES	1
911fcf3ce44SJohn Forte #define	EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES	256
912fcf3ce44SJohn Forte 
913fcf3ce44SJohn Forte #ifdef _WIN64
914fcf3ce44SJohn Forte #define	EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE	32
915fcf3ce44SJohn Forte #else
916fcf3ce44SJohn Forte #define	EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE \
917fcf3ce44SJohn Forte     offsetof(LUN_BITMASK_LIST_BUFFER, asBitmaskEntry)
918fcf3ce44SJohn Forte #endif
919fcf3ce44SJohn Forte 
920*4c3888b8SHans Rosenfeld #define	EXT_DEF_LUN_BITMASK_LIST_MIN_SIZE \
921fcf3ce44SJohn Forte 	(EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
922fcf3ce44SJohn Forte 	(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
923fcf3ce44SJohn Forte 	EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES))
924*4c3888b8SHans Rosenfeld #define	EXT_DEF_LUN_BITMASK_LIST_MAX_SIZE \
925fcf3ce44SJohn Forte 	(EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
926fcf3ce44SJohn Forte 	(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
927fcf3ce44SJohn Forte 	EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES))
928fcf3ce44SJohn Forte /*
929fcf3ce44SJohn Forte  * LUN mask bit manipulation macros
930fcf3ce44SJohn Forte  *
931fcf3ce44SJohn Forte  *   P = Pointer to an EXT_LUN_BIT_MASK union.
932fcf3ce44SJohn Forte  *   L = LUN number.
933fcf3ce44SJohn Forte  */
934fcf3ce44SJohn Forte #define	EXT_IS_LUN_BIT_SET(P, L) \
935fcf3ce44SJohn Forte 	(((P)->mask[L / 8] & (0x80 >> (L % 8))) ? 1 : 0)
936fcf3ce44SJohn Forte 
937fcf3ce44SJohn Forte #define	EXT_SET_LUN_BIT(P, L) \
938fcf3ce44SJohn Forte 	((P)->mask[L / 8] |= (0x80 >> (L % 8)))
939fcf3ce44SJohn Forte 
940fcf3ce44SJohn Forte #define	EXT_CLR_LUN_BIT(P, L) \
941fcf3ce44SJohn Forte 	((P)->mask[L / 8] &= ~(0x80 >> (L % 8)))
942fcf3ce44SJohn Forte 
943fcf3ce44SJohn Forte typedef struct _EXT_PORT_PARAM {
944fcf3ce44SJohn Forte 	EXT_DEST_ADDR	FCScsiAddr;
945fcf3ce44SJohn Forte 	UINT16		Mode;
946fcf3ce44SJohn Forte 	UINT16		Speed;
947fcf3ce44SJohn Forte } EXT_PORT_PARAM, *PEXT_PORT_PARAM;
948fcf3ce44SJohn Forte 
949fcf3ce44SJohn Forte #define	EXT_IIDMA_MODE_GET	0
950fcf3ce44SJohn Forte #define	EXT_IIDMA_MODE_SET	1
951fcf3ce44SJohn Forte 
9525dfd244aSDaniel Beauregard /*
9535dfd244aSDaniel Beauregard  * PCI header structure definitions.
9545dfd244aSDaniel Beauregard  */
9555dfd244aSDaniel Beauregard 
9565dfd244aSDaniel Beauregard typedef struct _PCI_HEADER_T {
9575dfd244aSDaniel Beauregard 	UINT8	signature[2];
9585dfd244aSDaniel Beauregard 	UINT8	reserved[0x16];
9595dfd244aSDaniel Beauregard 	UINT8	dataoffset[2];
9605dfd244aSDaniel Beauregard 	UINT8	pad[6];
9615dfd244aSDaniel Beauregard } PCI_HEADER_T, *PPCI_HEADER_T;
9625dfd244aSDaniel Beauregard 
9635dfd244aSDaniel Beauregard /*
9645dfd244aSDaniel Beauregard  * PCI data structure definitions.
9655dfd244aSDaniel Beauregard  */
9665dfd244aSDaniel Beauregard typedef struct _PCI_DATA_T {
9675dfd244aSDaniel Beauregard 	UINT8	signature[4];
9685dfd244aSDaniel Beauregard 	UINT8	vid[2];
9695dfd244aSDaniel Beauregard 	UINT8	did[2];
9705dfd244aSDaniel Beauregard 	UINT8	reserved0[2];
9715dfd244aSDaniel Beauregard 	UINT8	pcidatalen[2];
9725dfd244aSDaniel Beauregard 	UINT8	pcidatarev;
9735dfd244aSDaniel Beauregard 	UINT8	classcode[3];
9745dfd244aSDaniel Beauregard 	UINT8	imagelength[2];   /* In sectors */
9755dfd244aSDaniel Beauregard 	UINT8	revisionlevel[2];
9765dfd244aSDaniel Beauregard 	UINT8	codetype;
9775dfd244aSDaniel Beauregard 	UINT8	indicator;
9785dfd244aSDaniel Beauregard 	UINT8	reserved1[2];
9795dfd244aSDaniel Beauregard 	UINT8	pad[8];
9805dfd244aSDaniel Beauregard } PCI_DATA_T, *PPCI_DATA_T;
9815dfd244aSDaniel Beauregard 
982fcf3ce44SJohn Forte /*
983fcf3ce44SJohn Forte  * Mercury/Menlo
984fcf3ce44SJohn Forte  */
985fcf3ce44SJohn Forte 
986fcf3ce44SJohn Forte #define	MENLO_RESET_FLAG_ENABLE_DIAG_FW	1
987fcf3ce44SJohn Forte 
9885dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_RESET {
9895dfd244aSDaniel Beauregard 	UINT16	Flags;
9905dfd244aSDaniel Beauregard 	UINT16	Reserved;
9915dfd244aSDaniel Beauregard } EXT_MENLO_RESET, *PEXT_MENLO_RESET;
992fcf3ce44SJohn Forte 
9935dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_GET_FW_VERSION {
9945dfd244aSDaniel Beauregard 	UINT32	FwVersion;
9955dfd244aSDaniel Beauregard } EXT_MENLO_GET_FW_VERSION, *PEXT_MENLO_GET_FW_VERSION;
996fcf3ce44SJohn Forte 
997fcf3ce44SJohn Forte #define	MENLO_UPDATE_FW_FLAG_DIAG_FW	0x0008  /* if flag is cleared then */
998fcf3ce44SJohn Forte 						/* it must be an fw op */
9995dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_UPDATE_FW {
10005dfd244aSDaniel Beauregard 	UINT64	pFwDataBytes;
10015dfd244aSDaniel Beauregard 	UINT32	TotalByteCount;
10025dfd244aSDaniel Beauregard 	UINT16	Flags;
10035dfd244aSDaniel Beauregard 	UINT16	Reserved;
10045dfd244aSDaniel Beauregard } EXT_MENLO_UPDATE_FW, *PEXT_MENLO_UPDATE_FW;
1005fcf3ce44SJohn Forte 
1006fcf3ce44SJohn Forte #define	CONFIG_PARAM_ID_RESERVED	1
1007fcf3ce44SJohn Forte #define	CONFIG_PARAM_ID_UIF		2
1008fcf3ce44SJohn Forte #define	CONFIG_PARAM_ID_FCOE_COS	3
1009fcf3ce44SJohn Forte #define	CONFIG_PARAM_ID_PAUSE_TYPE	4
1010fcf3ce44SJohn Forte #define	CONFIG_PARAM_ID_TIMEOUTS	5
1011fcf3ce44SJohn Forte 
1012fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_CONFIG_LOG_DATA	1	/* Fetch Config Log Data */
1013fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_LOG_DATA		2	/* Fetch Log Data */
1014fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_PORT_STATISTICS	3	/* Fetch Port Statistics */
1015fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_LIF_STATISTICS	4	/* Fetch LIF Statistics */
1016fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_ASIC_STATISTICS	5	/* Fetch ASIC Statistics */
1017fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_CONFIG_PARAMETERS 6	/* Fetch Config Parameters */
1018fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_PANIC_LOG	7	/* Fetch Panic Log */
1019fcf3ce44SJohn Forte 
1020fcf3ce44SJohn Forte /*
1021fcf3ce44SJohn Forte  * InfoContext defines for INFO_DATA_TYPE_LOG_DATA
1022fcf3ce44SJohn Forte  */
1023fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_DEBUG_LOG			0
1024fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_LEARN_LOG			1
1025fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_FC_ACL_INGRESS_LOG		2
1026fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_FC_ACL_EGRESS_LOG		3
1027fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_ETHERNET_ACL_INGRESS_LOG	4
1028fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_ETHERNET_ACL_EGRESS_LOG	5
1029fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_MESSAGE_TRANSMIT_LOG		6
1030fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_MESSAGE_RECEIVE_LOG		7
1031fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_LINK_EVENT_LOG		8
1032fcf3ce44SJohn Forte #define	IC_LOG_DATA_LOG_ID_DCX_LOG			9
1033fcf3ce44SJohn Forte 
1034fcf3ce44SJohn Forte /*
1035fcf3ce44SJohn Forte  * InfoContext defines for INFO_DATA_TYPE_PORT_STATISTICS
1036fcf3ce44SJohn Forte  */
1037fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_ETHERNET_PORT0	0
1038fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_ETHERNET_PORT1	1
1039fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT0	2
1040fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT1	3
1041fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT0		4
1042fcf3ce44SJohn Forte #define	IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT1		5
1043fcf3ce44SJohn Forte 
1044fcf3ce44SJohn Forte /*
1045fcf3ce44SJohn Forte  * InfoContext defines for INFO_DATA_TYPE_LIF_STATISTICS
1046fcf3ce44SJohn Forte  */
1047fcf3ce44SJohn Forte #define	IC_LIF_STATISTICS_LIF_NUMBER_ETHERNET_PORT0	0
1048fcf3ce44SJohn Forte #define	IC_LIF_STATISTICS_LIF_NUMBER_ETHERNET_PORT1	1
1049fcf3ce44SJohn Forte #define	IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT0		2
1050fcf3ce44SJohn Forte #define	IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT1		3
1051fcf3ce44SJohn Forte #define	IC_LIF_STATISTICS_LIF_NUMBER_CPU		6
1052fcf3ce44SJohn Forte 
10535dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_ACCESS_PARAMETERS {
1054fcf3ce44SJohn Forte 	union {
1055fcf3ce44SJohn Forte 		struct {
1056fcf3ce44SJohn Forte 			UINT32 StartingAddr;
1057fcf3ce44SJohn Forte 			UINT32 Reserved2;
1058fcf3ce44SJohn Forte 			UINT32 Reserved3;
1059fcf3ce44SJohn Forte 		} MenloMemory;		/* For Read & Write Menlo Memory */
1060fcf3ce44SJohn Forte 
1061fcf3ce44SJohn Forte 		struct {
1062fcf3ce44SJohn Forte 			UINT32 ConfigParamID;
1063fcf3ce44SJohn Forte 			UINT32 ConfigParamData0;
1064fcf3ce44SJohn Forte 			UINT32 ConfigParamData1;
1065fcf3ce44SJohn Forte 		} MenloConfig;		/* For change Configuration */
1066fcf3ce44SJohn Forte 
1067fcf3ce44SJohn Forte 		struct {
1068fcf3ce44SJohn Forte 			UINT32 InfoDataType;
1069fcf3ce44SJohn Forte 			UINT32 InfoContext;
1070fcf3ce44SJohn Forte 			UINT32 Reserved;
1071fcf3ce44SJohn Forte 		} MenloInfo;		/* For fetch Menlo Info */
1072fcf3ce44SJohn Forte 	} ap;
10735dfd244aSDaniel Beauregard } EXT_MENLO_ACCESS_PARAMETERS, *PEXT_MENLO_ACCESS_PARAMETERS;
1074fcf3ce44SJohn Forte 
1075*4c3888b8SHans Rosenfeld #define	INFO_DATA_TYPE_LOG_CONFIG_TBC		((10 * 7) + 1) * 4
1076fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_PORT_STAT_ETH_TBC	0x194
1077fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_PORT_STAT_FC_TBC		0xC0
1078fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_LIF_STAT_TBC		0x40
1079fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_ASIC_STAT_TBC		0x5F8
1080fcf3ce44SJohn Forte #define	INFO_DATA_TYPE_CONFIG_TBC		0x140
1081fcf3ce44SJohn Forte 
1082fcf3ce44SJohn Forte #define	MENLO_OP_READ_MEM	0	/* Read Menlo Memory */
1083fcf3ce44SJohn Forte #define	MENLO_OP_WRITE_MEM	1	/* Write Menlo Memory */
1084fcf3ce44SJohn Forte #define	MENLO_OP_CHANGE_CONFIG	2	/* Change Configuration */
1085fcf3ce44SJohn Forte #define	MENLO_OP_GET_INFO	3	/* Fetch Menlo Info (Logs, & */
1086fcf3ce44SJohn Forte 					/* Statistics, Configuration) */
1087fcf3ce44SJohn Forte 
10885dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_MANAGE_INFO {
1089eb82ff87SDaniel Beauregard 	UINT64				pDataBytes;
1090eb82ff87SDaniel Beauregard 	EXT_MENLO_ACCESS_PARAMETERS	Parameters;
1091eb82ff87SDaniel Beauregard 	UINT32				TotalByteCount;
1092eb82ff87SDaniel Beauregard 	UINT16				Operation;
1093eb82ff87SDaniel Beauregard 	UINT16				Reserved;
10945dfd244aSDaniel Beauregard } EXT_MENLO_MANAGE_INFO, *PEXT_MENLO_MANAGE_INFO;
1095fcf3ce44SJohn Forte 
1096fcf3ce44SJohn Forte #define	MENLO_FC_CHECKSUM_FAILURE	0x01
1097fcf3ce44SJohn Forte #define	MENLO_FC_INVALID_LENGTH		0x02
1098fcf3ce44SJohn Forte #define	MENLO_FC_INVALID_ADDRESS	0x04
1099fcf3ce44SJohn Forte #define	MENLO_FC_INVALID_CONFIG_ID_TYPE	0x05
1100fcf3ce44SJohn Forte #define	MENLO_FC_INVALID_CONFIG_DATA	0x06
1101fcf3ce44SJohn Forte #define	MENLO_FC_INVALID_INFO_CONTEXT	0x07
1102fcf3ce44SJohn Forte 
11035dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_MGT {
1104fcf3ce44SJohn Forte 	union {
11055dfd244aSDaniel Beauregard 		EXT_MENLO_RESET			MenloReset;
11065dfd244aSDaniel Beauregard 		EXT_MENLO_GET_FW_VERSION	MenloGetFwVer;
11075dfd244aSDaniel Beauregard 		EXT_MENLO_UPDATE_FW		MenloUpdateFw;
11085dfd244aSDaniel Beauregard 		EXT_MENLO_MANAGE_INFO		MenloManageInfo;
1109fcf3ce44SJohn Forte 	} sp;
11105dfd244aSDaniel Beauregard } EXT_MENLO_MGT, *PEXT_MENLO_MGT;
11115dfd244aSDaniel Beauregard 
11125dfd244aSDaniel Beauregard /*
11135dfd244aSDaniel Beauregard  * vport enum definations
11145dfd244aSDaniel Beauregard  */
11155dfd244aSDaniel Beauregard typedef enum vport_options {
11165dfd244aSDaniel Beauregard 	EXT_VPO_LOGIN_RETRY_ENABLE = 0,
11175dfd244aSDaniel Beauregard 	EXT_VPO_PERSISTENT = 1,
11185dfd244aSDaniel Beauregard 	EXT_VPO_QOS_BW = 2,
11195dfd244aSDaniel Beauregard 	EXT_VPO_VFABRIC_ENABLE = 3
11205dfd244aSDaniel Beauregard } vport_options_t;
1121fcf3ce44SJohn Forte 
1122fcf3ce44SJohn Forte /*
1123fcf3ce44SJohn Forte  * vport struct definations
1124fcf3ce44SJohn Forte  */
11255dfd244aSDaniel Beauregard #define	MAX_DEV_PATH			256
11265dfd244aSDaniel Beauregard #define	MAX_VP_ID			256
11275dfd244aSDaniel Beauregard #define	EXT_OLD_VPORT_ID_CNT_SIZE	260
1128fcf3ce44SJohn Forte typedef struct _EXT_VPORT_ID_CNT {
11295dfd244aSDaniel Beauregard 	UINT32	VpCnt;
11305dfd244aSDaniel Beauregard 	UINT8	VpId[MAX_VP_ID];
11315dfd244aSDaniel Beauregard 	UINT8	vp_path[MAX_VP_ID][MAX_DEV_PATH];
11325dfd244aSDaniel Beauregard 	INT32	VpDrvInst[MAX_VP_ID];
1133fcf3ce44SJohn Forte } EXT_VPORT_ID_CNT, *PEXT_VPORT_ID_CNT;
1134fcf3ce44SJohn Forte 
11355dfd244aSDaniel Beauregard typedef struct _EXT_VPORT_PARAMS {
11365dfd244aSDaniel Beauregard 	UINT32		vp_id;
11375dfd244aSDaniel Beauregard 	vport_options_t	options;
11385dfd244aSDaniel Beauregard 	UINT8		wwpn[EXT_DEF_WWN_NAME_SIZE];
11395dfd244aSDaniel Beauregard 	UINT8		wwnn[EXT_DEF_WWN_NAME_SIZE];
11405dfd244aSDaniel Beauregard } EXT_VPORT_PARAMS, *PEXT_VPORT_PARAMS;
11415dfd244aSDaniel Beauregard 
1142fcf3ce44SJohn Forte typedef struct _EXT_VPORT_INFO {
1143fcf3ce44SJohn Forte 	UINT32		free;
1144fcf3ce44SJohn Forte 	UINT32		used;
1145fcf3ce44SJohn Forte 	UINT32		id;
1146fcf3ce44SJohn Forte 	UINT32		state;
1147fcf3ce44SJohn Forte 	UINT32		bound;
1148fcf3ce44SJohn Forte 	UINT8		wwnn[EXT_DEF_WWN_NAME_SIZE];
1149fcf3ce44SJohn Forte 	UINT8		wwpn[EXT_DEF_WWN_NAME_SIZE];
1150fcf3ce44SJohn Forte 	UINT8		reserved[220];
1151fcf3ce44SJohn Forte } EXT_VPORT_INFO, *PEXT_VPORT_INFO;
1152fcf3ce44SJohn Forte 
1153*4c3888b8SHans Rosenfeld typedef struct _EXT_BOARD_TEMP {
1154*4c3888b8SHans Rosenfeld 	UINT16	IntTemp;
1155*4c3888b8SHans Rosenfeld 	UINT16	FracTemp;
1156*4c3888b8SHans Rosenfeld 	UINT8	Reserved[60];
1157*4c3888b8SHans Rosenfeld } EXT_BOARD_TEMP, *PEXT_BOARD_TEMP;
1158*4c3888b8SHans Rosenfeld 
1159*4c3888b8SHans Rosenfeld /* ASIC TEMPERATURE defines */
1160*4c3888b8SHans Rosenfeld #define	EXT_DEF_ASIC_TEMP_COMMAND_COMPLETE	0x4000
1161*4c3888b8SHans Rosenfeld #define	EXT_DEF_ASIC_TEMP_HOST_INT_ERR		0x4002
1162*4c3888b8SHans Rosenfeld #define	EXT_DEF_ASIC_TEMP_COMMAND_ERR		0x4005
1163*4c3888b8SHans Rosenfeld #define	EXT_DEF_ASIC_TEMP_COMMAND_PARAM_ERR	0x4006
1164*4c3888b8SHans Rosenfeld 
1165*4c3888b8SHans Rosenfeld typedef struct _EXT_SERDES_REG {
1166*4c3888b8SHans Rosenfeld 	UINT16	addr;
1167*4c3888b8SHans Rosenfeld 	UINT16	val;
1168*4c3888b8SHans Rosenfeld } EXT_SERDES_REG, *PEXT_SERDES_REG;
1169*4c3888b8SHans Rosenfeld 
1170*4c3888b8SHans Rosenfeld typedef struct _EXT_VF_STATE {
1171*4c3888b8SHans Rosenfeld 	UINT32	NoOfVFConfigured;
1172*4c3888b8SHans Rosenfeld 	UINT32	NoOfVFActive;
1173*4c3888b8SHans Rosenfeld } EXT_VF_STATE, *PEXT_VF_STATE;
1174*4c3888b8SHans Rosenfeld 
1175*4c3888b8SHans Rosenfeld typedef struct _EXT_SERDES_REG_EX {
1176*4c3888b8SHans Rosenfeld 	UINT32	addr;
1177*4c3888b8SHans Rosenfeld 	UINT32	val;
1178*4c3888b8SHans Rosenfeld } EXT_SERDES_REG_EX, *PEXT_SERDES_REG_EX;
1179*4c3888b8SHans Rosenfeld 
1180eb82ff87SDaniel Beauregard #define	EXT_DEF_FCF_LIST_SIZE	4096	/* Bytes */
1181eb82ff87SDaniel Beauregard #define	FCF_INFO_RETURN_ALL	0
1182eb82ff87SDaniel Beauregard #define	FCF_INFO_RETURN_ONE	1
1183eb82ff87SDaniel Beauregard 
1184eb82ff87SDaniel Beauregard typedef	struct	_EXT_FCF_INFO {
1185eb82ff87SDaniel Beauregard 	UINT16	CntrlFlags;	/* 2 */
1186eb82ff87SDaniel Beauregard 	UINT16	FcfId;		/* 2 */
1187eb82ff87SDaniel Beauregard 	UINT16	VlanId;		/* 2 */
1188eb82ff87SDaniel Beauregard 	UINT16	FcfFlags;	/* 2 */
1189eb82ff87SDaniel Beauregard 	UINT16	FcfAdvertPri;	/* 2 */
1190eb82ff87SDaniel Beauregard 	UINT16	FcfMacAddr1;	/* 2 */
1191eb82ff87SDaniel Beauregard 	UINT16	FcfMacAddr2;	/* 2 */
1192eb82ff87SDaniel Beauregard 	UINT16	FcfMacAddr3;	/* 2 */
1193eb82ff87SDaniel Beauregard 	UINT16	FcfMapHi;	/* 2 */
1194eb82ff87SDaniel Beauregard 	UINT16	FcfMapLow;	/* 2 */
1195eb82ff87SDaniel Beauregard 	UINT8	SwitchName[8];	/* 8 */
1196eb82ff87SDaniel Beauregard 	UINT8	FabricName[8];	/* 8 */
1197eb82ff87SDaniel Beauregard 	UINT8	Reserved1[8];	/* 8 */
1198eb82ff87SDaniel Beauregard 	UINT16	CommFeatures;	/* 2 */
1199eb82ff87SDaniel Beauregard 	UINT16	Reserved2;	/* 2 */
1200eb82ff87SDaniel Beauregard 	UINT32	RATovVal;	/* 4 */
1201eb82ff87SDaniel Beauregard 	UINT32	EDTovVal;	/* 4 */
1202eb82ff87SDaniel Beauregard 	UINT8	Reserved3[8];	/* 8 */
1203eb82ff87SDaniel Beauregard } EXT_FCF_INFO, *PEXT_FCF_INFO;
1204eb82ff87SDaniel Beauregard 
1205eb82ff87SDaniel Beauregard typedef struct _EXT_FCF_LIST {
1206eb82ff87SDaniel Beauregard 	UINT32		Options;
1207eb82ff87SDaniel Beauregard 	UINT32		FcfIndex;
1208eb82ff87SDaniel Beauregard 	UINT32		BufSize;
1209eb82ff87SDaniel Beauregard 	EXT_FCF_INFO	pFcfInfo[1];
1210eb82ff87SDaniel Beauregard } EXT_FCF_LIST, *PEXT_FCF_LIST;
1211eb82ff87SDaniel Beauregard 
1212eb82ff87SDaniel Beauregard typedef	struct	_EXT_RESOURCE_CNTS {
1213eb82ff87SDaniel Beauregard 	UINT32	OrgTgtXchgCtrlCnt;	/* 4 */
1214eb82ff87SDaniel Beauregard 	UINT32	CurTgtXchgCtrlCnt;	/* 4 */
1215eb82ff87SDaniel Beauregard 	UINT32	CurXchgCtrlCnt;		/* 4 */
1216eb82ff87SDaniel Beauregard 	UINT32	OrgXchgCtrlCnt;		/* 4 */
1217eb82ff87SDaniel Beauregard 	UINT32	CurIocbBufCnt;		/* 4 */
1218eb82ff87SDaniel Beauregard 	UINT32	OrgIocbBufCnt;		/* 4 */
1219eb82ff87SDaniel Beauregard 	UINT32	NoOfSupVPs;		/* 4 */
1220eb82ff87SDaniel Beauregard 	UINT32	NoOfSupFCFs;		/* 4 */
1221eb82ff87SDaniel Beauregard } EXT_RESOURCE_CNTS, *PEXT_RESOURCE_CNTS;
1222eb82ff87SDaniel Beauregard 
1223*4c3888b8SHans Rosenfeld #define	FW_FCE_SIZE	(0x4000 * 4)	/* bytes - 16kb multiples */
1224*4c3888b8SHans Rosenfeld 
1225*4c3888b8SHans Rosenfeld typedef struct _EXT_FW_FCE_TRACE {
1226*4c3888b8SHans Rosenfeld 	UINT16	Registers[32];
1227*4c3888b8SHans Rosenfeld 	UINT8	TraceData[FW_FCE_SIZE];		/* Variable length */
1228*4c3888b8SHans Rosenfeld } EXT_FW_FCE_TRACE, *PEXT_FW_FCE_TRACE;
1229*4c3888b8SHans Rosenfeld 
1230*4c3888b8SHans Rosenfeld /* Request Buffer for ELS PT */
1231*4c3888b8SHans Rosenfeld #define	EXT_DEF_WWPN_VALID	1
1232*4c3888b8SHans Rosenfeld #define	EXT_DEF_WWNN_VALID	2
1233*4c3888b8SHans Rosenfeld #define	EXT_DEF_PID_VALID	4
1234*4c3888b8SHans Rosenfeld 
1235*4c3888b8SHans Rosenfeld typedef struct _EXT_ELS_PT_REQ {
1236*4c3888b8SHans Rosenfeld 	UINT16		ValidMask;
1237*4c3888b8SHans Rosenfeld 	UINT8		WWNN[EXT_DEF_WWN_NAME_SIZE];
1238*4c3888b8SHans Rosenfeld 	UINT8		WWPN[EXT_DEF_WWN_NAME_SIZE];
1239*4c3888b8SHans Rosenfeld 	UINT8		Id[EXT_DEF_PORTID_SIZE];
1240*4c3888b8SHans Rosenfeld 	UINT8		Reserved[10];
1241*4c3888b8SHans Rosenfeld } EXT_ELS_PT_REQ, *PEXT_ELS_PT_REQ;
1242*4c3888b8SHans Rosenfeld 
1243*4c3888b8SHans Rosenfeld typedef struct _EXT_FLASH_UPDATE_CAPS {
1244*4c3888b8SHans Rosenfeld 	UINT64		Capabilities;
1245*4c3888b8SHans Rosenfeld 	UINT32		OutageDuration;
1246*4c3888b8SHans Rosenfeld 	UINT8		Reserved[20];
1247*4c3888b8SHans Rosenfeld } EXT_FLASH_UPDATE_CAPS, *PEXT_FLASH_UPDATE_CAPS;
1248*4c3888b8SHans Rosenfeld 
1249*4c3888b8SHans Rosenfeld /* BB_CR Status */
1250*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_STATUS_DISABLED	0
1251*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_STATUS_ENABLED	1
1252*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_STATUS_UNKNOWN	2
1253*4c3888b8SHans Rosenfeld 
1254*4c3888b8SHans Rosenfeld /* BB_CR State */
1255*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_STATE_OFFLINE	0
1256*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_STATE_ONLINE	1
1257*4c3888b8SHans Rosenfeld 
1258*4c3888b8SHans Rosenfeld /* BB_CR Offline Reason Code */
1259*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_REASON_PORT_SPEED		1
1260*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_REASON_PEER_PORT		2
1261*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_REASON_SWITCH		3
1262*4c3888b8SHans Rosenfeld #define	EXT_DEF_BBCR_REASON_LOGIN_REJECT	4
1263*4c3888b8SHans Rosenfeld 
1264*4c3888b8SHans Rosenfeld typedef struct _EXT_BBCR_DATA {
1265*4c3888b8SHans Rosenfeld 	UINT8	Status;			/* 1 - enabled, 0 - Disabled */
1266*4c3888b8SHans Rosenfeld 	UINT8	State;			/* 1 - online, 0 - offline */
1267*4c3888b8SHans Rosenfeld 	UINT8	ConfiguredBBSCN;	/* 0-15 */
1268*4c3888b8SHans Rosenfeld 	UINT8	NegotiatedBBSCN;	/* 0-15 */
1269*4c3888b8SHans Rosenfeld 	UINT8	OfflineReasonCode;
1270*4c3888b8SHans Rosenfeld 	UINT16	mbx1;			/* Port State */
1271*4c3888b8SHans Rosenfeld 	UINT8	Reserved[9];
1272*4c3888b8SHans Rosenfeld } EXT_BBCR_DATA, *PEXT_BBCR_DATA;
1273*4c3888b8SHans Rosenfeld 
1274fcf3ce44SJohn Forte #ifdef	__cplusplus
1275fcf3ce44SJohn Forte }
1276fcf3ce44SJohn Forte #endif
1277fcf3ce44SJohn Forte 
1278fcf3ce44SJohn Forte #endif /* _EXIOCT_H */
1279