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