162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *  Copyright (c) 2000-2008 LSI Corporation.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci *           Name:  mpi_fc.h
762306a36Sopenharmony_ci *          Title:  MPI Fibre Channel messages and structures
862306a36Sopenharmony_ci *  Creation Date:  June 12, 2000
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci *    mpi_fc.h Version:  01.05.01
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci *  Version History
1362306a36Sopenharmony_ci *  ---------------
1462306a36Sopenharmony_ci *
1562306a36Sopenharmony_ci *  Date      Version   Description
1662306a36Sopenharmony_ci *  --------  --------  ------------------------------------------------------
1762306a36Sopenharmony_ci *  05-08-00  00.10.01  Original release for 0.10 spec dated 4/26/2000.
1862306a36Sopenharmony_ci *  06-06-00  01.00.01  Update version number for 1.0 release.
1962306a36Sopenharmony_ci *  06-12-00  01.00.02  Added _MSG_FC_ABORT_REPLY structure.
2062306a36Sopenharmony_ci *  11-02-00  01.01.01  Original release for post 1.0 work
2162306a36Sopenharmony_ci *  12-04-00  01.01.02  Added messages for Common Transport Send and
2262306a36Sopenharmony_ci *                      Primitive Send.
2362306a36Sopenharmony_ci *  01-09-01  01.01.03  Modifed some of the new flags to have an MPI prefix
2462306a36Sopenharmony_ci *                      and modified the FcPrimitiveSend flags.
2562306a36Sopenharmony_ci *  01-25-01  01.01.04  Move InitiatorIndex in LinkServiceRsp reply to a larger
2662306a36Sopenharmony_ci *                      field.
2762306a36Sopenharmony_ci *                      Added FC_ABORT_TYPE_CT_SEND_REQUEST and
2862306a36Sopenharmony_ci *                      FC_ABORT_TYPE_EXLINKSEND_REQUEST for FcAbort request.
2962306a36Sopenharmony_ci *                      Added MPI_FC_PRIM_SEND_FLAGS_STOP_SEND.
3062306a36Sopenharmony_ci *  02-20-01  01.01.05  Started using MPI_POINTER.
3162306a36Sopenharmony_ci *  03-27-01  01.01.06  Added Flags field to MSG_LINK_SERVICE_BUFFER_POST_REPLY
3262306a36Sopenharmony_ci *                      and defined MPI_LS_BUF_POST_REPLY_FLAG_NO_RSP_NEEDED.
3362306a36Sopenharmony_ci *                      Added MPI_FC_PRIM_SEND_FLAGS_RESET_LINK define.
3462306a36Sopenharmony_ci *                      Added structure offset comments.
3562306a36Sopenharmony_ci *  04-09-01  01.01.07  Added RspLength field to MSG_LINK_SERVICE_RSP_REQUEST.
3662306a36Sopenharmony_ci *  08-08-01  01.02.01  Original release for v1.2 work.
3762306a36Sopenharmony_ci *  09-28-01  01.02.02  Change name of reserved field in
3862306a36Sopenharmony_ci *                      MSG_LINK_SERVICE_RSP_REPLY.
3962306a36Sopenharmony_ci *  05-31-02  01.02.03  Adding AliasIndex to FC Direct Access requests.
4062306a36Sopenharmony_ci *  01-16-04  01.02.04  Added define for MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK.
4162306a36Sopenharmony_ci *  05-11-04  01.03.01  Original release for MPI v1.3.
4262306a36Sopenharmony_ci *  08-19-04  01.05.01  Original release for MPI v1.5.
4362306a36Sopenharmony_ci *  --------------------------------------------------------------------------
4462306a36Sopenharmony_ci */
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#ifndef MPI_FC_H
4762306a36Sopenharmony_ci#define MPI_FC_H
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/*****************************************************************************
5162306a36Sopenharmony_ci*
5262306a36Sopenharmony_ci*        F C    D i r e c t    A c c e s s     M e s s a g e s
5362306a36Sopenharmony_ci*
5462306a36Sopenharmony_ci*****************************************************************************/
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci/****************************************************************************/
5762306a36Sopenharmony_ci/* Link Service Buffer Post messages                                        */
5862306a36Sopenharmony_ci/****************************************************************************/
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_citypedef struct _MSG_LINK_SERVICE_BUFFER_POST_REQUEST
6162306a36Sopenharmony_ci{
6262306a36Sopenharmony_ci    U8                      BufferPostFlags;    /* 00h */
6362306a36Sopenharmony_ci    U8                      BufferCount;        /* 01h */
6462306a36Sopenharmony_ci    U8                      ChainOffset;        /* 02h */
6562306a36Sopenharmony_ci    U8                      Function;           /* 03h */
6662306a36Sopenharmony_ci    U16                     Reserved;           /* 04h */
6762306a36Sopenharmony_ci    U8                      Reserved1;          /* 06h */
6862306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
6962306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
7062306a36Sopenharmony_ci    SGE_TRANS_SIMPLE_UNION  SGL;
7162306a36Sopenharmony_ci} MSG_LINK_SERVICE_BUFFER_POST_REQUEST,
7262306a36Sopenharmony_ci MPI_POINTER PTR_MSG_LINK_SERVICE_BUFFER_POST_REQUEST,
7362306a36Sopenharmony_ci  LinkServiceBufferPostRequest_t, MPI_POINTER pLinkServiceBufferPostRequest_t;
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci#define LINK_SERVICE_BUFFER_POST_FLAGS_PORT_MASK (0x01)
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_citypedef struct _WWNFORMAT
7862306a36Sopenharmony_ci{
7962306a36Sopenharmony_ci    U32                     PortNameHigh;       /* 00h */
8062306a36Sopenharmony_ci    U32                     PortNameLow;        /* 04h */
8162306a36Sopenharmony_ci    U32                     NodeNameHigh;       /* 08h */
8262306a36Sopenharmony_ci    U32                     NodeNameLow;        /* 0Ch */
8362306a36Sopenharmony_ci} WWNFORMAT,
8462306a36Sopenharmony_ci  WwnFormat_t;
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci/* Link Service Buffer Post Reply */
8762306a36Sopenharmony_citypedef struct _MSG_LINK_SERVICE_BUFFER_POST_REPLY
8862306a36Sopenharmony_ci{
8962306a36Sopenharmony_ci    U8                      Flags;              /* 00h */
9062306a36Sopenharmony_ci    U8                      Reserved;           /* 01h */
9162306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
9262306a36Sopenharmony_ci    U8                      Function;           /* 03h */
9362306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
9462306a36Sopenharmony_ci    U8                      PortNumber;         /* 06h */
9562306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
9662306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
9762306a36Sopenharmony_ci    U16                     Reserved2;          /* 0Ch */
9862306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
9962306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
10062306a36Sopenharmony_ci    U32                     TransferLength;     /* 14h */
10162306a36Sopenharmony_ci    U32                     TransactionContext; /* 18h */
10262306a36Sopenharmony_ci    U32                     Rctl_Did;           /* 1Ch */
10362306a36Sopenharmony_ci    U32                     Csctl_Sid;          /* 20h */
10462306a36Sopenharmony_ci    U32                     Type_Fctl;          /* 24h */
10562306a36Sopenharmony_ci    U16                     SeqCnt;             /* 28h */
10662306a36Sopenharmony_ci    U8                      Dfctl;              /* 2Ah */
10762306a36Sopenharmony_ci    U8                      SeqId;              /* 2Bh */
10862306a36Sopenharmony_ci    U16                     Rxid;               /* 2Ch */
10962306a36Sopenharmony_ci    U16                     Oxid;               /* 2Eh */
11062306a36Sopenharmony_ci    U32                     Parameter;          /* 30h */
11162306a36Sopenharmony_ci    WWNFORMAT               Wwn;                /* 34h */
11262306a36Sopenharmony_ci} MSG_LINK_SERVICE_BUFFER_POST_REPLY, MPI_POINTER PTR_MSG_LINK_SERVICE_BUFFER_POST_REPLY,
11362306a36Sopenharmony_ci  LinkServiceBufferPostReply_t, MPI_POINTER pLinkServiceBufferPostReply_t;
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci#define MPI_LS_BUF_POST_REPLY_FLAG_NO_RSP_NEEDED    (0x80)
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define MPI_FC_DID_MASK                             (0x00FFFFFF)
11862306a36Sopenharmony_ci#define MPI_FC_DID_SHIFT                            (0)
11962306a36Sopenharmony_ci#define MPI_FC_RCTL_MASK                            (0xFF000000)
12062306a36Sopenharmony_ci#define MPI_FC_RCTL_SHIFT                           (24)
12162306a36Sopenharmony_ci#define MPI_FC_SID_MASK                             (0x00FFFFFF)
12262306a36Sopenharmony_ci#define MPI_FC_SID_SHIFT                            (0)
12362306a36Sopenharmony_ci#define MPI_FC_CSCTL_MASK                           (0xFF000000)
12462306a36Sopenharmony_ci#define MPI_FC_CSCTL_SHIFT                          (24)
12562306a36Sopenharmony_ci#define MPI_FC_FCTL_MASK                            (0x00FFFFFF)
12662306a36Sopenharmony_ci#define MPI_FC_FCTL_SHIFT                           (0)
12762306a36Sopenharmony_ci#define MPI_FC_TYPE_MASK                            (0xFF000000)
12862306a36Sopenharmony_ci#define MPI_FC_TYPE_SHIFT                           (24)
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci/* obsolete name for the above */
13162306a36Sopenharmony_ci#define FCP_TARGET_DID_MASK                         (0x00FFFFFF)
13262306a36Sopenharmony_ci#define FCP_TARGET_DID_SHIFT                        (0)
13362306a36Sopenharmony_ci#define FCP_TARGET_RCTL_MASK                        (0xFF000000)
13462306a36Sopenharmony_ci#define FCP_TARGET_RCTL_SHIFT                       (24)
13562306a36Sopenharmony_ci#define FCP_TARGET_SID_MASK                         (0x00FFFFFF)
13662306a36Sopenharmony_ci#define FCP_TARGET_SID_SHIFT                        (0)
13762306a36Sopenharmony_ci#define FCP_TARGET_CSCTL_MASK                       (0xFF000000)
13862306a36Sopenharmony_ci#define FCP_TARGET_CSCTL_SHIFT                      (24)
13962306a36Sopenharmony_ci#define FCP_TARGET_FCTL_MASK                        (0x00FFFFFF)
14062306a36Sopenharmony_ci#define FCP_TARGET_FCTL_SHIFT                       (0)
14162306a36Sopenharmony_ci#define FCP_TARGET_TYPE_MASK                        (0xFF000000)
14262306a36Sopenharmony_ci#define FCP_TARGET_TYPE_SHIFT                       (24)
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci/****************************************************************************/
14662306a36Sopenharmony_ci/* Link Service Response messages                                           */
14762306a36Sopenharmony_ci/****************************************************************************/
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_citypedef struct _MSG_LINK_SERVICE_RSP_REQUEST
15062306a36Sopenharmony_ci{
15162306a36Sopenharmony_ci    U8                      RspFlags;           /* 00h */
15262306a36Sopenharmony_ci    U8                      RspLength;          /* 01h */
15362306a36Sopenharmony_ci    U8                      ChainOffset;        /* 02h */
15462306a36Sopenharmony_ci    U8                      Function;           /* 03h */
15562306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
15662306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
15762306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
15862306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
15962306a36Sopenharmony_ci    U32                     Rctl_Did;           /* 0Ch */
16062306a36Sopenharmony_ci    U32                     Csctl_Sid;          /* 10h */
16162306a36Sopenharmony_ci    U32                     Type_Fctl;          /* 14h */
16262306a36Sopenharmony_ci    U16                     SeqCnt;             /* 18h */
16362306a36Sopenharmony_ci    U8                      Dfctl;              /* 1Ah */
16462306a36Sopenharmony_ci    U8                      SeqId;              /* 1Bh */
16562306a36Sopenharmony_ci    U16                     Rxid;               /* 1Ch */
16662306a36Sopenharmony_ci    U16                     Oxid;               /* 1Eh */
16762306a36Sopenharmony_ci    U32                     Parameter;          /* 20h */
16862306a36Sopenharmony_ci    SGE_SIMPLE_UNION        SGL;                /* 24h */
16962306a36Sopenharmony_ci} MSG_LINK_SERVICE_RSP_REQUEST, MPI_POINTER PTR_MSG_LINK_SERVICE_RSP_REQUEST,
17062306a36Sopenharmony_ci  LinkServiceRspRequest_t, MPI_POINTER pLinkServiceRspRequest_t;
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci#define LINK_SERVICE_RSP_FLAGS_IMMEDIATE        (0x80)
17362306a36Sopenharmony_ci#define LINK_SERVICE_RSP_FLAGS_PORT_MASK        (0x01)
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci/* Link Service Response Reply  */
17762306a36Sopenharmony_citypedef struct _MSG_LINK_SERVICE_RSP_REPLY
17862306a36Sopenharmony_ci{
17962306a36Sopenharmony_ci    U16                     Reserved;           /* 00h */
18062306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
18162306a36Sopenharmony_ci    U8                      Function;           /* 03h */
18262306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
18362306a36Sopenharmony_ci    U8                      Reserved_0100_InitiatorIndex; /* 06h */ /* obsolete InitiatorIndex */
18462306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
18562306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
18662306a36Sopenharmony_ci    U16                     Reserved3;          /* 0Ch */
18762306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
18862306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
18962306a36Sopenharmony_ci    U32                     InitiatorIndex;     /* 14h */
19062306a36Sopenharmony_ci} MSG_LINK_SERVICE_RSP_REPLY, MPI_POINTER PTR_MSG_LINK_SERVICE_RSP_REPLY,
19162306a36Sopenharmony_ci  LinkServiceRspReply_t, MPI_POINTER pLinkServiceRspReply_t;
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci/****************************************************************************/
19562306a36Sopenharmony_ci/* Extended Link Service Send messages                                      */
19662306a36Sopenharmony_ci/****************************************************************************/
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_citypedef struct _MSG_EXLINK_SERVICE_SEND_REQUEST
19962306a36Sopenharmony_ci{
20062306a36Sopenharmony_ci    U8                      SendFlags;          /* 00h */
20162306a36Sopenharmony_ci    U8                      AliasIndex;         /* 01h */
20262306a36Sopenharmony_ci    U8                      ChainOffset;        /* 02h */
20362306a36Sopenharmony_ci    U8                      Function;           /* 03h */
20462306a36Sopenharmony_ci    U32                     MsgFlags_Did;       /* 04h */
20562306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
20662306a36Sopenharmony_ci    U32                     ElsCommandCode;     /* 0Ch */
20762306a36Sopenharmony_ci    SGE_SIMPLE_UNION        SGL;                /* 10h */
20862306a36Sopenharmony_ci} MSG_EXLINK_SERVICE_SEND_REQUEST, MPI_POINTER PTR_MSG_EXLINK_SERVICE_SEND_REQUEST,
20962306a36Sopenharmony_ci  ExLinkServiceSendRequest_t, MPI_POINTER pExLinkServiceSendRequest_t;
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci#define EX_LINK_SERVICE_SEND_DID_MASK           (0x00FFFFFF)
21262306a36Sopenharmony_ci#define EX_LINK_SERVICE_SEND_DID_SHIFT          (0)
21362306a36Sopenharmony_ci#define EX_LINK_SERVICE_SEND_MSGFLAGS_MASK      (0xFF000000)
21462306a36Sopenharmony_ci#define EX_LINK_SERVICE_SEND_MSGFLAGS_SHIFT     (24)
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci/* Extended Link Service Send Reply */
21862306a36Sopenharmony_citypedef struct _MSG_EXLINK_SERVICE_SEND_REPLY
21962306a36Sopenharmony_ci{
22062306a36Sopenharmony_ci    U8                      Reserved;           /* 00h */
22162306a36Sopenharmony_ci    U8                      AliasIndex;         /* 01h */
22262306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
22362306a36Sopenharmony_ci    U8                      Function;           /* 03h */
22462306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
22562306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
22662306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
22762306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
22862306a36Sopenharmony_ci    U16                     Reserved3;          /* 0Ch */
22962306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
23062306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
23162306a36Sopenharmony_ci    U32                     ResponseLength;     /* 14h */
23262306a36Sopenharmony_ci} MSG_EXLINK_SERVICE_SEND_REPLY, MPI_POINTER PTR_MSG_EXLINK_SERVICE_SEND_REPLY,
23362306a36Sopenharmony_ci  ExLinkServiceSendReply_t, MPI_POINTER pExLinkServiceSendReply_t;
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci/****************************************************************************/
23662306a36Sopenharmony_ci/* FC Abort messages                                                        */
23762306a36Sopenharmony_ci/****************************************************************************/
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_citypedef struct _MSG_FC_ABORT_REQUEST
24062306a36Sopenharmony_ci{
24162306a36Sopenharmony_ci    U8                      AbortFlags;                 /* 00h */
24262306a36Sopenharmony_ci    U8                      AbortType;                  /* 01h */
24362306a36Sopenharmony_ci    U8                      ChainOffset;                /* 02h */
24462306a36Sopenharmony_ci    U8                      Function;                   /* 03h */
24562306a36Sopenharmony_ci    U16                     Reserved1;                  /* 04h */
24662306a36Sopenharmony_ci    U8                      Reserved2;                  /* 06h */
24762306a36Sopenharmony_ci    U8                      MsgFlags;                   /* 07h */
24862306a36Sopenharmony_ci    U32                     MsgContext;                 /* 08h */
24962306a36Sopenharmony_ci    U32                     TransactionContextToAbort;  /* 0Ch */
25062306a36Sopenharmony_ci} MSG_FC_ABORT_REQUEST, MPI_POINTER PTR_MSG_FC_ABORT_REQUEST,
25162306a36Sopenharmony_ci  FcAbortRequest_t, MPI_POINTER pFcAbortRequest_t;
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci#define FC_ABORT_FLAG_PORT_MASK                 (0x01)
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci#define FC_ABORT_TYPE_ALL_FC_BUFFERS            (0x00)
25662306a36Sopenharmony_ci#define FC_ABORT_TYPE_EXACT_FC_BUFFER           (0x01)
25762306a36Sopenharmony_ci#define FC_ABORT_TYPE_CT_SEND_REQUEST           (0x02)
25862306a36Sopenharmony_ci#define FC_ABORT_TYPE_EXLINKSEND_REQUEST        (0x03)
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci/* FC Abort Reply */
26162306a36Sopenharmony_citypedef struct _MSG_FC_ABORT_REPLY
26262306a36Sopenharmony_ci{
26362306a36Sopenharmony_ci    U16                     Reserved;           /* 00h */
26462306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
26562306a36Sopenharmony_ci    U8                      Function;           /* 03h */
26662306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
26762306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
26862306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
26962306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
27062306a36Sopenharmony_ci    U16                     Reserved3;          /* 0Ch */
27162306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
27262306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
27362306a36Sopenharmony_ci} MSG_FC_ABORT_REPLY, MPI_POINTER PTR_MSG_FC_ABORT_REPLY,
27462306a36Sopenharmony_ci  FcAbortReply_t, MPI_POINTER pFcAbortReply_t;
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci/****************************************************************************/
27862306a36Sopenharmony_ci/* FC Common Transport Send messages                                        */
27962306a36Sopenharmony_ci/****************************************************************************/
28062306a36Sopenharmony_ci
28162306a36Sopenharmony_citypedef struct _MSG_FC_COMMON_TRANSPORT_SEND_REQUEST
28262306a36Sopenharmony_ci{
28362306a36Sopenharmony_ci    U8                      SendFlags;          /* 00h */
28462306a36Sopenharmony_ci    U8                      AliasIndex;         /* 01h */
28562306a36Sopenharmony_ci    U8                      ChainOffset;        /* 02h */
28662306a36Sopenharmony_ci    U8                      Function;           /* 03h */
28762306a36Sopenharmony_ci    U32                     MsgFlags_Did;       /* 04h */
28862306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
28962306a36Sopenharmony_ci    U16                     CTCommandCode;      /* 0Ch */
29062306a36Sopenharmony_ci    U8                      FsType;             /* 0Eh */
29162306a36Sopenharmony_ci    U8                      Reserved1;          /* 0Fh */
29262306a36Sopenharmony_ci    SGE_SIMPLE_UNION        SGL;                /* 10h */
29362306a36Sopenharmony_ci} MSG_FC_COMMON_TRANSPORT_SEND_REQUEST,
29462306a36Sopenharmony_ci MPI_POINTER PTR_MSG_FC_COMMON_TRANSPORT_SEND_REQUEST,
29562306a36Sopenharmony_ci  FcCommonTransportSendRequest_t, MPI_POINTER pFcCommonTransportSendRequest_t;
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci#define MPI_FC_CT_SEND_DID_MASK                 (0x00FFFFFF)
29862306a36Sopenharmony_ci#define MPI_FC_CT_SEND_DID_SHIFT                (0)
29962306a36Sopenharmony_ci#define MPI_FC_CT_SEND_MSGFLAGS_MASK            (0xFF000000)
30062306a36Sopenharmony_ci#define MPI_FC_CT_SEND_MSGFLAGS_SHIFT           (24)
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci/* FC Common Transport Send Reply */
30462306a36Sopenharmony_citypedef struct _MSG_FC_COMMON_TRANSPORT_SEND_REPLY
30562306a36Sopenharmony_ci{
30662306a36Sopenharmony_ci    U8                      Reserved;           /* 00h */
30762306a36Sopenharmony_ci    U8                      AliasIndex;         /* 01h */
30862306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
30962306a36Sopenharmony_ci    U8                      Function;           /* 03h */
31062306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
31162306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
31262306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
31362306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
31462306a36Sopenharmony_ci    U16                     Reserved3;          /* 0Ch */
31562306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
31662306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
31762306a36Sopenharmony_ci    U32                     ResponseLength;     /* 14h */
31862306a36Sopenharmony_ci} MSG_FC_COMMON_TRANSPORT_SEND_REPLY, MPI_POINTER PTR_MSG_FC_COMMON_TRANSPORT_SEND_REPLY,
31962306a36Sopenharmony_ci  FcCommonTransportSendReply_t, MPI_POINTER pFcCommonTransportSendReply_t;
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci/****************************************************************************/
32362306a36Sopenharmony_ci/* FC Primitive Send messages                                               */
32462306a36Sopenharmony_ci/****************************************************************************/
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_citypedef struct _MSG_FC_PRIMITIVE_SEND_REQUEST
32762306a36Sopenharmony_ci{
32862306a36Sopenharmony_ci    U8                      SendFlags;          /* 00h */
32962306a36Sopenharmony_ci    U8                      Reserved;           /* 01h */
33062306a36Sopenharmony_ci    U8                      ChainOffset;        /* 02h */
33162306a36Sopenharmony_ci    U8                      Function;           /* 03h */
33262306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
33362306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
33462306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
33562306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
33662306a36Sopenharmony_ci    U8                      FcPrimitive[4];     /* 0Ch */
33762306a36Sopenharmony_ci} MSG_FC_PRIMITIVE_SEND_REQUEST, MPI_POINTER PTR_MSG_FC_PRIMITIVE_SEND_REQUEST,
33862306a36Sopenharmony_ci  FcPrimitiveSendRequest_t, MPI_POINTER pFcPrimitiveSendRequest_t;
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_PORT_MASK       (0x01)
34162306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_ML_RESET_LINK   (0x02)
34262306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_RESET_LINK      (0x04)
34362306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_STOP_SEND       (0x08)
34462306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_SEND_ONCE       (0x10)
34562306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_SEND_AROUND     (0x20)
34662306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_UNTIL_FULL      (0x40)
34762306a36Sopenharmony_ci#define MPI_FC_PRIM_SEND_FLAGS_FOREVER         (0x80)
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci/* FC Primitive Send Reply */
35062306a36Sopenharmony_citypedef struct _MSG_FC_PRIMITIVE_SEND_REPLY
35162306a36Sopenharmony_ci{
35262306a36Sopenharmony_ci    U8                      SendFlags;          /* 00h */
35362306a36Sopenharmony_ci    U8                      Reserved;           /* 01h */
35462306a36Sopenharmony_ci    U8                      MsgLength;          /* 02h */
35562306a36Sopenharmony_ci    U8                      Function;           /* 03h */
35662306a36Sopenharmony_ci    U16                     Reserved1;          /* 04h */
35762306a36Sopenharmony_ci    U8                      Reserved2;          /* 06h */
35862306a36Sopenharmony_ci    U8                      MsgFlags;           /* 07h */
35962306a36Sopenharmony_ci    U32                     MsgContext;         /* 08h */
36062306a36Sopenharmony_ci    U16                     Reserved3;          /* 0Ch */
36162306a36Sopenharmony_ci    U16                     IOCStatus;          /* 0Eh */
36262306a36Sopenharmony_ci    U32                     IOCLogInfo;         /* 10h */
36362306a36Sopenharmony_ci} MSG_FC_PRIMITIVE_SEND_REPLY, MPI_POINTER PTR_MSG_FC_PRIMITIVE_SEND_REPLY,
36462306a36Sopenharmony_ci  FcPrimitiveSendReply_t, MPI_POINTER pFcPrimitiveSendReply_t;
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ci#endif
36762306a36Sopenharmony_ci
368