exioct.h revision 7a2b99c0f2ca8f0910b76c47c895d7c6a23674de
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/* Copyright 2009 QLogic Corporation */
/*
* File Name: exioct.h
*
* File is created to adhere to Solaris requirement using 8-space tabs.
*
* !!!!! PLEASE DO NOT REMOVE THE TABS !!!!!
* !!!!! PLEASE NO SINGLE LINE COMMENTS: // !!!!!
* !!!!! PLEASE NO MORE THAN 80 CHARS PER LINE !!!!!
*
* ***********************************************************************
* * **
* * NOTICE **
* * COPYRIGHT (C) 2000-2009 QLOGIC CORPORATION **
* * ALL RIGHTS RESERVED **
* * **
* ***********************************************************************
*/
#ifndef _EXIOCT_H
#define _EXIOCT_H
#ifdef __cplusplus
extern "C" {
#endif
#include <exioctso.h>
/*
* NOTE: the following version defines must be updated each time the
* changes made may affect the backward compatibility of the
*/
#define EXT_VERSION 5
/*
* OS independent General definitions
*/
#define EXT_DEF_SIGNATURE_SIZE 8
#define EXT_DEF_WWN_NAME_SIZE 8
#define EXT_DEF_WWP_NAME_SIZE 8
#define EXT_DEF_SERIAL_NUM_SIZE 4
#define EXT_DEF_PORTID_SIZE 4
#define EXT_DEF_PORTID_SIZE_ACTUAL 3
#define EXT_DEF_MAX_STR_SIZE 128
#define EXT_DEF_SCSI_PASSTHRU_CDB_LENGTH 12
#define EXT_DEF_MAC_ADDRESS_SIZE 6
#define EXT_DEF_ADDR_MODE_32 1
#define EXT_DEF_ADDR_MODE_64 2
/*
* ***********************************************************************
* OS dependent General configuration defines
* ***********************************************************************
*/
#define EXT_DEF_MAX_HBA EXT_DEF_MAX_HBA_OS
#define EXT_DEF_MAX_BUS EXT_DEF_MAX_BUS_OS
#define EXT_DEF_MAX_LUN EXT_DEF_MAX_LUN_OS
/*
* ***********************************************************************
* ***********************************************************************
*/
typedef struct {
typedef union _ext_signature {
char bytes[EXT_DEF_SIGNATURE_SIZE];
} ext_sig_t;
/*
* Addressing mode used by the user application
*/
#define EXT_ADDR_MODE EXT_ADDR_MODE_OS
/*
* Status. These macros are being used for setting Status field in
* EXT_IOCTL structure.
*/
#define EXT_STATUS_OK 0
#define EXT_STATUS_ERR 1
#define EXT_STATUS_BUSY 2
#define EXT_STATUS_PENDING 3
#define EXT_STATUS_SUSPENDED 4
#define EXT_STATUS_RETRY_PENDING 5
#define EXT_STATUS_INVALID_PARAM 6
#define EXT_STATUS_DATA_OVERRUN 7
#define EXT_STATUS_DATA_UNDERRUN 8
#define EXT_STATUS_DEV_NOT_FOUND 9
#define EXT_STATUS_COPY_ERR 10
#define EXT_STATUS_MAILBOX 11
#define EXT_STATUS_UNSUPPORTED_SUBCODE 12
#define EXT_STATUS_UNSUPPORTED_VERSION 13
#define EXT_STATUS_MS_NO_RESPONSE 14
#define EXT_STATUS_SCSI_STATUS 15
#define EXT_STATUS_BUFFER_TOO_SMALL 16
#define EXT_STATUS_NO_MEMORY 17
#define EXT_STATUS_UNKNOWN 18
#define EXT_STATUS_UNKNOWN_DSTATUS 19
#define EXT_STATUS_INVALID_REQUEST 20
#define EXT_STATUS_DEVICE_NOT_READY 21
#define EXT_STATUS_DEVICE_OFFLINE 22
#define EXT_STATUS_HBA_NOT_READY 23
#define EXT_STATUS_HBA_QUEUE_FULL 24
#define EXT_STATUS_INVALID_VPINDEX 25
/*
* Detail Status contains the SCSI bus status codes.
*/
#define EXT_DSTATUS_GOOD 0x00
#define EXT_DSTATUS_CHECK_CONDITION 0x02
#define EXT_DSTATUS_CONDITION_MET 0x04
#define EXT_DSTATUS_BUSY 0x08
#define EXT_DSTATUS_INTERMEDIATE 0x10
#define EXT_DSTATUS_INTERMEDIATE_COND_MET 0x14
#define EXT_DSTATUS_RESERVATION_CONFLICT 0x18
#define EXT_DSTATUS_COMMAND_TERMINATED 0x22
#define EXT_DSTATUS_QUEUE_FULL 0x28
/*
* Detail Status contains the needed Response buffer space(bytes)
* when Status = EXT_STATUS_BUFFER_TOO_SMALL
*/
/*
* Detail Status contains one of the following codes
* when Status = EXT_STATUS_INVALID_PARAM or
* = EXT_STATUS_DEV_NOT_FOUND
*/
#define EXT_DSTATUS_NOADNL_INFO 0x00
#define EXT_DSTATUS_HBA_INST 0x01
#define EXT_DSTATUS_TARGET 0x02
#define EXT_DSTATUS_LUN 0x03
#define EXT_DSTATUS_REQUEST_LEN 0x04
#define EXT_DSTATUS_PATH_INDEX 0x05
/*
* Currently supported DeviceControl / ioctl command codes
*/
#define EXT_CC_QUERY EXT_CC_QUERY_OS
#define EXT_CC_REG_AEN EXT_CC_REG_AEN_OS
#define EXT_CC_GET_AEN EXT_CC_GET_AEN_OS
#define EXT_CC_HOST_IDX EXT_CC_HOST_IDX_OS
#define EXT_CC_LOOPBACK EXT_CC_LOOPBACK_OS
#define EXT_CC_GET_VPD EXT_CC_GET_VPD_OS
#define EXT_CC_SET_VPD EXT_CC_SET_VPD_OS
#define EXT_CC_VPORT_CMD EXT_CC_VPORT_CMD_OS
#define EXT_CC_RESET_FW EXT_CC_RESET_FW_OS
/*
* HBA port operations
*/
#define EXT_CC_GET_DATA EXT_CC_GET_DATA_OS
#define EXT_CC_SET_DATA EXT_CC_SET_DATA_OS
/*
* The following DeviceControl / ioctl command codes currently are not
* supported.
*/
/*
* ***********************************************************************
* EXT_IOCTL SubCode definition.
* These macros are being used for setting SubCode field in EXT_IOCTL
* structure.
* ***********************************************************************
*/
/*
* Query.
* Uses with EXT_QUERY as the ioctl code.
*/
#define EXT_SC_QUERY_HBA_NODE 1
#define EXT_SC_QUERY_HBA_PORT 2
#define EXT_SC_QUERY_DISC_PORT 3
#define EXT_SC_QUERY_DISC_TGT 4
#define EXT_SC_QUERY_DRIVER 6
#define EXT_SC_QUERY_FW 7
#define EXT_SC_QUERY_CHIP 8
#define EXT_SC_QUERY_CNA_PORT 9
/*
* Get.
* Uses with EXT_GET_DATA as the ioctl code
*/
/* 1 - 99 Common */
#define EXT_SC_GET_STATISTICS 3
#define EXT_SC_GET_RISC_CODE 6
#define EXT_SC_GET_FLASH_RAM 7
#define EXT_SC_GET_BEACON_STATE 8
#define EXT_SC_GET_DCBX_PARAM 9
/* 100 - 199 FC_INTF_TYPE */
#define EXT_SC_GET_LUN_BITMASK 103
#define EXT_SC_GET_PORT_SUMMARY 106
#define EXT_SC_GET_POSITION_MAP 107
#define EXT_SC_GET_RNID 109
#define EXT_SC_GET_FC_LUN_BITMASK 111
#define EXT_SC_GET_FC_STATISTICS 112
#define EXT_SC_GET_FC4_STATISTICS 113
#define EXT_SC_GET_TARGET_ID 114
/* 200 - 299 SCSI_INTF_TYPE */
/*
* Set.
* Uses with EXT_SET_DATA as the ioctl code
*/
/* 1 - 99 Common */
#define EXT_SC_RST_STATISTICS 3
#define EXT_SC_SET_RISC_CODE 6
#define EXT_SC_SET_FLASH_RAM 7
#define EXT_SC_SET_BEACON_STATE 8
/* special types (non snia) */
/* 100 - 199 FC_INTF_TYPE */
#define EXT_SC_SET_LUN_BITMASK 103
#define EXT_SC_SET_RNID 109
#define EXT_SC_SET_FC_LUN_BITMASK 111
#define EXT_SC_ADD_TARGET_DEVICE 112
#define EXT_SC_SWAP_TARGET_DEVICE 113
/* 200 - 299 SCSI_INTF_TYPE */
/* SCSI passthrough */
#define EXT_SC_SEND_SCSI_PASSTHRU 0
#define EXT_SC_SEND_FC_SCSI_PASSTHRU 1
/* NVRAM */
#define EXT_SC_NVRAM_HARDWARE 0 /* Save */
/*
* Vport functions
* Used with EXT_CC_VPORT_CMD as the ioctl code.
*/
#define EXT_VF_SC_VPORT_GETINFO 1
#define EXT_VF_SC_VPORT_DELETE 2
#define EXT_VF_SC_VPORT_MODIFY 3
#define EXT_VF_SC_VPORT_CREATE 4
/*
* Flash access sub codes
* Used with EXT_CC_ACCESS_FLASH as the ioctl code.
*/
#define EXT_SC_FLASH_READ 0
#define EXT_SC_FLASH_WRITE 1
/*
* Reset FW subcodes for Schultz
* Used with EXT_CC_RESET_FW as the ioctl code.
*/
#define EXT_SC_RESET_FC_FW 1
#define EXT_SC_RESET_MPI_FW 2
/* Read */
/* Write */
/* Reset */
/* Request struct */
/*
* Response struct
*/
typedef struct _EXT_HBA_NODE {
/* HBA node query interface type */
#define EXT_DEF_FC_INTF_TYPE 1
#define EXT_DEF_SCSI_INTF_TYPE 2
#define EXT_DEF_VIRTUAL_FC_INTF_TYPE 3
typedef struct _EXT_HBA_PORT {
/* USE_PORT_NAME */
/* FC-4 Instrumentation */
typedef struct _EXT_HBA_FC4Statistics {
typedef struct _EXT_LOOPBACK_REQ {
typedef struct _EXT_LOOPBACK_RSP {
/* used with loopback response CommandSent */
#define INT_DEF_LB_LOOPBACK_CMD 0
#define INT_DEF_LB_ECHO_CMD 1
/* definition for interpreting CompletionStatus values */
#define EXT_DEF_LB_COMPLETE 0x4000
#define EXT_DEF_LB_PARAM_ERR 0x4006
#define EXT_DEF_LB_LOOP_DOWN 0x400b
#define EXT_DEF_LB_CMD_ERROR 0x400c
/* port type */
#define EXT_DEF_INITIATOR_DEV 0x1
#define EXT_DEF_TARGET_DEV 0x2
#define EXT_DEF_TAPE_DEV 0x4
#define EXT_DEF_FABRIC_DEV 0x8
/* HBA port state */
#define EXT_DEF_HBA_OK 0
#define EXT_DEF_HBA_SUSPENDED 1
#define EXT_DEF_HBA_LOOP_DOWN 2
/* Connection mode */
#define EXT_DEF_UNKNOWN_MODE 0
#define EXT_DEF_P2P_MODE 1
#define EXT_DEF_LOOP_MODE 2
#define EXT_DEF_FL_MODE 3
#define EXT_DEF_N_MODE 4
#define EXT_DEF_USE_NODE_NAME 1
#define EXT_DEF_USE_PORT_NAME 2
/* FC4 type values */
#define EXT_DEF_FC4_TYPE_SCSI 0x1
#define EXT_DEF_FC4_TYPE_IP 0x2
#define EXT_DEF_FC4_TYPE_SCTP 0x4
#define EXT_DEF_FC4_TYPE_VI 0x8
/* IIDMA rate values */
#define IIDMA_RATE_1GB 0x0
#define IIDMA_RATE_2GB 0x1
#define IIDMA_RATE_4GB 0x3
#define IIDMA_RATE_8GB 0x4
#define IIDMA_RATE_10GB 0x13
#define IIDMA_RATE_UNKNOWN 0xffff
/* IIDMA Mode values */
#define IIDMA_MODE_0 0
#define IIDMA_MODE_1 1
#define IIDMA_MODE_2 2
#define IIDMA_MODE_3 3
/* Port Speed values */
#define EXT_DEF_PORTSPEED_UNKNOWN 0x0
#define EXT_DEF_PORTSPEED_1GBIT 0x1
#define EXT_DEF_PORTSPEED_2GBIT 0x2
#define EXT_DEF_PORTSPEED_4GBIT 0x4
#define EXT_DEF_PORTSPEED_8GBIT 0x8
#define EXT_DEF_PORTSPEED_10GBIT 0x10
typedef struct _EXT_DISC_PORT {
typedef struct _EXT_DISC_TARGET {
/* The following command is not supported */
typedef struct _EXT_DISC_LUN { /* n/a for nt */
/* SCSI address */
typedef struct _EXT_SCSI_ADDR {
/* Fibre Channel address */
typedef struct _EXT_FC_ADDR {
union {
} FcAddr;
#define EXT_DEF_TYPE_WWNN 1
#define EXT_DEF_TYPE_WWPN 2
#define EXT_DEF_TYPE_PORTID 3
#define EXT_DEF_TYPE_FABRIC 4
/* Destination address */
typedef struct _EXT_DEST_ADDR {
union {
struct {
} ScsiAddr;
} DestAddr;
#define EXT_DEF_DESTTYPE_WWNN 1
#define EXT_DEF_DESTTYPE_WWPN 2
#define EXT_DEF_DESTTYPE_PORTID 3
#define EXT_DEF_DESTTYPE_FABRIC 4
#define EXT_DEF_DESTTYPE_SCSI 5
/* Statistic */
typedef struct _EXT_HBA_PORT_STAT {
/* Driver property */
typedef struct _EXT_DRIVER {
/* Firmware property */
typedef struct _EXT_FW {
typedef struct _EXT_CHIP {
/* CNA properties */
typedef struct _EXT_CNA_PORT {
/* Fabric Parameters */
#define EXT_DEF_MAC_ADDR_MODE_FPMA 0x8000
/* Request Buffer for RNID */
typedef struct _EXT_RNID_REQ {
#define EXT_DEF_RNID_DFORMAT_NONE 0
#define EXT_DEF_RNID_DFORMAT_TOPO_DISC 0xDF
/* Request Buffer for Set RNID */
typedef struct _EXT_SET_RNID_REQ {
/* RNID definition and data struct */
#define SEND_RNID_RSP_SIZE 72
typedef struct _RNID_DATA
{
/* SCSI pass-through */
typedef struct _EXT_SCSI_PASSTHRU {
/* FC SCSI pass-through */
typedef struct _EXT_FC_SCSI_PASSTHRU {
/* SCSI pass-through direction */
#define EXT_DEF_SCSI_PASSTHRU_DATA_IN 1
#define EXT_DEF_SCSI_PASSTHRU_DATA_OUT 2
/* EXT_REG_AEN Request struct */
typedef struct _EXT_REG_AEN {
/* EXT_GET_AEN Response struct */
typedef struct _EXT_ASYNC_EVENT {
union {
struct {
} RSCN;
} Payload;
/* Asynchronous Event Codes */
#define EXT_DEF_LIP_OCCURRED 0x8010
#define EXT_DEF_LINK_UP 0x8011
#define EXT_DEF_LINK_DOWN 0x8012
#define EXT_DEF_LIP_RESET 0x8013
#define EXT_DEF_RSCN 0x8015
#define EXT_DEF_DEVICE_UPDATE 0x8014
/* LED state information */
#define EXT_DEF_GRN_BLINK_OFF 0x00
#define EXT_DEF_GRN_BLINK_ON 0x01
typedef struct _EXT_BEACON_CONTROL {
/* Required # of entries in the queue buffer allocated. */
/*
* LUN BitMask structure definition, array of 8bit bytes,
* 1 bit per lun. When bit == 1, the lun is masked.
* Most significant bit of mask[0] is lun 0.
* Least significant bit of mask[0] is lun 7.
*/
typedef struct _EXT_LUN_BIT_MASK {
#if ((EXT_DEF_NON_SCSI3_MAX_LUN & 0x7) == 0)
#else
#endif
/* Device type to get for EXT_SC_GET_PORT_SUMMARY */
#define EXT_DEF_GET_KNOWN_DEVICE 0x1
#define EXT_DEF_GET_VISIBLE_DEVICE 0x2
#define EXT_DEF_GET_HIDDEN_DEVICE 0x4
#define EXT_DEF_GET_FABRIC_DEVICE 0x8
#define EXT_DEF_GET_LOOP_DEVICE 0x10
/* Each entry in device database */
typedef struct _EXT_DEVICEDATAENTRY
{
#define EXT_DEF_EXTERNAL_LUN_COUNT 2048
/* Structure as used in the IOCTL. */
typedef struct _EXT_EXTERNAL_LUN_BITMASK_ENTRY
{
/* Structure as it is stored in the NT registry */
typedef struct _LUN_BITMASK_LIST
{
/* Device database information */
typedef struct _EXT_DEVICEDATA
{
/* returned in list. */
/* Swap Target Device Data structure */
typedef struct _EXT_SWAPTARGETDEVICE
{
#define EXT_DEF_LUN_BITMASK_LIST_MIN_ENTRIES 1
#define EXT_DEF_LUN_BITMASK_LIST_MAX_ENTRIES 256
#ifdef _WIN64
#define EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE 32
#else
#define EXT_DEF_LUN_BITMASK_LIST_HEADER_SIZE \
#endif
#define EXT_DEF_LUN_BITMASK_LIST_MIN_SIZE \
(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
#define EXT_DEF_LUN_BITMASK_LIST_MAX_SIZE \
(sizeof (EXT_EXTERNAL_LUN_BITMASK_ENTRY) * \
/*
* LUN mask bit manipulation macros
*
* P = Pointer to an EXT_LUN_BIT_MASK union.
* L = LUN number.
*/
#define EXT_IS_LUN_BIT_SET(P, L) \
#define EXT_SET_LUN_BIT(P, L) \
#define EXT_CLR_LUN_BIT(P, L) \
typedef struct _EXT_PORT_PARAM {
#define EXT_IIDMA_MODE_GET 0
#define EXT_IIDMA_MODE_SET 1
/*
* PCI header structure definitions.
*/
typedef struct _PCI_HEADER_T {
/*
* PCI data structure definitions.
*/
typedef struct _PCI_DATA_T {
} PCI_DATA_T, *PPCI_DATA_T;
/*
*/
#define MENLO_RESET_FLAG_ENABLE_DIAG_FW 1
typedef struct _EXT_MENLO_RESET {
typedef struct _EXT_MENLO_GET_FW_VERSION {
/* it must be an fw op */
typedef struct _EXT_MENLO_UPDATE_FW {
#define CONFIG_PARAM_ID_RESERVED 1
#define CONFIG_PARAM_ID_UIF 2
#define CONFIG_PARAM_ID_FCOE_COS 3
#define CONFIG_PARAM_ID_PAUSE_TYPE 4
#define CONFIG_PARAM_ID_TIMEOUTS 5
/*
* InfoContext defines for INFO_DATA_TYPE_LOG_DATA
*/
#define IC_LOG_DATA_LOG_ID_DEBUG_LOG 0
#define IC_LOG_DATA_LOG_ID_LEARN_LOG 1
#define IC_LOG_DATA_LOG_ID_FC_ACL_INGRESS_LOG 2
#define IC_LOG_DATA_LOG_ID_FC_ACL_EGRESS_LOG 3
#define IC_LOG_DATA_LOG_ID_MESSAGE_TRANSMIT_LOG 6
#define IC_LOG_DATA_LOG_ID_MESSAGE_RECEIVE_LOG 7
#define IC_LOG_DATA_LOG_ID_LINK_EVENT_LOG 8
#define IC_LOG_DATA_LOG_ID_DCX_LOG 9
/*
* InfoContext defines for INFO_DATA_TYPE_PORT_STATISTICS
*/
#define IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT0 2
#define IC_PORT_STATISTICS_PORT_NUMBER_NSL_PORT1 3
#define IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT0 4
#define IC_PORT_STATISTICS_PORT_NUMBER_FC_PORT1 5
/*
* InfoContext defines for INFO_DATA_TYPE_LIF_STATISTICS
*/
#define IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT0 2
#define IC_LIF_STATISTICS_LIF_NUMBER_FC_PORT1 3
#define IC_LIF_STATISTICS_LIF_NUMBER_CPU 6
typedef struct _EXT_MENLO_ACCESS_PARAMETERS {
union {
struct {
} MenloMemory; /* For Read & Write Menlo Memory */
struct {
} MenloConfig; /* For change Configuration */
struct {
} MenloInfo; /* For fetch Menlo Info */
} ap;
#define INFO_DATA_TYPE_PORT_STAT_ETH_TBC 0x194
#define INFO_DATA_TYPE_PORT_STAT_FC_TBC 0xC0
#define INFO_DATA_TYPE_LIF_STAT_TBC 0x40
#define INFO_DATA_TYPE_ASIC_STAT_TBC 0x5F8
#define INFO_DATA_TYPE_CONFIG_TBC 0x140
#define MENLO_OP_READ_MEM 0 /* Read Menlo Memory */
/* Statistics, Configuration) */
typedef struct _EXT_MENLO_MANAGE_INFO {
#define MENLO_FC_CHECKSUM_FAILURE 0x01
#define MENLO_FC_INVALID_LENGTH 0x02
#define MENLO_FC_INVALID_ADDRESS 0x04
#define MENLO_FC_INVALID_CONFIG_ID_TYPE 0x05
#define MENLO_FC_INVALID_CONFIG_DATA 0x06
#define MENLO_FC_INVALID_INFO_CONTEXT 0x07
typedef struct _EXT_MENLO_MGT {
union {
} sp;
/*
* vport enum definations
*/
typedef enum vport_options {
EXT_VPO_PERSISTENT = 1,
EXT_VPO_QOS_BW = 2,
/*
* vport struct definations
*/
#define MAX_DEV_PATH 256
#define MAX_VP_ID 256
#define EXT_OLD_VPORT_ID_CNT_SIZE 260
typedef struct _EXT_VPORT_ID_CNT {
typedef struct _EXT_VPORT_PARAMS {
typedef struct _EXT_VPORT_INFO {
#ifdef __cplusplus
}
#endif
#endif /* _EXIOCT_H */