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