193c20f26SSukumar Swaminathan /*
293c20f26SSukumar Swaminathan  * CDDL HEADER START
393c20f26SSukumar Swaminathan  *
493c20f26SSukumar Swaminathan  * The contents of this file are subject to the terms of the
593c20f26SSukumar Swaminathan  * Common Development and Distribution License (the "License").
693c20f26SSukumar Swaminathan  * You may not use this file except in compliance with the License.
793c20f26SSukumar Swaminathan  *
893c20f26SSukumar Swaminathan  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
993c20f26SSukumar Swaminathan  * or http://www.opensolaris.org/os/licensing.
1093c20f26SSukumar Swaminathan  * See the License for the specific language governing permissions
1193c20f26SSukumar Swaminathan  * and limitations under the License.
1293c20f26SSukumar Swaminathan  *
1393c20f26SSukumar Swaminathan  * When distributing Covered Code, include this CDDL HEADER in each
1493c20f26SSukumar Swaminathan  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1593c20f26SSukumar Swaminathan  * If applicable, add the following below this CDDL HEADER, with the
1693c20f26SSukumar Swaminathan  * fields enclosed by brackets "[]" replaced with your own identifying
1793c20f26SSukumar Swaminathan  * information: Portions Copyright [yyyy] [name of copyright owner]
1893c20f26SSukumar Swaminathan  *
1993c20f26SSukumar Swaminathan  * CDDL HEADER END
2093c20f26SSukumar Swaminathan  */
2193c20f26SSukumar Swaminathan 
22eb82ff87SDaniel Beauregard /*
23*4c3888b8SHans Rosenfeld  * Copyright 2015 QLogic Corporation.  All rights reserved.
24eb82ff87SDaniel Beauregard  * Use is subject to license terms.
25eb82ff87SDaniel Beauregard  */
2693c20f26SSukumar Swaminathan 
2793c20f26SSukumar Swaminathan /*
2893c20f26SSukumar Swaminathan  * File Name: exioct.h
2993c20f26SSukumar Swaminathan  *
3093c20f26SSukumar Swaminathan  * San/Device Management Ioctl Header
3193c20f26SSukumar Swaminathan  * File is created to adhere to Solaris requirement using 8-space tabs.
3293c20f26SSukumar Swaminathan  *
3393c20f26SSukumar Swaminathan  * !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
3493c20f26SSukumar Swaminathan  * !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
3593c20f26SSukumar Swaminathan  * !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
3693c20f26SSukumar Swaminathan  *
3793c20f26SSukumar Swaminathan  * ***********************************************************************
3893c20f26SSukumar Swaminathan  * *                                                                    **
3993c20f26SSukumar Swaminathan  * *                            NOTICE                                  **
40*4c3888b8SHans Rosenfeld  * *            COPYRIGHT (C) 2000-2015 QLOGIC CORPORATION              **
4193c20f26SSukumar Swaminathan  * *                    ALL RIGHTS RESERVED                             **
4293c20f26SSukumar Swaminathan  * *                                                                    **
4393c20f26SSukumar Swaminathan  * ***********************************************************************
4493c20f26SSukumar Swaminathan  */
4593c20f26SSukumar Swaminathan 
4693c20f26SSukumar Swaminathan #ifndef	_EXIOCT_H
4793c20f26SSukumar Swaminathan #define	_EXIOCT_H
4893c20f26SSukumar Swaminathan 
4993c20f26SSukumar Swaminathan #ifdef	__cplusplus
5093c20f26SSukumar Swaminathan extern "C" {
5193c20f26SSukumar Swaminathan #endif
5293c20f26SSukumar Swaminathan 
5393c20f26SSukumar Swaminathan #include <exioctso.h>
5493c20f26SSukumar Swaminathan 
5593c20f26SSukumar Swaminathan /*
5693c20f26SSukumar Swaminathan  * NOTE: the following version defines must be updated each time the
5793c20f26SSukumar Swaminathan  *	 changes made may affect the backward compatibility of the
5893c20f26SSukumar Swaminathan  *	 input/output relations of the SDM IOCTL functions.
5993c20f26SSukumar Swaminathan  */
6093c20f26SSukumar Swaminathan #define	EXT_VERSION				5
6193c20f26SSukumar Swaminathan 
6293c20f26SSukumar Swaminathan /*
6393c20f26SSukumar Swaminathan  * OS independent General definitions
6493c20f26SSukumar Swaminathan  */
6593c20f26SSukumar Swaminathan #define	EXT_DEF_SIGNATURE_SIZE			8
6693c20f26SSukumar Swaminathan #define	EXT_DEF_WWN_NAME_SIZE			8
6793c20f26SSukumar Swaminathan #define	EXT_DEF_WWP_NAME_SIZE			8
6893c20f26SSukumar Swaminathan #define	EXT_DEF_SERIAL_NUM_SIZE			4
6993c20f26SSukumar Swaminathan #define	EXT_DEF_PORTID_SIZE			4
7093c20f26SSukumar Swaminathan #define	EXT_DEF_PORTID_SIZE_ACTUAL		3
7193c20f26SSukumar Swaminathan #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
7493c20f26SSukumar Swaminathan 
7593c20f26SSukumar Swaminathan #define	EXT_DEF_ADDR_MODE_32			1
7693c20f26SSukumar Swaminathan #define	EXT_DEF_ADDR_MODE_64			2
7793c20f26SSukumar Swaminathan 
7893c20f26SSukumar Swaminathan /*
7993c20f26SSukumar Swaminathan  * ***********************************************************************
8093c20f26SSukumar Swaminathan  * OS dependent General configuration defines
8193c20f26SSukumar Swaminathan  * ***********************************************************************
8293c20f26SSukumar Swaminathan  */
8393c20f26SSukumar Swaminathan #define	EXT_DEF_MAX_HBA			EXT_DEF_MAX_HBA_OS
8493c20f26SSukumar Swaminathan #define	EXT_DEF_MAX_BUS			EXT_DEF_MAX_BUS_OS
8593c20f26SSukumar Swaminathan #define	EXT_DEF_MAX_TARGET		EXT_DEF_MAX_TARGET_OS
8693c20f26SSukumar Swaminathan #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
8893c20f26SSukumar Swaminathan 
8993c20f26SSukumar Swaminathan /*
9093c20f26SSukumar Swaminathan  * ***********************************************************************
9193c20f26SSukumar Swaminathan  * Common header struct definitions for San/Device Mgmt
9293c20f26SSukumar Swaminathan  * ***********************************************************************
9393c20f26SSukumar Swaminathan  */
9493c20f26SSukumar Swaminathan typedef struct {
9593c20f26SSukumar Swaminathan 	UINT64	Signature;			/* 8 chars string */
9693c20f26SSukumar Swaminathan 	UINT64	RequestAdr;			/* 8  */
9793c20f26SSukumar Swaminathan 	UINT64	ResponseAdr;			/* 8  */
9893c20f26SSukumar Swaminathan 	UINT64	VendorSpecificData;		/* 8 chars string */
9993c20f26SSukumar Swaminathan 	UINT32	Status;				/* 4  */
10093c20f26SSukumar Swaminathan 	UINT32	DetailStatus;			/* 4  */
10193c20f26SSukumar Swaminathan 	UINT32	Reserved1;			/* 4  */
10293c20f26SSukumar Swaminathan 	UINT32	RequestLen;			/* 4  */
10393c20f26SSukumar Swaminathan 	UINT32	ResponseLen;			/* 4  */
10493c20f26SSukumar Swaminathan 	UINT16	AddrMode;			/* 2  */
10593c20f26SSukumar Swaminathan 	UINT16	Version;			/* 2  */
10693c20f26SSukumar Swaminathan 	UINT16	SubCode;			/* 2  */
10793c20f26SSukumar Swaminathan 	UINT16	Instance;			/* 2  */
10893c20f26SSukumar Swaminathan 	UINT16	HbaSelect;			/* 2  */
10993c20f26SSukumar Swaminathan 	UINT16	VendorSpecificStatus[11];	/* 22 */
11093c20f26SSukumar Swaminathan } EXT_IOCTL, *PEXT_IOCTL;			/* size = 84 / 0x54 */
11193c20f26SSukumar Swaminathan 
11293c20f26SSukumar Swaminathan typedef union _ext_signature {
11393c20f26SSukumar Swaminathan 	UINT64	Signature;
11493c20f26SSukumar Swaminathan 	char	bytes[EXT_DEF_SIGNATURE_SIZE];
11593c20f26SSukumar Swaminathan } ext_sig_t;
11693c20f26SSukumar Swaminathan 
11793c20f26SSukumar Swaminathan /*
11893c20f26SSukumar Swaminathan  * Addressing mode used by the user application
11993c20f26SSukumar Swaminathan  */
12093c20f26SSukumar Swaminathan #define	EXT_ADDR_MODE	EXT_ADDR_MODE_OS
12193c20f26SSukumar Swaminathan 
12293c20f26SSukumar Swaminathan /*
12393c20f26SSukumar Swaminathan  * Status.  These macros are being used for setting Status field in
12493c20f26SSukumar Swaminathan  * EXT_IOCTL structure.
12593c20f26SSukumar Swaminathan  */
12693c20f26SSukumar Swaminathan #define	EXT_STATUS_OK			0
12793c20f26SSukumar Swaminathan #define	EXT_STATUS_ERR			1
12893c20f26SSukumar Swaminathan #define	EXT_STATUS_BUSY			2
12993c20f26SSukumar Swaminathan #define	EXT_STATUS_PENDING		3
13093c20f26SSukumar Swaminathan #define	EXT_STATUS_SUSPENDED		4
13193c20f26SSukumar Swaminathan #define	EXT_STATUS_RETRY_PENDING	5
13293c20f26SSukumar Swaminathan #define	EXT_STATUS_INVALID_PARAM	6
13393c20f26SSukumar Swaminathan #define	EXT_STATUS_DATA_OVERRUN		7
13493c20f26SSukumar Swaminathan #define	EXT_STATUS_DATA_UNDERRUN	8
13593c20f26SSukumar Swaminathan #define	EXT_STATUS_DEV_NOT_FOUND	9
13693c20f26SSukumar Swaminathan #define	EXT_STATUS_COPY_ERR		10
13793c20f26SSukumar Swaminathan #define	EXT_STATUS_MAILBOX		11
13893c20f26SSukumar Swaminathan #define	EXT_STATUS_UNSUPPORTED_SUBCODE	12
13993c20f26SSukumar Swaminathan #define	EXT_STATUS_UNSUPPORTED_VERSION	13
14093c20f26SSukumar Swaminathan #define	EXT_STATUS_MS_NO_RESPONSE	14
14193c20f26SSukumar Swaminathan #define	EXT_STATUS_SCSI_STATUS		15
14293c20f26SSukumar Swaminathan #define	EXT_STATUS_BUFFER_TOO_SMALL	16
14393c20f26SSukumar Swaminathan #define	EXT_STATUS_NO_MEMORY		17
14493c20f26SSukumar Swaminathan #define	EXT_STATUS_UNKNOWN		18
14593c20f26SSukumar Swaminathan #define	EXT_STATUS_UNKNOWN_DSTATUS	19
14693c20f26SSukumar Swaminathan #define	EXT_STATUS_INVALID_REQUEST	20
14793c20f26SSukumar Swaminathan #define	EXT_STATUS_DEVICE_NOT_READY	21
14893c20f26SSukumar Swaminathan #define	EXT_STATUS_DEVICE_OFFLINE	22
14993c20f26SSukumar Swaminathan #define	EXT_STATUS_HBA_NOT_READY	23
15093c20f26SSukumar Swaminathan #define	EXT_STATUS_HBA_QUEUE_FULL	24
15193c20f26SSukumar Swaminathan #define	EXT_STATUS_INVALID_VPINDEX	25
15293c20f26SSukumar Swaminathan 
15393c20f26SSukumar Swaminathan /*
15493c20f26SSukumar Swaminathan  * Detail Status contains the SCSI bus status codes.
15593c20f26SSukumar Swaminathan  */
15693c20f26SSukumar Swaminathan 
15793c20f26SSukumar Swaminathan #define	EXT_DSTATUS_GOOD			0x00
15893c20f26SSukumar Swaminathan #define	EXT_DSTATUS_CHECK_CONDITION		0x02
15993c20f26SSukumar Swaminathan #define	EXT_DSTATUS_CONDITION_MET		0x04
16093c20f26SSukumar Swaminathan #define	EXT_DSTATUS_BUSY			0x08
16193c20f26SSukumar Swaminathan #define	EXT_DSTATUS_INTERMEDIATE		0x10
16293c20f26SSukumar Swaminathan #define	EXT_DSTATUS_INTERMEDIATE_COND_MET	0x14
16393c20f26SSukumar Swaminathan #define	EXT_DSTATUS_RESERVATION_CONFLICT	0x18
16493c20f26SSukumar Swaminathan #define	EXT_DSTATUS_COMMAND_TERMINATED		0x22
16593c20f26SSukumar Swaminathan #define	EXT_DSTATUS_QUEUE_FULL			0x28
16693c20f26SSukumar Swaminathan 
16793c20f26SSukumar Swaminathan /*
16893c20f26SSukumar Swaminathan  * Detail Status contains the needed Response buffer space(bytes)
16993c20f26SSukumar Swaminathan  * when Status = EXT_STATUS_BUFFER_TOO_SMALL
17093c20f26SSukumar Swaminathan  */
17193c20f26SSukumar Swaminathan 
17293c20f26SSukumar Swaminathan 
17393c20f26SSukumar Swaminathan /*
17493c20f26SSukumar Swaminathan  * Detail Status contains one of the following codes
17593c20f26SSukumar Swaminathan  * when Status = EXT_STATUS_INVALID_PARAM or
17693c20f26SSukumar Swaminathan  *             = EXT_STATUS_DEV_NOT_FOUND
17793c20f26SSukumar Swaminathan  */
17893c20f26SSukumar Swaminathan #define	EXT_DSTATUS_NOADNL_INFO			0x00
17993c20f26SSukumar Swaminathan #define	EXT_DSTATUS_HBA_INST			0x01
18093c20f26SSukumar Swaminathan #define	EXT_DSTATUS_TARGET			0x02
18193c20f26SSukumar Swaminathan #define	EXT_DSTATUS_LUN				0x03
18293c20f26SSukumar Swaminathan #define	EXT_DSTATUS_REQUEST_LEN			0x04
18393c20f26SSukumar Swaminathan #define	EXT_DSTATUS_PATH_INDEX			0x05
18493c20f26SSukumar Swaminathan 
18593c20f26SSukumar Swaminathan /*
18693c20f26SSukumar Swaminathan  * Currently supported DeviceControl / ioctl command codes
18793c20f26SSukumar Swaminathan  */
18893c20f26SSukumar Swaminathan #define	EXT_CC_QUERY			EXT_CC_QUERY_OS
18993c20f26SSukumar Swaminathan #define	EXT_CC_SEND_FCCT_PASSTHRU	EXT_CC_SEND_FCCT_PASSTHRU_OS
19093c20f26SSukumar Swaminathan #define	EXT_CC_REG_AEN			EXT_CC_REG_AEN_OS
19193c20f26SSukumar Swaminathan #define	EXT_CC_GET_AEN			EXT_CC_GET_AEN_OS
19293c20f26SSukumar Swaminathan #define	EXT_CC_SEND_ELS_RNID		EXT_CC_SEND_ELS_RNID_OS
19393c20f26SSukumar Swaminathan #define	EXT_CC_SEND_SCSI_PASSTHRU	EXT_CC_SCSI_PASSTHRU_OS
19493c20f26SSukumar Swaminathan #define	EXT_CC_READ_HOST_PARAMS		EXT_CC_READ_HOST_PARAMS_OS
19593c20f26SSukumar Swaminathan #define	EXT_CC_READ_RISC_PARAMS		EXT_CC_READ_RISC_PARAMS_OS
19693c20f26SSukumar Swaminathan #define	EXT_CC_UPDATE_HOST_PARAMS	EXT_CC_UPDATE_HOST_PARAMS_OS
19793c20f26SSukumar Swaminathan #define	EXT_CC_UPDATE_RISC_PARAMS	EXT_CC_UPDATE_RISC_PARAMS_OS
19893c20f26SSukumar Swaminathan #define	EXT_CC_READ_NVRAM		EXT_CC_READ_NVRAM_OS
19993c20f26SSukumar Swaminathan #define	EXT_CC_UPDATE_NVRAM		EXT_CC_UPDATE_NVRAM_OS
20093c20f26SSukumar Swaminathan #define	EXT_CC_HOST_IDX			EXT_CC_HOST_IDX_OS
20193c20f26SSukumar Swaminathan #define	EXT_CC_LOOPBACK			EXT_CC_LOOPBACK_OS
20293c20f26SSukumar Swaminathan #define	EXT_CC_READ_OPTION_ROM		EXT_CC_READ_OPTION_ROM_OS
20393c20f26SSukumar Swaminathan #define	EXT_CC_READ_OPTION_ROM_EX	EXT_CC_READ_OPTION_ROM_EX_OS
20493c20f26SSukumar Swaminathan #define	EXT_CC_UPDATE_OPTION_ROM	EXT_CC_UPDATE_OPTION_ROM_OS
20593c20f26SSukumar Swaminathan #define	EXT_CC_UPDATE_OPTION_ROM_EX	EXT_CC_UPDATE_OPTION_ROM_EX_OS
20693c20f26SSukumar Swaminathan #define	EXT_CC_GET_VPD			EXT_CC_GET_VPD_OS
20793c20f26SSukumar Swaminathan #define	EXT_CC_SET_VPD			EXT_CC_SET_VPD_OS
20893c20f26SSukumar Swaminathan #define	EXT_CC_GET_FCACHE		EXT_CC_GET_FCACHE_OS
20993c20f26SSukumar Swaminathan #define	EXT_CC_GET_FCACHE_EX		EXT_CC_GET_FCACHE_EX_OS
21093c20f26SSukumar Swaminathan #define	EXT_CC_HOST_DRVNAME		EXT_CC_HOST_DRVNAME_OS
21193c20f26SSukumar Swaminathan #define	EXT_CC_GET_SFP_DATA		EXT_CC_GET_SFP_DATA_OS
21293c20f26SSukumar Swaminathan #define	EXT_CC_WWPN_TO_SCSIADDR		EXT_CC_WWPN_TO_SCSIADDR_OS
21393c20f26SSukumar Swaminathan #define	EXT_CC_PORT_PARAM		EXT_CC_PORT_PARAM_OS
21493c20f26SSukumar Swaminathan #define	EXT_CC_GET_PCI_DATA		EXT_CC_GET_PCI_DATA_OS
21593c20f26SSukumar Swaminathan #define	EXT_CC_GET_FWEXTTRACE		EXT_CC_GET_FWEXTTRACE_OS
21693c20f26SSukumar Swaminathan #define	EXT_CC_GET_FWFCETRACE		EXT_CC_GET_FWFCETRACE_OS
21793c20f26SSukumar Swaminathan #define	EXT_CC_GET_VP_CNT_ID		EXT_CC_GET_VP_CNT_ID_OS
21893c20f26SSukumar Swaminathan #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
22993c20f26SSukumar Swaminathan /*
23093c20f26SSukumar Swaminathan  * HBA port operations
23193c20f26SSukumar Swaminathan  */
23293c20f26SSukumar Swaminathan #define	EXT_CC_GET_DATA		EXT_CC_GET_DATA_OS
23393c20f26SSukumar Swaminathan #define	EXT_CC_SET_DATA		EXT_CC_SET_DATA_OS
23493c20f26SSukumar Swaminathan 
23593c20f26SSukumar Swaminathan /*
23693c20f26SSukumar Swaminathan  * The following DeviceControl / ioctl command codes currently are not
23793c20f26SSukumar Swaminathan  * supported.
23893c20f26SSukumar Swaminathan  */
23993c20f26SSukumar Swaminathan #define	EXT_CC_SEND_ELS_RTIN	EXT_CC_SEND_ELS_RTIN_OS
24093c20f26SSukumar Swaminathan 
24193c20f26SSukumar Swaminathan 
24293c20f26SSukumar Swaminathan /*
24393c20f26SSukumar Swaminathan  * ***********************************************************************
24493c20f26SSukumar Swaminathan  * EXT_IOCTL SubCode definition.
24593c20f26SSukumar Swaminathan  * These macros are being used for setting SubCode field in EXT_IOCTL
24693c20f26SSukumar Swaminathan  * structure.
24793c20f26SSukumar Swaminathan  * ***********************************************************************
24893c20f26SSukumar Swaminathan  */
24993c20f26SSukumar Swaminathan 
25093c20f26SSukumar Swaminathan /*
25193c20f26SSukumar Swaminathan  * Query.
25293c20f26SSukumar Swaminathan  * Uses with EXT_QUERY as the ioctl code.
25393c20f26SSukumar Swaminathan  */
25493c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_HBA_NODE		1
25593c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_HBA_PORT		2
25693c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_DISC_PORT		3
25793c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_DISC_TGT		4
25893c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_DISC_LUN		5	/* Currently Not Supported */
25993c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_DRIVER		6
26093c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_FW			7
26193c20f26SSukumar Swaminathan #define	EXT_SC_QUERY_CHIP		8
2624f8b8adcSDaniel Beauregard #define	EXT_SC_QUERY_CNA_PORT		9
263eb82ff87SDaniel Beauregard #define	EXT_SC_QUERY_ADAPTER_VERSIONS	10
26493c20f26SSukumar Swaminathan 
26593c20f26SSukumar Swaminathan /*
26693c20f26SSukumar Swaminathan  * Get.
26793c20f26SSukumar Swaminathan  * Uses with EXT_GET_DATA as the ioctl code
26893c20f26SSukumar Swaminathan  */
26993c20f26SSukumar Swaminathan /* 1 - 99 Common */
27093c20f26SSukumar Swaminathan #define	EXT_SC_GET_SCSI_ADDR		1	/* Currently Not Supported */
27193c20f26SSukumar Swaminathan #define	EXT_SC_GET_ERR_DETECTIONS	2	/* Currently Not Supported */
27293c20f26SSukumar Swaminathan #define	EXT_SC_GET_STATISTICS		3
27393c20f26SSukumar Swaminathan #define	EXT_SC_GET_BUS_MODE		4	/* Currently Not Supported */
27493c20f26SSukumar Swaminathan #define	EXT_SC_GET_DR_DUMP_BUF		5	/* Currently Not Supported */
27593c20f26SSukumar Swaminathan #define	EXT_SC_GET_RISC_CODE		6
27693c20f26SSukumar Swaminathan #define	EXT_SC_GET_FLASH_RAM		7
27793c20f26SSukumar Swaminathan #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
28293c20f26SSukumar Swaminathan 
28393c20f26SSukumar Swaminathan /* 100 - 199 FC_INTF_TYPE */
28493c20f26SSukumar Swaminathan #define	EXT_SC_GET_LINK_STATUS		101	/* Currently Not Supported */
28593c20f26SSukumar Swaminathan #define	EXT_SC_GET_LOOP_ID		102	/* Currently Not Supported */
28693c20f26SSukumar Swaminathan #define	EXT_SC_GET_LUN_BITMASK		103
28793c20f26SSukumar Swaminathan #define	EXT_SC_GET_PORT_DATABASE	104	/* Currently Not Supported */
28893c20f26SSukumar Swaminathan #define	EXT_SC_GET_PORT_DATABASE_MEM	105	/* Currently Not Supported */
28993c20f26SSukumar Swaminathan #define	EXT_SC_GET_PORT_SUMMARY		106
29093c20f26SSukumar Swaminathan #define	EXT_SC_GET_POSITION_MAP		107
29193c20f26SSukumar Swaminathan #define	EXT_SC_GET_RETRY_CNT		108	/* Currently Not Supported */
29293c20f26SSukumar Swaminathan #define	EXT_SC_GET_RNID			109
29393c20f26SSukumar Swaminathan #define	EXT_SC_GET_RTIN			110	/* Currently Not Supported */
29493c20f26SSukumar Swaminathan #define	EXT_SC_GET_FC_LUN_BITMASK	111
29593c20f26SSukumar Swaminathan #define	EXT_SC_GET_FC_STATISTICS	112
29693c20f26SSukumar Swaminathan #define	EXT_SC_GET_FC4_STATISTICS	113
29793c20f26SSukumar Swaminathan #define	EXT_SC_GET_TARGET_ID		114
29893c20f26SSukumar Swaminathan 
29993c20f26SSukumar Swaminathan 
30093c20f26SSukumar Swaminathan /* 200 - 299 SCSI_INTF_TYPE */
30193c20f26SSukumar Swaminathan #define	EXT_SC_GET_SEL_TIMEOUT		201	/* Currently Not Supported */
30293c20f26SSukumar Swaminathan 
3034f8b8adcSDaniel Beauregard #define	EXT_DEF_DCBX_PARAM_BUF_SIZE	4096	/* Bytes */
30493c20f26SSukumar Swaminathan 
30593c20f26SSukumar Swaminathan /*
30693c20f26SSukumar Swaminathan  * Set.
30793c20f26SSukumar Swaminathan  * Uses with EXT_SET_DATA as the ioctl code
30893c20f26SSukumar Swaminathan  */
30993c20f26SSukumar Swaminathan /* 1 - 99 Common */
31093c20f26SSukumar Swaminathan #define	EXT_SC_RST_STATISTICS		3
31193c20f26SSukumar Swaminathan #define	EXT_SC_SET_BUS_MODE		4	/* Currently Not Supported */
31293c20f26SSukumar Swaminathan #define	EXT_SC_SET_DR_DUMP_BUF		5	/* Currently Not Supported */
31393c20f26SSukumar Swaminathan #define	EXT_SC_SET_RISC_CODE		6
31493c20f26SSukumar Swaminathan #define	EXT_SC_SET_FLASH_RAM		7
31593c20f26SSukumar Swaminathan #define	EXT_SC_SET_BEACON_STATE		8
31693c20f26SSukumar Swaminathan 
31793c20f26SSukumar Swaminathan /* special types (non snia) */
31893c20f26SSukumar Swaminathan #define	EXT_SC_SET_PARMS		99	/* dpb */
31993c20f26SSukumar Swaminathan 
32093c20f26SSukumar Swaminathan /* 100 - 199 FC_INTF_TYPE */
32193c20f26SSukumar Swaminathan #define	EXT_SC_SET_LUN_BITMASK		103
32293c20f26SSukumar Swaminathan #define	EXT_SC_SET_RETRY_CNT		108	/* Currently Not Supported */
32393c20f26SSukumar Swaminathan #define	EXT_SC_SET_RNID			109
32493c20f26SSukumar Swaminathan #define	EXT_SC_SET_RTIN			110	/* Currently Not Supported */
32593c20f26SSukumar Swaminathan #define	EXT_SC_SET_FC_LUN_BITMASK	111
32693c20f26SSukumar Swaminathan #define	EXT_SC_ADD_TARGET_DEVICE	112
32793c20f26SSukumar Swaminathan #define	EXT_SC_SWAP_TARGET_DEVICE	113
32893c20f26SSukumar Swaminathan 
32993c20f26SSukumar Swaminathan /* 200 - 299 SCSI_INTF_TYPE */
33093c20f26SSukumar Swaminathan #define	EXT_SC_SET_SEL_TIMEOUT		201	/* Currently Not Supported */
33193c20f26SSukumar Swaminathan 
33293c20f26SSukumar Swaminathan /* SCSI passthrough */
33393c20f26SSukumar Swaminathan #define	EXT_SC_SEND_SCSI_PASSTHRU	0
33493c20f26SSukumar Swaminathan #define	EXT_SC_SEND_FC_SCSI_PASSTHRU	1
33593c20f26SSukumar Swaminathan 
33693c20f26SSukumar Swaminathan /* NVRAM */
33793c20f26SSukumar Swaminathan #define	EXT_SC_NVRAM_HARDWARE		0	/* Save */
33893c20f26SSukumar Swaminathan #define	EXT_SC_NVRAM_DRIVER		1	/* Driver (Apply) */
33993c20f26SSukumar Swaminathan #define	EXT_SC_NVRAM_ALL		2	/* NVRAM/Driver (Save+Apply) */
34093c20f26SSukumar Swaminathan 
34193c20f26SSukumar Swaminathan /*
34293c20f26SSukumar Swaminathan  * Vport functions
34393c20f26SSukumar Swaminathan  * Used with EXT_CC_VPORT_CMD as the ioctl code.
34493c20f26SSukumar Swaminathan  */
34593c20f26SSukumar Swaminathan #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
36393c20f26SSukumar Swaminathan 
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 
39093c20f26SSukumar Swaminathan /* Read */
39193c20f26SSukumar Swaminathan 
39293c20f26SSukumar Swaminathan /* Write */
39393c20f26SSukumar Swaminathan 
39493c20f26SSukumar Swaminathan /* Reset */
39593c20f26SSukumar Swaminathan 
39693c20f26SSukumar Swaminathan /* Request struct */
39793c20f26SSukumar Swaminathan 
39893c20f26SSukumar Swaminathan 
39993c20f26SSukumar Swaminathan /*
40093c20f26SSukumar Swaminathan  * Response struct
40193c20f26SSukumar Swaminathan  */
40293c20f26SSukumar Swaminathan typedef struct _EXT_HBA_NODE {
40393c20f26SSukumar Swaminathan 	UINT32	DriverAttr;				/* 4 */
40493c20f26SSukumar Swaminathan 	UINT32	FWAttr;					/* 4 */
40593c20f26SSukumar Swaminathan 	UINT16	PortCount;				/* 2; 1 */
40693c20f26SSukumar Swaminathan 	UINT16	InterfaceType;				/* 2; FC/SCSI */
40793c20f26SSukumar Swaminathan 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];		/* 8 */
40893c20f26SSukumar Swaminathan 	UINT8	Manufacturer[EXT_DEF_MAX_STR_SIZE];	/* 128; "QLOGIC" */
40993c20f26SSukumar Swaminathan 	UINT8	Model[EXT_DEF_MAX_STR_SIZE];		/* 128; "QLA2200" */
41093c20f26SSukumar Swaminathan 	UINT8	SerialNum[EXT_DEF_SERIAL_NUM_SIZE];	/* 4;  123  */
41193c20f26SSukumar Swaminathan 	UINT8	DriverVersion[EXT_DEF_MAX_STR_SIZE];	/* 128; "7.4.3" */
41293c20f26SSukumar Swaminathan 	UINT8	FWVersion[EXT_DEF_MAX_STR_SIZE];	/* 128; "2.1.6" */
41393c20f26SSukumar Swaminathan 	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 */
41793c20f26SSukumar Swaminathan } EXT_HBA_NODE, *PEXT_HBA_NODE;				/* 696 */
41893c20f26SSukumar Swaminathan 
41993c20f26SSukumar Swaminathan /* HBA node query interface type */
42093c20f26SSukumar Swaminathan #define	EXT_DEF_FC_INTF_TYPE			1
42193c20f26SSukumar Swaminathan #define	EXT_DEF_SCSI_INTF_TYPE			2
42293c20f26SSukumar Swaminathan #define	EXT_DEF_VIRTUAL_FC_INTF_TYPE		3
42393c20f26SSukumar Swaminathan 
42493c20f26SSukumar Swaminathan typedef struct _EXT_HBA_PORT {
42593c20f26SSukumar Swaminathan 	UINT64	Target;				/* 8 */
42693c20f26SSukumar Swaminathan 	UINT32	PortSupportedSpeed;		/* 4 */
42793c20f26SSukumar Swaminathan 	UINT32	PortSpeed;			/* 4 */
42893c20f26SSukumar Swaminathan 	UINT16	Type;				/* 2; Port Type */
42993c20f26SSukumar Swaminathan 	UINT16	State;				/* 2; Port State */
43093c20f26SSukumar Swaminathan 	UINT16	Mode;				/* 2 */
43193c20f26SSukumar Swaminathan 	UINT16	DiscPortCount;			/* 2 */
43293c20f26SSukumar Swaminathan 	UINT16	DiscPortNameType;		/* 2; USE_NODE_NAME or */
43393c20f26SSukumar Swaminathan 						/* USE_PORT_NAME */
43493c20f26SSukumar Swaminathan 	UINT16	DiscTargetCount;		/* 2 */
43593c20f26SSukumar Swaminathan 	UINT16	Bus;				/* 2 */
43693c20f26SSukumar Swaminathan 	UINT16	Lun;				/* 2 */
43793c20f26SSukumar Swaminathan 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
43893c20f26SSukumar Swaminathan 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes valid Port Id. */
43993c20f26SSukumar Swaminathan 	UINT8	PortSupportedFC4Types;		/* 1 */
44093c20f26SSukumar Swaminathan 	UINT8	PortActiveFC4Types;		/* 1 */
44193c20f26SSukumar Swaminathan 	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 */
44893c20f26SSukumar Swaminathan 
44993c20f26SSukumar Swaminathan /* FC-4 Instrumentation */
45093c20f26SSukumar Swaminathan typedef struct _EXT_HBA_FC4Statistics {
45193c20f26SSukumar Swaminathan 	INT64	InputRequests;			/* 8  */
45293c20f26SSukumar Swaminathan 	INT64	OutputRequests;			/* 8  */
45393c20f26SSukumar Swaminathan 	INT64	ControlRequests;		/* 8  */
45493c20f26SSukumar Swaminathan 	INT64	InputMegabytes;			/* 8  */
45593c20f26SSukumar Swaminathan 	INT64	OutputMegabytes;		/* 8  */
45693c20f26SSukumar Swaminathan 	UINT64	Reserved[6];			/* 48 */
45793c20f26SSukumar Swaminathan } EXT_HBA_FC4STATISTICS, *PEXT_HBA_FC4STATISTICS;	/* 88 */
45893c20f26SSukumar Swaminathan 
45993c20f26SSukumar Swaminathan typedef struct _EXT_LOOPBACK_REQ {
46093c20f26SSukumar Swaminathan 	UINT32	TransferCount;
46193c20f26SSukumar Swaminathan 	UINT32	IterationCount;
46293c20f26SSukumar Swaminathan 	UINT32	BufferAddress;
46393c20f26SSukumar Swaminathan 	UINT32	BufferLength;
46493c20f26SSukumar Swaminathan 	UINT16	Options;
46593c20f26SSukumar Swaminathan 	UINT8	Reserved[18];
46693c20f26SSukumar Swaminathan } EXT_LOOPBACK_REQ, *PEXT_LOOPBACK_REQ;
46793c20f26SSukumar Swaminathan 
46893c20f26SSukumar Swaminathan typedef struct _EXT_LOOPBACK_RSP {
46993c20f26SSukumar Swaminathan 	UINT64	BufferAddress;
47093c20f26SSukumar Swaminathan 	UINT32	BufferLength;
47193c20f26SSukumar Swaminathan 	UINT32	IterationCountLastError;
47293c20f26SSukumar Swaminathan 	UINT16	CompletionStatus;
47393c20f26SSukumar Swaminathan 	UINT16	CrcErrorCount;
47493c20f26SSukumar Swaminathan 	UINT16	DisparityErrorCount;
47593c20f26SSukumar Swaminathan 	UINT16	FrameLengthErrorCount;
47693c20f26SSukumar Swaminathan 	UINT8	CommandSent;
47793c20f26SSukumar Swaminathan 	UINT8	Reserved[15];
47893c20f26SSukumar Swaminathan } EXT_LOOPBACK_RSP, *PEXT_LOOPBACK_RSP;
47993c20f26SSukumar Swaminathan 
48093c20f26SSukumar Swaminathan /* used with loopback response CommandSent */
48193c20f26SSukumar Swaminathan #define	INT_DEF_LB_LOOPBACK_CMD		0
48293c20f26SSukumar Swaminathan #define	INT_DEF_LB_ECHO_CMD		1
48393c20f26SSukumar Swaminathan 
48493c20f26SSukumar Swaminathan /* definition for interpreting CompletionStatus values */
48593c20f26SSukumar Swaminathan #define	EXT_DEF_LB_COMPLETE	0x4000
48693c20f26SSukumar Swaminathan #define	EXT_DEF_LB_PARAM_ERR	0x4006
48793c20f26SSukumar Swaminathan #define	EXT_DEF_LB_LOOP_DOWN	0x400b
48893c20f26SSukumar Swaminathan #define	EXT_DEF_LB_CMD_ERROR	0x400c
48993c20f26SSukumar Swaminathan 
49093c20f26SSukumar Swaminathan /* port type */
49193c20f26SSukumar Swaminathan #define	EXT_DEF_INITIATOR_DEV	0x1
49293c20f26SSukumar Swaminathan #define	EXT_DEF_TARGET_DEV	0x2
49393c20f26SSukumar Swaminathan #define	EXT_DEF_TAPE_DEV	0x4
49493c20f26SSukumar Swaminathan #define	EXT_DEF_FABRIC_DEV	0x8
49593c20f26SSukumar Swaminathan 
49693c20f26SSukumar Swaminathan 
49793c20f26SSukumar Swaminathan /* HBA port state */
49893c20f26SSukumar Swaminathan #define	EXT_DEF_HBA_OK		0
49993c20f26SSukumar Swaminathan #define	EXT_DEF_HBA_SUSPENDED	1
50093c20f26SSukumar Swaminathan #define	EXT_DEF_HBA_LOOP_DOWN	2
50193c20f26SSukumar Swaminathan 
50293c20f26SSukumar Swaminathan /* Connection mode */
50393c20f26SSukumar Swaminathan #define	EXT_DEF_UNKNOWN_MODE	0
50493c20f26SSukumar Swaminathan #define	EXT_DEF_P2P_MODE	1
50593c20f26SSukumar Swaminathan #define	EXT_DEF_LOOP_MODE	2
50693c20f26SSukumar Swaminathan #define	EXT_DEF_FL_MODE		3
50793c20f26SSukumar Swaminathan #define	EXT_DEF_N_MODE		4
50893c20f26SSukumar Swaminathan 
50993c20f26SSukumar Swaminathan /* Valid name type for Disc. port/target */
51093c20f26SSukumar Swaminathan #define	EXT_DEF_USE_NODE_NAME	1
51193c20f26SSukumar Swaminathan #define	EXT_DEF_USE_PORT_NAME	2
51293c20f26SSukumar Swaminathan 
51393c20f26SSukumar Swaminathan /* FC4 type values */
51493c20f26SSukumar Swaminathan #define	EXT_DEF_FC4_TYPE_SCSI	0x1
51593c20f26SSukumar Swaminathan #define	EXT_DEF_FC4_TYPE_IP	0x2
51693c20f26SSukumar Swaminathan #define	EXT_DEF_FC4_TYPE_SCTP	0x4
51793c20f26SSukumar Swaminathan #define	EXT_DEF_FC4_TYPE_VI	0x8
51893c20f26SSukumar Swaminathan 
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 
53593c20f26SSukumar Swaminathan /* Port Speed values */
53693c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_UNKNOWN	0x0
53793c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_1GBIT		0x1
53893c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_2GBIT		0x2
53993c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_4GBIT		0x4
54093c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_8GBIT		0x8
54193c20f26SSukumar Swaminathan #define	EXT_DEF_PORTSPEED_10GBIT	0x10
542*4c3888b8SHans Rosenfeld #define	EXT_DEF_PORTSPEED_16GBIT	0x20
543*4c3888b8SHans Rosenfeld #define	EXT_DEF_PORTSPEED_32GBIT	0x40
54493c20f26SSukumar Swaminathan #define	EXT_PORTSPEED_NOT_NEGOTIATED	(1<<15)	/* Speed not established */
54593c20f26SSukumar Swaminathan 
54693c20f26SSukumar Swaminathan typedef struct _EXT_DISC_PORT {
54793c20f26SSukumar Swaminathan 	UINT64	TargetId;		/* 8 */
54893c20f26SSukumar Swaminathan 	UINT16	Type;			/* 2; Port Type */
54993c20f26SSukumar Swaminathan 	UINT16	Status;			/* 2; Port Status */
55093c20f26SSukumar Swaminathan 	UINT16	Bus;			/* 2; n/a for Solaris */
55193c20f26SSukumar Swaminathan 	UINT16	LoopID;			/* 2; Loop ID */
55293c20f26SSukumar Swaminathan 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
55393c20f26SSukumar Swaminathan 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
55493c20f26SSukumar Swaminathan 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes used big endian */
55593c20f26SSukumar Swaminathan 	UINT8	Local;			/* 1; Local or Remote */
55693c20f26SSukumar Swaminathan 	UINT8	Reserved[27];		/* 27 */
55793c20f26SSukumar Swaminathan } EXT_DISC_PORT, *PEXT_DISC_PORT;	/* 64 */
55893c20f26SSukumar Swaminathan 
55993c20f26SSukumar Swaminathan typedef struct _EXT_DISC_TARGET {
56093c20f26SSukumar Swaminathan 	UINT64	TargetId;		/* 8 */
56193c20f26SSukumar Swaminathan 	UINT16	Type;			/* 2; Target Type */
56293c20f26SSukumar Swaminathan 	UINT16	Status;			/* 2; Target Status */
56393c20f26SSukumar Swaminathan 	UINT16	Bus;			/* 2; n/a for Solaris */
56493c20f26SSukumar Swaminathan 	UINT16	LunCount;		/* 2; n/a for nt */
56593c20f26SSukumar Swaminathan 	UINT16	LoopID;			/* 2; Loop ID */
56693c20f26SSukumar Swaminathan 	UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
56793c20f26SSukumar Swaminathan 	UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
56893c20f26SSukumar Swaminathan 	UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4; 3 bytes used big endian */
56993c20f26SSukumar Swaminathan 	UINT8	Local;			/* 1; Local or Remote */
57093c20f26SSukumar Swaminathan 	UINT8	Reserved[25];		/* 25 */
57193c20f26SSukumar Swaminathan } EXT_DISC_TARGET, *PEXT_DISC_TARGET;	/* 64 */
57293c20f26SSukumar Swaminathan 
57393c20f26SSukumar Swaminathan /* The following command is not supported */
57493c20f26SSukumar Swaminathan typedef struct _EXT_DISC_LUN {	/* n/a for nt */
57593c20f26SSukumar Swaminathan 	UINT16	Id;		/* 2 */
57693c20f26SSukumar Swaminathan 	UINT16	State;		/* 2 */
57793c20f26SSukumar Swaminathan 	UINT16	IoCount;	/* 2 */
57893c20f26SSukumar Swaminathan 	UINT8	Reserved[30];	/* 30 */
57993c20f26SSukumar Swaminathan } EXT_DISC_LUN, *PEXT_DISC_LUN;	/* 36 */
58093c20f26SSukumar Swaminathan 
58193c20f26SSukumar Swaminathan 
58293c20f26SSukumar Swaminathan /* SCSI address */
58393c20f26SSukumar Swaminathan typedef struct _EXT_SCSI_ADDR {
58493c20f26SSukumar Swaminathan 	UINT64	Target;			/* 8 */
58593c20f26SSukumar Swaminathan 	UINT16	Bus;			/* 2 */
58693c20f26SSukumar Swaminathan 	UINT16	Lun;			/* 2 */
58793c20f26SSukumar Swaminathan 	UINT8	Padding[12];		/* 12 */
58893c20f26SSukumar Swaminathan } EXT_SCSI_ADDR, *PEXT_SCSI_ADDR;	/* 24 */
58993c20f26SSukumar Swaminathan 
59093c20f26SSukumar Swaminathan 
59193c20f26SSukumar Swaminathan /* Fibre Channel address */
59293c20f26SSukumar Swaminathan typedef struct _EXT_FC_ADDR {
59393c20f26SSukumar Swaminathan 	UINT16	Type;					/* 2 */
59493c20f26SSukumar Swaminathan 	union {
59593c20f26SSukumar Swaminathan 		UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
59693c20f26SSukumar Swaminathan 		UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
59793c20f26SSukumar Swaminathan 		UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4 */
59893c20f26SSukumar Swaminathan 	} FcAddr;
59993c20f26SSukumar Swaminathan 	UINT8	Padding[4];				/* 4 */
60093c20f26SSukumar Swaminathan } EXT_FC_ADDR, *PEXT_FC_ADDR;				/* 14 */
60193c20f26SSukumar Swaminathan 
60293c20f26SSukumar Swaminathan #define	EXT_DEF_TYPE_WWNN	1
60393c20f26SSukumar Swaminathan #define	EXT_DEF_TYPE_WWPN	2
60493c20f26SSukumar Swaminathan #define	EXT_DEF_TYPE_PORTID	3
60593c20f26SSukumar Swaminathan #define	EXT_DEF_TYPE_FABRIC	4
60693c20f26SSukumar Swaminathan 
60793c20f26SSukumar Swaminathan /* Destination address */
60893c20f26SSukumar Swaminathan typedef struct _EXT_DEST_ADDR {
60993c20f26SSukumar Swaminathan 	union {
61093c20f26SSukumar Swaminathan 		struct {
61193c20f26SSukumar Swaminathan 			UINT64	Target;			/* 8 */
61293c20f26SSukumar Swaminathan 			UINT16	Bus;			/* 2 */
61393c20f26SSukumar Swaminathan 			UINT8	pad[6];			/* 6 */
61493c20f26SSukumar Swaminathan 		} ScsiAddr;
61593c20f26SSukumar Swaminathan 		UINT8	WWNN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
61693c20f26SSukumar Swaminathan 		UINT8	WWPN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
61793c20f26SSukumar Swaminathan 		UINT8	Id[EXT_DEF_PORTID_SIZE];	/* 4 */
61893c20f26SSukumar Swaminathan 	} DestAddr;
61993c20f26SSukumar Swaminathan 	UINT16	DestType;				/* 2 */
62093c20f26SSukumar Swaminathan 	UINT16	Lun;					/* 2 */
62193c20f26SSukumar Swaminathan 	UINT8	Padding[4];				/* 4 */
62293c20f26SSukumar Swaminathan } EXT_DEST_ADDR, *PEXT_DEST_ADDR;			/* 24 */
62393c20f26SSukumar Swaminathan 
62493c20f26SSukumar Swaminathan 
62593c20f26SSukumar Swaminathan #define	EXT_DEF_DESTTYPE_WWNN		1
62693c20f26SSukumar Swaminathan #define	EXT_DEF_DESTTYPE_WWPN		2
62793c20f26SSukumar Swaminathan #define	EXT_DEF_DESTTYPE_PORTID		3
62893c20f26SSukumar Swaminathan #define	EXT_DEF_DESTTYPE_FABRIC		4
62993c20f26SSukumar Swaminathan #define	EXT_DEF_DESTTYPE_SCSI		5
63093c20f26SSukumar Swaminathan 
63193c20f26SSukumar Swaminathan /* Statistic */
63293c20f26SSukumar Swaminathan typedef struct _EXT_HBA_PORT_STAT {
63393c20f26SSukumar Swaminathan 	UINT32	ControllerErrorCount;		/* 4 */
63493c20f26SSukumar Swaminathan 	UINT32	DeviceErrorCount;		/* 4 */
63593c20f26SSukumar Swaminathan 	UINT32	IoCount;			/* 4 */
63693c20f26SSukumar Swaminathan 	UINT32	MBytesCount;			/* 4; MB of data processed */
63793c20f26SSukumar Swaminathan 	UINT32	LipResetCount;			/* 4; Total no. of LIP Reset */
63893c20f26SSukumar Swaminathan 	UINT32	InterruptCount;			/* 4; Total no. of Interrupts */
63993c20f26SSukumar Swaminathan 	UINT32	LinkFailureCount;		/* 4 */
64093c20f26SSukumar Swaminathan 	UINT32	LossOfSyncCount;		/* 4 */
64193c20f26SSukumar Swaminathan 	UINT32	LossOfSignalsCount;		/* 4 */
64293c20f26SSukumar Swaminathan 	UINT32	PrimitiveSeqProtocolErrorCount;	/* 4 */
64393c20f26SSukumar Swaminathan 	UINT32	InvalidTransmissionWordCount;	/* 4 */
64493c20f26SSukumar Swaminathan 	UINT32	InvalidCRCCount;		/* 4 */
64593c20f26SSukumar Swaminathan 	UINT8	Reserved[64];			/* 64 */
64693c20f26SSukumar Swaminathan } EXT_HBA_PORT_STAT, *PEXT_HBA_PORT_STAT;	/* 112 */
64793c20f26SSukumar Swaminathan 
64893c20f26SSukumar Swaminathan 
64993c20f26SSukumar Swaminathan /* Driver property */
65093c20f26SSukumar Swaminathan typedef struct _EXT_DRIVER {
65193c20f26SSukumar Swaminathan 	UINT32	MaxTransferLen;			/* 4 */
65293c20f26SSukumar Swaminathan 	UINT32	MaxDataSegments;		/* 4 */
65393c20f26SSukumar Swaminathan 	UINT32	Attrib;				/* 4 */
65493c20f26SSukumar Swaminathan 	UINT32	InternalFlags[4];		/* 16 */
65593c20f26SSukumar Swaminathan 	UINT16	NumOfBus;			/* 2; Port Type */
65693c20f26SSukumar Swaminathan 	UINT16	TargetsPerBus;			/* 2; Port Status */
65793c20f26SSukumar Swaminathan 	UINT16	LunsPerTarget;			/* 2 */
65893c20f26SSukumar Swaminathan 	UINT16	DmaBitAddresses;		/* 2 */
65993c20f26SSukumar Swaminathan 	UINT16	IoMapType;			/* 2 */
66093c20f26SSukumar Swaminathan 	UINT8	Version[EXT_DEF_MAX_STR_SIZE];	/* 128 */
66193c20f26SSukumar Swaminathan 	UINT8	Reserved[32];			/* 32 */
66293c20f26SSukumar Swaminathan } EXT_DRIVER, *PEXT_DRIVER;			/* 198 */
66393c20f26SSukumar Swaminathan 
66493c20f26SSukumar Swaminathan 
66593c20f26SSukumar Swaminathan /* Firmware property */
66693c20f26SSukumar Swaminathan typedef struct _EXT_FW {
66793c20f26SSukumar Swaminathan 	UINT32	Attrib;				/* 4 */
66893c20f26SSukumar Swaminathan 	UINT8	Version[EXT_DEF_MAX_STR_SIZE];	/* 128 */
66993c20f26SSukumar Swaminathan 	UINT8	Reserved[66];			/* 66 */
67093c20f26SSukumar Swaminathan } EXT_FW, *PEXT_FW;				/* 198 */
67193c20f26SSukumar Swaminathan 
67293c20f26SSukumar Swaminathan /* ISP/Chip property */
67393c20f26SSukumar Swaminathan typedef struct _EXT_CHIP {
67493c20f26SSukumar Swaminathan 	UINT32	IoAddr;		/* 4 */
67593c20f26SSukumar Swaminathan 	UINT32	IoAddrLen;	/* 4 */
67693c20f26SSukumar Swaminathan 	UINT32	MemAddr;	/* 4 */
67793c20f26SSukumar Swaminathan 	UINT32	MemAddrLen;	/* 4 */
67893c20f26SSukumar Swaminathan 	UINT16	VendorId;	/* 2 */
67993c20f26SSukumar Swaminathan 	UINT16	DeviceId;	/* 2 */
68093c20f26SSukumar Swaminathan 	UINT16	SubVendorId;	/* 2 */
68193c20f26SSukumar Swaminathan 	UINT16	SubSystemId;	/* 2 */
68293c20f26SSukumar Swaminathan 	UINT16	PciBusNumber;	/* 2 */
68393c20f26SSukumar Swaminathan 	UINT16	PciSlotNumber;	/* 2 */
68493c20f26SSukumar Swaminathan 	UINT16	ChipType;	/* 2 */
68593c20f26SSukumar Swaminathan 	UINT16	InterruptLevel;	/* 2 */
68693c20f26SSukumar Swaminathan 	UINT16	OutMbx[8];	/* 16 */
6875dfd244aSDaniel Beauregard 	UINT16	FuncNo;		/* 2 */
6885dfd244aSDaniel Beauregard 	UINT8	Reserved[29];	/* 29 */
68993c20f26SSukumar Swaminathan 	UINT8	ChipRevID;	/* 1 */
69093c20f26SSukumar Swaminathan } EXT_CHIP, *PEXT_CHIP;		/* 80 */
69193c20f26SSukumar Swaminathan 
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 */
70093c20f26SSukumar Swaminathan 
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 
72593c20f26SSukumar Swaminathan /* Request Buffer for RNID */
72693c20f26SSukumar Swaminathan typedef struct _EXT_RNID_REQ {
72793c20f26SSukumar Swaminathan 	EXT_FC_ADDR	Addr;				/* 14 */
72893c20f26SSukumar Swaminathan 	UINT8		DataFormat;			/* 1 */
72993c20f26SSukumar Swaminathan 	UINT8		Pad;				/* 1 */
73093c20f26SSukumar Swaminathan 	UINT8		OptWWN[EXT_DEF_WWN_NAME_SIZE];	/* 8 */
73193c20f26SSukumar Swaminathan 	UINT8		OptPortId[EXT_DEF_PORTID_SIZE];	/* 4 */
73293c20f26SSukumar Swaminathan 	UINT8		Reserved[51];			/* 51 */
73393c20f26SSukumar Swaminathan } EXT_RNID_REQ, *PEXT_RNID_REQ;				/* 79 */
73493c20f26SSukumar Swaminathan 
73593c20f26SSukumar Swaminathan #define	EXT_DEF_RNID_DFORMAT_NONE	0
73693c20f26SSukumar Swaminathan #define	EXT_DEF_RNID_DFORMAT_TOPO_DISC	0xDF
73793c20f26SSukumar Swaminathan 
73893c20f26SSukumar Swaminathan /* Request Buffer for Set RNID */
73993c20f26SSukumar Swaminathan typedef struct _EXT_SET_RNID_REQ {
74093c20f26SSukumar Swaminathan 	UINT8	IPVersion[2];		/*  2 */
74193c20f26SSukumar Swaminathan 	UINT8	UDPPortNumber[2];	/*  2 */
74293c20f26SSukumar Swaminathan 	UINT8	IPAddress[16];		/* 16 */
74393c20f26SSukumar Swaminathan 	UINT8	Reserved[64];		/* 64 */
74493c20f26SSukumar Swaminathan } EXT_SET_RNID_REQ, *PEXT_SET_RNID_REQ; /* 84 */
74593c20f26SSukumar Swaminathan 
74693c20f26SSukumar Swaminathan /* RNID definition and data struct */
74793c20f26SSukumar Swaminathan #define	SEND_RNID_RSP_SIZE	72
74893c20f26SSukumar Swaminathan 
74993c20f26SSukumar Swaminathan typedef struct _RNID_DATA
75093c20f26SSukumar Swaminathan {
75193c20f26SSukumar Swaminathan 	UINT32	UnitType;		/* 4 */
75293c20f26SSukumar Swaminathan 	UINT32	NumOfAttachedNodes;	/* 4 */
75393c20f26SSukumar Swaminathan 	UINT16	TopoDiscFlags;		/* 2 */
75493c20f26SSukumar Swaminathan 	UINT16	Reserved;		/* 2 */
75593c20f26SSukumar Swaminathan 	UINT8	WWN[16];		/* 16 */
75693c20f26SSukumar Swaminathan 	UINT8	PortId[4];		/* 4 */
75793c20f26SSukumar Swaminathan 	UINT8	IPVersion[2];		/* 2 */
75893c20f26SSukumar Swaminathan 	UINT8	UDPPortNumber[2];	/* 2 */
75993c20f26SSukumar Swaminathan 	UINT8	IPAddress[16];		/* 16 */
76093c20f26SSukumar Swaminathan } EXT_RNID_DATA, *PEXT_RNID_DATA;	/* 52 */
76193c20f26SSukumar Swaminathan 
76293c20f26SSukumar Swaminathan 
76393c20f26SSukumar Swaminathan /* SCSI pass-through */
76493c20f26SSukumar Swaminathan typedef struct _EXT_SCSI_PASSTHRU {
76593c20f26SSukumar Swaminathan 	EXT_SCSI_ADDR	TargetAddr;
76693c20f26SSukumar Swaminathan 	UINT8		Direction;
76793c20f26SSukumar Swaminathan 	UINT8		CdbLength;
76893c20f26SSukumar Swaminathan 	UINT8		Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
769*4c3888b8SHans Rosenfeld 	UINT8		Reserved[62];
77093c20f26SSukumar Swaminathan 	UINT8		SenseData[256];
77193c20f26SSukumar Swaminathan } EXT_SCSI_PASSTHRU, *PEXT_SCSI_PASSTHRU;
77293c20f26SSukumar Swaminathan 
77393c20f26SSukumar Swaminathan /* FC SCSI pass-through */
77493c20f26SSukumar Swaminathan typedef struct _EXT_FC_SCSI_PASSTHRU {
77593c20f26SSukumar Swaminathan 	EXT_DEST_ADDR	FCScsiAddr;
77693c20f26SSukumar Swaminathan 	UINT8		Direction;
77793c20f26SSukumar Swaminathan 	UINT8		CdbLength;
77893c20f26SSukumar Swaminathan 	UINT8		Cdb[EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH];
779*4c3888b8SHans Rosenfeld 	UINT8		Reserved[60];
78093c20f26SSukumar Swaminathan 	UINT8		SenseData[256];
78193c20f26SSukumar Swaminathan } EXT_FC_SCSI_PASSTHRU, *PEXT_FC_SCSI_PASSTHRU;
78293c20f26SSukumar Swaminathan 
78393c20f26SSukumar Swaminathan /* SCSI pass-through direction */
78493c20f26SSukumar Swaminathan #define	EXT_DEF_SCSI_PASSTHRU_DATA_IN		1
78593c20f26SSukumar Swaminathan #define	EXT_DEF_SCSI_PASSTHRU_DATA_OUT		2
78693c20f26SSukumar Swaminathan 
78793c20f26SSukumar Swaminathan 
78893c20f26SSukumar Swaminathan /* EXT_REG_AEN Request struct */
78993c20f26SSukumar Swaminathan typedef struct _EXT_REG_AEN {
79093c20f26SSukumar Swaminathan 	UINT32	Enable;		/* 4; non-0 to enable, 0 to disable. */
79193c20f26SSukumar Swaminathan 	UINT8	Reserved[4];	/* 4 */
79293c20f26SSukumar Swaminathan } EXT_REG_AEN, *PEXT_REG_AEN;	/* 8 */
79393c20f26SSukumar Swaminathan 
79493c20f26SSukumar Swaminathan /* EXT_GET_AEN Response struct */
79593c20f26SSukumar Swaminathan typedef struct _EXT_ASYNC_EVENT {
79693c20f26SSukumar Swaminathan 	UINT32	AsyncEventCode;		/* 4 */
79793c20f26SSukumar Swaminathan 	union {
79893c20f26SSukumar Swaminathan 		struct {
79993c20f26SSukumar Swaminathan 			UINT8 RSCNInfo[EXT_DEF_PORTID_SIZE_ACTUAL]; /* 3 BE */
80093c20f26SSukumar Swaminathan 			UINT8 AddrFormat;			/* 1 */
80193c20f26SSukumar Swaminathan 			UINT8 Rsvd_1[8];			/* 8 */
80293c20f26SSukumar Swaminathan 		} RSCN;
80393c20f26SSukumar Swaminathan 
80493c20f26SSukumar Swaminathan 		UINT8	Reserved[12];	/* 12 */
80593c20f26SSukumar Swaminathan 	} Payload;
80693c20f26SSukumar Swaminathan } EXT_ASYNC_EVENT, *PEXT_ASYNC_EVENT;	/* 16 */
80793c20f26SSukumar Swaminathan 
80893c20f26SSukumar Swaminathan 
80993c20f26SSukumar Swaminathan /* Asynchronous Event Codes */
81093c20f26SSukumar Swaminathan #define	EXT_DEF_LIP_OCCURRED	0x8010
81193c20f26SSukumar Swaminathan #define	EXT_DEF_LINK_UP		0x8011
81293c20f26SSukumar Swaminathan #define	EXT_DEF_LINK_DOWN	0x8012
81393c20f26SSukumar Swaminathan #define	EXT_DEF_LIP_RESET	0x8013
81493c20f26SSukumar Swaminathan #define	EXT_DEF_RSCN		0x8015
81593c20f26SSukumar Swaminathan #define	EXT_DEF_DEVICE_UPDATE	0x8014
816*4c3888b8SHans Rosenfeld #define	EXT_DEF_DPORT_DIAGS	0x8080
81793c20f26SSukumar Swaminathan 
81893c20f26SSukumar Swaminathan /* LED state information */
81993c20f26SSukumar Swaminathan #define	EXT_DEF_GRN_BLINK_OFF	0x00
82093c20f26SSukumar Swaminathan #define	EXT_DEF_GRN_BLINK_ON	0x01
82193c20f26SSukumar Swaminathan 
82293c20f26SSukumar Swaminathan typedef struct _EXT_BEACON_CONTROL {
82393c20f26SSukumar Swaminathan 	UINT32	State;				/* 4  */
82493c20f26SSukumar Swaminathan 	UINT8	Reserved[12];			/* 12 */
82593c20f26SSukumar Swaminathan } EXT_BEACON_CONTROL, *PEXT_BEACON_CONTROL;	/* 16 */
82693c20f26SSukumar Swaminathan 
82793c20f26SSukumar Swaminathan /* Required # of entries in the queue buffer allocated. */
82893c20f26SSukumar Swaminathan #define	EXT_DEF_MAX_AEN_QUEUE	EXT_DEF_MAX_AEN_QUEUE_OS
82993c20f26SSukumar Swaminathan 
83093c20f26SSukumar Swaminathan /*
83193c20f26SSukumar Swaminathan  * LUN BitMask structure definition, array of 8bit bytes,
83293c20f26SSukumar Swaminathan  * 1 bit per lun.  When bit == 1, the lun is masked.
83393c20f26SSukumar Swaminathan  * Most significant bit of mask[0] is lun 0.
83493c20f26SSukumar Swaminathan  * Least significant bit of mask[0] is lun 7.
83593c20f26SSukumar Swaminathan  */
83693c20f26SSukumar Swaminathan 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];
83993c20f26SSukumar Swaminathan #else
8405dfd244aSDaniel Beauregard 	UINT8	mask[(EXT_DEF_NON_SCSI3_MAX_LUN + 8) >> 3 ];
84193c20f26SSukumar Swaminathan #endif
84293c20f26SSukumar Swaminathan } EXT_LUN_BIT_MASK, *PEXT_LUN_BIT_MASK;
84393c20f26SSukumar Swaminathan 
84493c20f26SSukumar Swaminathan /* Device type to get for EXT_SC_GET_PORT_SUMMARY */
84593c20f26SSukumar Swaminathan #define	EXT_DEF_GET_KNOWN_DEVICE	0x1
84693c20f26SSukumar Swaminathan #define	EXT_DEF_GET_VISIBLE_DEVICE	0x2
84793c20f26SSukumar Swaminathan #define	EXT_DEF_GET_HIDDEN_DEVICE	0x4
84893c20f26SSukumar Swaminathan #define	EXT_DEF_GET_FABRIC_DEVICE	0x8
84993c20f26SSukumar Swaminathan #define	EXT_DEF_GET_LOOP_DEVICE		0x10
85093c20f26SSukumar Swaminathan 
85193c20f26SSukumar Swaminathan /* Each entry in device database */
85293c20f26SSukumar Swaminathan typedef struct _EXT_DEVICEDATAENTRY
85393c20f26SSukumar Swaminathan {
85493c20f26SSukumar Swaminathan 	EXT_SCSI_ADDR	TargetAddress;	/* scsi address */
85593c20f26SSukumar Swaminathan 	UINT32		DeviceFlags;	/* Flags for device */
85693c20f26SSukumar Swaminathan 	UINT16		LoopID;		/* Loop ID */
85793c20f26SSukumar Swaminathan 	UINT16		BaseLunNumber;
85893c20f26SSukumar Swaminathan 	UINT8		NodeWWN[8];	/* Node World Wide Name for device */
85993c20f26SSukumar Swaminathan 	UINT8		PortWWN[8];	/* Port World Wide Name for device */
86093c20f26SSukumar Swaminathan 	UINT8		PortID[3];	/* Current PortId for device */
86193c20f26SSukumar Swaminathan 	UINT8		ControlFlags;	/* Control flag */
86293c20f26SSukumar Swaminathan 	UINT8		Reserved[132];
86393c20f26SSukumar Swaminathan } EXT_DEVICEDATAENTRY, *PEXT_DEVICEDATAENTRY;
86493c20f26SSukumar Swaminathan 
86593c20f26SSukumar Swaminathan #define	EXT_DEF_EXTERNAL_LUN_COUNT		2048
86693c20f26SSukumar Swaminathan #define	EXT_DEF_EXTERNAL_LUN_BITMASK_BYTES	(EXT_DEF_EXTERNAL_LUN_COUNT / 8)
86793c20f26SSukumar Swaminathan 
86893c20f26SSukumar Swaminathan /* Structure as used in the IOCTL. */
86993c20f26SSukumar Swaminathan 
87093c20f26SSukumar Swaminathan typedef struct _EXT_EXTERNAL_LUN_BITMASK_ENTRY
87193c20f26SSukumar Swaminathan {
87293c20f26SSukumar Swaminathan 	UINT8	NodeName[EXT_DEF_WWN_NAME_SIZE];
87393c20f26SSukumar Swaminathan 	UINT8	PortName[EXT_DEF_WWN_NAME_SIZE];
87493c20f26SSukumar Swaminathan 	UINT8	Reserved1[16];		/* Pad to 32-byte header */
87593c20f26SSukumar Swaminathan 	UINT8	Bitmask[EXT_DEF_EXTERNAL_LUN_BITMASK_BYTES];
87693c20f26SSukumar Swaminathan } EXT_EXTERNAL_LUN_BITMASK_ENTRY, *PEXT_EXTERNAL_LUN_BITMASK_ENTRY;
87793c20f26SSukumar Swaminathan 
87893c20f26SSukumar Swaminathan 
87993c20f26SSukumar Swaminathan /* Structure as it is stored in the NT registry */
88093c20f26SSukumar Swaminathan 
88193c20f26SSukumar Swaminathan typedef struct _LUN_BITMASK_LIST
88293c20f26SSukumar Swaminathan {
88393c20f26SSukumar Swaminathan 	UINT16	Version;	/* Should be LUN_BITMASK_REGISTRY_VERSION */
88493c20f26SSukumar Swaminathan 	UINT16	EntryCount;	/* Count of variable entries following */
88593c20f26SSukumar Swaminathan 	UINT8	Reserved[28];	/* Pad to 32-byte header */
88693c20f26SSukumar Swaminathan 
88793c20f26SSukumar Swaminathan 	EXT_EXTERNAL_LUN_BITMASK_ENTRY
88893c20f26SSukumar Swaminathan 		BitmaskEntry[1]; /* Var-length data */
88993c20f26SSukumar Swaminathan } EXT_LUN_BITMASK_LIST, *PEXT_LUN_BITMASK_LIST;
89093c20f26SSukumar Swaminathan 
89193c20f26SSukumar Swaminathan 
89293c20f26SSukumar Swaminathan /* Device database information */
89393c20f26SSukumar Swaminathan typedef struct _EXT_DEVICEDATA
89493c20f26SSukumar Swaminathan {
89593c20f26SSukumar Swaminathan 	UINT32	TotalDevices;		/* Set to total number of device */
89693c20f26SSukumar Swaminathan 	UINT32	ReturnListEntryCount;	/* Set to number of device entries */
89793c20f26SSukumar Swaminathan 					/* returned in list. */
89893c20f26SSukumar Swaminathan 
89993c20f26SSukumar Swaminathan 	EXT_DEVICEDATAENTRY	EntryList[1];	/* Variable length */
90093c20f26SSukumar Swaminathan } EXT_DEVICEDATA, *PEXT_DEVICEDATA;
90193c20f26SSukumar Swaminathan 
90293c20f26SSukumar Swaminathan 
90393c20f26SSukumar Swaminathan /* Swap Target Device Data structure */
90493c20f26SSukumar Swaminathan typedef struct _EXT_SWAPTARGETDEVICE
90593c20f26SSukumar Swaminathan {
90693c20f26SSukumar Swaminathan 	EXT_DEVICEDATAENTRY	CurrentExistDevice;
90793c20f26SSukumar Swaminathan 	EXT_DEVICEDATAENTRY	NewDevice;
90893c20f26SSukumar Swaminathan } EXT_SWAPTARGETDEVICE, *PEXT_SWAPTARGETDEVICE;
90993c20f26SSukumar Swaminathan 
91093c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES	1
91193c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES	256
91293c20f26SSukumar Swaminathan 
91393c20f26SSukumar Swaminathan #ifdef _WIN64
91493c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE	32
91593c20f26SSukumar Swaminathan #else
91693c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE \
91793c20f26SSukumar Swaminathan     offsetof(LUN_BITMASK_LIST_BUFFER, asBitmaskEntry)
91893c20f26SSukumar Swaminathan #endif
91993c20f26SSukumar Swaminathan 
92093c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_MIN_SIZE \
92193c20f26SSukumar Swaminathan 	(EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
92293c20f26SSukumar Swaminathan 	(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
92393c20f26SSukumar Swaminathan 	EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES))
92493c20f26SSukumar Swaminathan #define	EXT_DEF_LUN_BITMASK_LIST_MAX_SIZE \
92593c20f26SSukumar Swaminathan 	(EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE + \
92693c20f26SSukumar Swaminathan 	(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
92793c20f26SSukumar Swaminathan 	EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES))
92893c20f26SSukumar Swaminathan /*
92993c20f26SSukumar Swaminathan  * LUN mask bit manipulation macros
93093c20f26SSukumar Swaminathan  *
93193c20f26SSukumar Swaminathan  *   P = Pointer to an EXT_LUN_BIT_MASK union.
93293c20f26SSukumar Swaminathan  *   L = LUN number.
93393c20f26SSukumar Swaminathan  */
93493c20f26SSukumar Swaminathan #define	EXT_IS_LUN_BIT_SET(P, L) \
93593c20f26SSukumar Swaminathan 	(((P)->mask[L / 8] & (0x80 >> (L % 8))) ? 1 : 0)
93693c20f26SSukumar Swaminathan 
93793c20f26SSukumar Swaminathan #define	EXT_SET_LUN_BIT(P, L) \
93893c20f26SSukumar Swaminathan 	((P)->mask[L / 8] |= (0x80 >> (L % 8)))
93993c20f26SSukumar Swaminathan 
94093c20f26SSukumar Swaminathan #define	EXT_CLR_LUN_BIT(P, L) \
94193c20f26SSukumar Swaminathan 	((P)->mask[L / 8] &= ~(0x80 >> (L % 8)))
94293c20f26SSukumar Swaminathan 
94393c20f26SSukumar Swaminathan typedef struct _EXT_PORT_PARAM {
94493c20f26SSukumar Swaminathan 	EXT_DEST_ADDR	FCScsiAddr;
94593c20f26SSukumar Swaminathan 	UINT16		Mode;
94693c20f26SSukumar Swaminathan 	UINT16		Speed;
94793c20f26SSukumar Swaminathan } EXT_PORT_PARAM, *PEXT_PORT_PARAM;
94893c20f26SSukumar Swaminathan 
94993c20f26SSukumar Swaminathan #define	EXT_IIDMA_MODE_GET	0
95093c20f26SSukumar Swaminathan #define	EXT_IIDMA_MODE_SET	1
95193c20f26SSukumar Swaminathan 
95293c20f26SSukumar Swaminathan /*
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 
9825dfd244aSDaniel Beauregard /*
98393c20f26SSukumar Swaminathan  * Mercury/Menlo
98493c20f26SSukumar Swaminathan  */
98593c20f26SSukumar Swaminathan 
98693c20f26SSukumar Swaminathan #define	MENLO_RESET_FLAG_ENABLE_DIAG_FW	1
98793c20f26SSukumar Swaminathan 
9885dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_RESET {
98993c20f26SSukumar Swaminathan 	UINT16	Flags;
99093c20f26SSukumar Swaminathan 	UINT16	Reserved;
9915dfd244aSDaniel Beauregard } EXT_MENLO_RESET, *PEXT_MENLO_RESET;
99293c20f26SSukumar Swaminathan 
9935dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_GET_FW_VERSION {
99493c20f26SSukumar Swaminathan 	UINT32	FwVersion;
9955dfd244aSDaniel Beauregard } EXT_MENLO_GET_FW_VERSION, *PEXT_MENLO_GET_FW_VERSION;
99693c20f26SSukumar Swaminathan 
99793c20f26SSukumar Swaminathan #define	MENLO_UPDATE_FW_FLAG_DIAG_FW	0x0008  /* if flag is cleared then */
99893c20f26SSukumar Swaminathan 						/* it must be an fw op */
9995dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_UPDATE_FW {
10005dfd244aSDaniel Beauregard 	UINT64	pFwDataBytes;
100193c20f26SSukumar Swaminathan 	UINT32	TotalByteCount;
100293c20f26SSukumar Swaminathan 	UINT16	Flags;
100393c20f26SSukumar Swaminathan 	UINT16	Reserved;
10045dfd244aSDaniel Beauregard } EXT_MENLO_UPDATE_FW, *PEXT_MENLO_UPDATE_FW;
100593c20f26SSukumar Swaminathan 
100693c20f26SSukumar Swaminathan #define	CONFIG_PARAM_ID_RESERVED	1
100793c20f26SSukumar Swaminathan #define	CONFIG_PARAM_ID_UIF		2
100893c20f26SSukumar Swaminathan #define	CONFIG_PARAM_ID_FCOE_COS	3
100993c20f26SSukumar Swaminathan #define	CONFIG_PARAM_ID_PAUSE_TYPE	4
101093c20f26SSukumar Swaminathan #define	CONFIG_PARAM_ID_TIMEOUTS	5
101193c20f26SSukumar Swaminathan 
101293c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_CONFIG_LOG_DATA	1	/* Fetch Config Log Data */
101393c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_LOG_DATA		2	/* Fetch Log Data */
101493c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_PORT_STATISTICS	3	/* Fetch Port Statistics */
101593c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_LIF_STATISTICS	4	/* Fetch LIF Statistics */
101693c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_ASIC_STATISTICS	5	/* Fetch ASIC Statistics */
101793c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_CONFIG_PARAMETERS 6	/* Fetch Config Parameters */
101893c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_PANIC_LOG	7	/* Fetch Panic Log */
101993c20f26SSukumar Swaminathan 
102093c20f26SSukumar Swaminathan /*
102193c20f26SSukumar Swaminathan  * InfoContext defines for INFO_DATA_TYPE_LOG_DATA
102293c20f26SSukumar Swaminathan  */
102393c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_DEBUG_LOG			0
102493c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_LEARN_LOG			1
102593c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_FC_ACL_INGRESS_LOG		2
102693c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_FC_ACL_EGRESS_LOG		3
102793c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_ETHERNET_ACL_INGRESS_LOG	4
102893c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_ETHERNET_ACL_EGRESS_LOG	5
102993c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_MESSAGE_TRANSMIT_LOG		6
103093c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_MESSAGE_RECEIVE_LOG		7
103193c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_LINK_EVENT_LOG		8
103293c20f26SSukumar Swaminathan #define	IC_LOG_DATA_LOG_ID_DCX_LOG			9
103393c20f26SSukumar Swaminathan 
103493c20f26SSukumar Swaminathan /*
103593c20f26SSukumar Swaminathan  * InfoContext defines for INFO_DATA_TYPE_PORT_STATISTICS
103693c20f26SSukumar Swaminathan  */
103793c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_ETHERNET_PORT0	0
103893c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_ETHERNET_PORT1	1
103993c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT0	2
104093c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT1	3
104193c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT0		4
104293c20f26SSukumar Swaminathan #define	IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT1		5
104393c20f26SSukumar Swaminathan 
104493c20f26SSukumar Swaminathan /*
104593c20f26SSukumar Swaminathan  * InfoContext defines for INFO_DATA_TYPE_LIF_STATISTICS
104693c20f26SSukumar Swaminathan  */
104793c20f26SSukumar Swaminathan #define	IC_LIF_STATISTICS_LIF_NUMBER_ETHERNET_PORT0	0
104893c20f26SSukumar Swaminathan #define	IC_LIF_STATISTICS_LIF_NUMBER_ETHERNET_PORT1	1
104993c20f26SSukumar Swaminathan #define	IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT0		2
105093c20f26SSukumar Swaminathan #define	IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT1		3
105193c20f26SSukumar Swaminathan #define	IC_LIF_STATISTICS_LIF_NUMBER_CPU		6
105293c20f26SSukumar Swaminathan 
10535dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_ACCESS_PARAMETERS {
105493c20f26SSukumar Swaminathan 	union {
105593c20f26SSukumar Swaminathan 		struct {
105693c20f26SSukumar Swaminathan 			UINT32 StartingAddr;
105793c20f26SSukumar Swaminathan 			UINT32 Reserved2;
105893c20f26SSukumar Swaminathan 			UINT32 Reserved3;
105993c20f26SSukumar Swaminathan 		} MenloMemory;		/* For Read & Write Menlo Memory */
106093c20f26SSukumar Swaminathan 
106193c20f26SSukumar Swaminathan 		struct {
106293c20f26SSukumar Swaminathan 			UINT32 ConfigParamID;
106393c20f26SSukumar Swaminathan 			UINT32 ConfigParamData0;
106493c20f26SSukumar Swaminathan 			UINT32 ConfigParamData1;
106593c20f26SSukumar Swaminathan 		} MenloConfig;		/* For change Configuration */
106693c20f26SSukumar Swaminathan 
106793c20f26SSukumar Swaminathan 		struct {
106893c20f26SSukumar Swaminathan 			UINT32 InfoDataType;
106993c20f26SSukumar Swaminathan 			UINT32 InfoContext;
107093c20f26SSukumar Swaminathan 			UINT32 Reserved;
107193c20f26SSukumar Swaminathan 		} MenloInfo;		/* For fetch Menlo Info */
107293c20f26SSukumar Swaminathan 	} ap;
10735dfd244aSDaniel Beauregard } EXT_MENLO_ACCESS_PARAMETERS, *PEXT_MENLO_ACCESS_PARAMETERS;
107493c20f26SSukumar Swaminathan 
107593c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_LOG_CONFIG_TBC		((10 * 7) + 1) * 4
107693c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_PORT_STAT_ETH_TBC	0x194
107793c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_PORT_STAT_FC_TBC		0xC0
107893c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_LIF_STAT_TBC		0x40
107993c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_ASIC_STAT_TBC		0x5F8
108093c20f26SSukumar Swaminathan #define	INFO_DATA_TYPE_CONFIG_TBC		0x140
108193c20f26SSukumar Swaminathan 
108293c20f26SSukumar Swaminathan #define	MENLO_OP_READ_MEM	0	/* Read Menlo Memory */
108393c20f26SSukumar Swaminathan #define	MENLO_OP_WRITE_MEM	1	/* Write Menlo Memory */
108493c20f26SSukumar Swaminathan #define	MENLO_OP_CHANGE_CONFIG	2	/* Change Configuration */
108593c20f26SSukumar Swaminathan #define	MENLO_OP_GET_INFO	3	/* Fetch Menlo Info (Logs, & */
108693c20f26SSukumar Swaminathan 					/* Statistics, Configuration) */
108793c20f26SSukumar Swaminathan 
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;
109593c20f26SSukumar Swaminathan 
109693c20f26SSukumar Swaminathan #define	MENLO_FC_CHECKSUM_FAILURE	0x01
109793c20f26SSukumar Swaminathan #define	MENLO_FC_INVALID_LENGTH		0x02
109893c20f26SSukumar Swaminathan #define	MENLO_FC_INVALID_ADDRESS	0x04
109993c20f26SSukumar Swaminathan #define	MENLO_FC_INVALID_CONFIG_ID_TYPE	0x05
110093c20f26SSukumar Swaminathan #define	MENLO_FC_INVALID_CONFIG_DATA	0x06
110193c20f26SSukumar Swaminathan #define	MENLO_FC_INVALID_INFO_CONTEXT	0x07
110293c20f26SSukumar Swaminathan 
11035dfd244aSDaniel Beauregard typedef struct _EXT_MENLO_MGT {
110493c20f26SSukumar Swaminathan 	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;
110993c20f26SSukumar Swaminathan 	} 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;
112193c20f26SSukumar Swaminathan 
112293c20f26SSukumar Swaminathan /*
112393c20f26SSukumar Swaminathan  * vport struct definations
112493c20f26SSukumar Swaminathan  */
11255dfd244aSDaniel Beauregard #define	MAX_DEV_PATH			256
11265dfd244aSDaniel Beauregard #define	MAX_VP_ID			256
11275dfd244aSDaniel Beauregard #define	EXT_OLD_VPORT_ID_CNT_SIZE	260
112893c20f26SSukumar Swaminathan typedef struct _EXT_VPORT_ID_CNT {
112993c20f26SSukumar Swaminathan 	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];
113393c20f26SSukumar Swaminathan } EXT_VPORT_ID_CNT, *PEXT_VPORT_ID_CNT;
113493c20f26SSukumar Swaminathan 
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 
114293c20f26SSukumar Swaminathan typedef struct _EXT_VPORT_INFO {
114393c20f26SSukumar Swaminathan 	UINT32		free;
114493c20f26SSukumar Swaminathan 	UINT32		used;
114593c20f26SSukumar Swaminathan 	UINT32		id;
114693c20f26SSukumar Swaminathan 	UINT32		state;
114793c20f26SSukumar Swaminathan 	UINT32		bound;
114893c20f26SSukumar Swaminathan 	UINT8		wwnn[EXT_DEF_WWN_NAME_SIZE];
114993c20f26SSukumar Swaminathan 	UINT8		wwpn[EXT_DEF_WWN_NAME_SIZE];
115093c20f26SSukumar Swaminathan 	UINT8		reserved[220];
115193c20f26SSukumar Swaminathan } EXT_VPORT_INFO, *PEXT_VPORT_INFO;
115293c20f26SSukumar Swaminathan 
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 
127493c20f26SSukumar Swaminathan #ifdef	__cplusplus
127593c20f26SSukumar Swaminathan }
127693c20f26SSukumar Swaminathan #endif
127793c20f26SSukumar Swaminathan 
127893c20f26SSukumar Swaminathan #endif /* _EXIOCT_H */
1279