emlxs_dfc.h revision 8f23e9fa8abcb5857661066b954e63400d589b65
/*
* 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
* 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 (c) 2004-2011 Emulex. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _EMLXS_DFC_H
#define _EMLXS_DFC_H
#ifdef __cplusplus
extern "C" {
#endif
#include <emlxs_fcio.h>
#define DFC_REV 1
#ifdef DHCHAP_SUPPORT
#endif /* DHCHAP_SUPPORT */
typedef struct dfc
{
void *buf1;
void *buf2;
void *buf3;
void *buf4;
} dfc_t;
/*
* 32 bit varient of dfc_t to be used only in the driver and NOT applications
*/
typedef struct dfc32
{
} dfc32_t;
#ifdef SAN_DIAG_SUPPORT
typedef struct sd_bucket_info
{
#endif
/* Valid dfc.dfc_cmd codes (DFC_REV=1) */
#define EMLXS_GET_HBAINFO 1
#define EMLXS_GET_IOINFO 2
#define EMLXS_GET_LINKINFO 3
#define EMLXS_GET_NODEINFO 4
#define EMLXS_GET_EVENTINFO 5
#define EMLXS_GET_REV 6
#define EMLXS_GET_DUMPREGION 7
#define EMLXS_GET_HBASTATS 8
#define EMLXS_GET_DRVSTATS 9
/* FCIO_SUPPORT */
#define EMLXS_FCIO_CMD 10
#define EMLXS_GET_CFG 15
#define EMLXS_SET_CFG 16
#define EMLXS_GET_EVENT 17
#define EMLXS_SET_EVENT 18
#define EMLXS_SEND_MBOX 20
#define EMLXS_SEND_ELS 21
#define EMLXS_SEND_CT 22
#define EMLXS_SEND_CT_RSP 23
#define EMLXS_SEND_MENLO 24
#define EMLXS_SEND_SCSI 25
#define EMLXS_SET_DIAG 30
#define EMLXS_LOOPBACK_MODE 31
#define EMLXS_LOOPBACK_TEST 32
#define EMLXS_RESET_PORT 33
#define EMLXS_READ_PCI 40
#define EMLXS_WRITE_PCI 41
#define EMLXS_WRITE_FLASH 42
#define EMLXS_READ_FLASH 43
#define EMLXS_READ_MEM 44
#define EMLXS_WRITE_MEM 45
#define EMLXS_WRITE_CTLREG 46
#define EMLXS_READ_CTLREG 47
/* NPIV_SUPPORT */
#define EMLXS_CREATE_VPORT 50
#define EMLXS_DESTROY_VPORT 51
#define EMLXS_GET_VPORTINFO 52
#define EMLXS_NPIV_RESOURCE 53
#define EMLXS_NPIV_TEST 54
/* DHCHAP_SUPPORT */
#define EMLXS_INIT_AUTH 60
#define EMLXS_GET_AUTH_CFG 61
#define EMLXS_SET_AUTH_CFG 62
#define EMLXS_GET_AUTH_PASSWORD 63
#define EMLXS_SET_AUTH_PASSWORD 64
#define EMLXS_GET_AUTH_STATUS 65
#define EMLXS_GET_AUTH_CFG_TABLE 66
#define EMLXS_GET_AUTH_KEY_TABLE 67
/* SFCT_SUPPORT */
#define EMLXS_GET_FCTSTAT 70
#define EMLXS_GET_PERSIST_LINKDOWN 71
#define EMLXS_SET_PERSIST_LINKDOWN 72
/* FCOE_SUPPORT */
#define EMLXS_GET_FCOE_FCFLIST 80
#define EMLXS_SEND_MBOX4 81
#define EMLXS_RD_BE_FCF 82
#define EMLXS_SET_BE_DCBX 83
#define EMLXS_GET_BE_DCBX 84
#define EMLXS_GET_QOS 85
/* SAN DIAG SUPPORT */
#define EMLXS_SD_SET_BUCKET 100
#define EMLXS_SD_START_DATA_COLLECTION 101
#define EMLXS_SD_STOP_DATA_COLLECTION 102
#define EMLXS_SD_RESET_DATA_COLLECTION 103
#define EMLXS_SD_GET_DATA 104
#define EMLXS_SD_DESTROY_BUCKET 105
#define EMLXS_SD_GET_BUCKET 106
#define EMLXS_SD_SET_EVENT 107
#define EMLXS_SD_GET_EVENT 108
/* EMLXS_SET_AUTH_CFG - flags */
#define EMLXS_AUTH_CFG_ADD 0
#define EMLXS_AUTH_CFG_DELETE 1
/* ERROR Codes */
#define DFC_ERRNO_START 0x200
#define DFC_SUCCESS 0
/* NPIV_SUPPORT */
/* DHCHAP_SUPPORT */
/* MENLO_SUPPORT */
/* SAN_DIAG_SUPPORT */
typedef struct dfc_hbainfo
{
char vpd_serial_num[32];
char vpd_part_num[32];
char vpd_port_num[20];
char vpd_eng_change[32];
char vpd_manufacturer[80];
char vpd_model[80];
char vpd_model_desc[256];
char vpd_prog_types[256];
char vpd_id[80];
#define HBA_FLAG_SBUS 0x00000001
#define HBA_FLAG_OFFLINE 0x00000002
char wwnn[8];
char snn[256];
char wwpn[8];
char spn[256];
char fw_version[256];
char fcode_version[256];
char boot_version[256];
char kern_name[32];
char stub_name[32];
char sli1_name[32];
char sli2_name[32];
char sli3_name[32];
char sli4_name[32];
char drv_label[64];
char drv_module[64];
char drv_name[32];
char drv_version[64];
char drv_revision[64];
char hostname[32];
char os_devname[256];
typedef struct fc_class
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} fc_class_t;
typedef struct fc_csp
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
union
{
struct
{
} nPort;
} w2;
} fc_csp_t;
typedef struct fc_sparm
{
} fc_sparm_t;
typedef struct dfc_node
{
#define PORT_FLAG_FCP_TARGET 0x00000001
#define PORT_FLAG_FCP_INI 0x00000002
#define PORT_FLAG_FCP2 0x00000004
#define PORT_FLAG_IP 0x00000008
#define PORT_FLAG_VPORT 0x00000010
#define PORT_FLAG_DFC_STATE_VALID 0x00000020
#define PORT_FLAG_DFC_STATE 0xF0000000
} dfc_node_t;
typedef struct dfc_hbastats
{
typedef struct dfc_drvstats
{
#define RESV_INTR 7
#define ERATT_INTR 6
#define MBATT_INTR 5
#define LKATT_INTR 4
#define R3ATT_INTR 3
#define R2ATT_INTR 2
#define R1ATT_INTR 1
#define R0ATT_INTR 0
#if (DFC_REV >= 2)
#endif
#ifdef SFCT_SUPPORT
/*
* FctP2IOXcnt will count IOs by their fcpDL. Counters
* are for buckets of various power of 2 sizes.
* Bucket 0 < 512 > 0
* Bucket 1 >= 512 < 1024
* Bucket 2 >= 1024 < 2048
* Bucket 3 >= 2048 < 4096
* Bucket 4 >= 4096 < 8192
* Bucket 5 >= 8192 < 16K
* Bucket 6 >= 16K < 32K
* Bucket 7 >= 32K < 64K
* Bucket 8 >= 64K < 128K
* Bucket 9 >= 128K < 256K
* Bucket 10 >= 256K < 512K
* Bucket 11 >= 512K < 1MB
* Bucket 12 >= 1MB < 2MB
* Bucket 13 >= 2MB < 4MB
* Bucket 14 >= 4MB < 8MB
* Bucket 15 >= 8MB
*/
#define DFC_TGTPORT_STAT_VERSION 1
#define MAX_TGTPORT_IOCNT 16
typedef struct dfc_tgtport_stat
{
/* IO counters */
/* IOCB handling counters */
/* Fct event counters */
/* Additional info */
#endif /* SFCT_SUPPORT */
/* DFC_REV >= 3 */
typedef struct dfc_vportinfo
{
#define VPORT_CONFIG 0x00000001
#define VPORT_ENABLED 0x00000002
#define VPORT_BOUND 0x00000004
#define VPORT_IP 0x00000008
char snn[256];
char spn[256];
#ifdef __cplusplus
}
#endif
#endif /* _EMLXS_DFC_H */