/*
* 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_IOCB_H
#define _EMLXS_IOCB_H
#ifdef __cplusplus
extern "C" {
#endif
/* ==== IOCB Commands ==== */
/* LP3000 gasket IOCB Command Set */
/* SLI_2 IOCB Command Set */
/*
* Begin Structure Definitions for IOCB Commands
*/
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
/* statAction FBSY reason codes */
/* statAction PBSY action codes */
/* statRsn LS_RJT reason codes defined in LS_RJT structure */
/* statRsn P_BSY reason codes */
/* statRsn BA_RJT reason codes */
/* LS_RJT reason explanation defined in LS_RJT structure */
/* BA_RJT reason explanation */
/* Local Reject errors */
/* RESERVED 0x09 */
/* RESERVED 0x0A */
/* RESERVED 0x0C */
/* RESERVED 0x10 */
/* RESERVED 0x12 */
/* RESERVED 0x26 */
/* RESERVED 0x27 */
/* RESERVED 0x2A */
/* RESERVED 0x2F */
/* RESERVED 0x32 - 0x3F */
/* RESERVED 0x46 - 0xFF */
/* Driver defined */
} PARM_ERR;
typedef union
{
struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} hcsw;
} WORD5;
/* IOCB Command template for a generic response */
typedef struct
{
} GENERIC_RSP;
/* IOCB Command template for XMIT / XMIT_BCAST / RCV_SEQUENCE / XMIT_ELS */
typedef struct
{
/* IOCB Command template for ELS_REQUEST */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} ELS_REQUEST;
/* IOCB Command template for RCV_ELS_REQ */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} RCV_ELS_REQ;
/* IOCB Command template for ABORT / CLOSE_XRI */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} AC_XRI;
/* IOCB Command template for GET_RPI */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} GET_RPI;
/* IOCB Command template for all FCP Initiator commands */
typedef struct
{
} FCPI_FIELDS;
/* IOCB Command template for all FCP Target commands */
typedef struct
{
} FCPT_FIELDS;
/* SLI-2 IOCB structure definitions */
/* IOCB Command template for 64 bit XMIT / XMIT_BCAST / XMIT_ELS */
typedef struct
{
/* IOCB Command template for 64 bit RCV_SEQUENCE64 */
typedef struct
{
/* IOCB Command template for ELS_REQUEST64 */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
/* IOCB Command template for ASYNC_STATUS */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
} ASYNC_STATUS;
/* IOCB Command template for QUE_RING_LIST64 */
typedef struct
{
/* IOCB Command template for GEN_REQUEST64 */
typedef struct
{
/* IOCB Command template for RCV_ELS_REQ64 */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
/* IOCB Command template for all 64 bit FCP Initiator commands */
typedef struct
{
/* IOCB Command template for all 64 bit FCP Target commands */
typedef struct
{
/* IOCB Command template for all 64 bit FCP Target commands */
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif /* EMLXS_BIG_ENDIAN */
#ifdef EMLXS_LITTLE_ENDIAN
#endif /* EMLXS_LITTLE_ENDIAN */
} AUTO_TRSP;
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
/*
* IOCB Command Extension template for
* CMD_RCV_ELS64_CX (0xB7) or CMD_RCV_SEQ64_CX (0xB5)
*/
typedef struct
{
#ifdef EMLXS_BIG_ENDIAN
#endif
#ifdef EMLXS_LITTLE_ENDIAN
#endif
typedef volatile struct emlxs_iocb
{ /* IOCB structure */
union
{
/* template */
/* template */
/* template */
/* template */
/* SLI-2 structures */
/* cont BDE_64s */
/* template */
/* template */
/* template */
/* Initiator template */
/* template */
/* template */
} un;
union
{
struct
{
#ifdef EMLXS_BIG_ENDIAN
/* word6 */
/* word6 */
#endif
#ifdef EMLXS_LITTLE_ENDIAN
/* word6 */
/* word6 */
#endif
} t1;
struct
{
#ifdef EMLXS_BIG_ENDIAN
/* word6 */
/* word6 */
/* word6 */
#endif
#ifdef EMLXS_LITTLE_ENDIAN
/* word6 */
/* word6 */
/* word6 */
#endif
} t2;
} un1;
union
{
struct
{
#ifdef EMLXS_BIG_ENDIAN
/* word 7 */
#endif
#ifdef EMLXS_LITTLE_ENDIAN
/* word 7 */
#endif
} t1;
struct
{
#ifdef EMLXS_BIG_ENDIAN
/* word 7 */
#endif
#ifdef EMLXS_LITTLE_ENDIAN
/* word 7 */
#endif
} t2;
} un2;
/* 32 bytes at this point */
/* SLI4 */
union
{
/* for SLI-3 */
} unsli3;
/* 128 bytes at this point */
/* FCP ELS cmds - ulpRsvByte */
/* Special error codes */
} emlxs_iocb_t;
typedef struct emlxs_iocbq
{
#ifdef __cplusplus
}
#endif
#endif /* _EMLXS_IOCB_H */