emlxs_dfc.h revision 93c20f2609342fd05f6625f16dfcb9348e7977f2
/*
* 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 2008 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>
#ifndef DFC_SUPPORT
#define DFC_REV 0
#else
#define DFC_REV 1
#ifdef DHCHAP_SUPPORT
#define DFC_REV 2
#endif /* DHCHAP_SUPPORT */
#ifdef NPIV_SUPPORT
#define DFC_REV 3
#endif /* NPIV_SUPPORT */
#endif /* DFC_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;
/* 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_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
/* 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
/* invalid */
/* misaligned */
/* NULL */
/* small */
/* big */
/* occurred */
/* resources */
/* resources */
/* NPIV_SUPPORT */
/* DHCHAP_SUPPORT */
/* MENLO_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
} 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
/* ElsRspCompleted */
/* ElsCmdReceived */
/* ElsPlogiReceived + ... */
/* CtRspCompleted */
/* CtCmdReceived */
/* IpBcastCompleted */
/* IpBcastReceived */
#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 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 */