Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *  Copyright 2016-2021 Broadcom Inc. All rights reserved.
0004  *
0005  */
0006 #ifndef MPI30_INIT_H
0007 #define MPI30_INIT_H     1
0008 struct mpi3_scsi_io_cdb_eedp32 {
0009     u8                 cdb[20];
0010     __be32          primary_reference_tag;
0011     __le16             primary_application_tag;
0012     __le16             primary_application_tag_mask;
0013     __le32             transfer_length;
0014 };
0015 
0016 union mpi3_scsi_io_cdb_union {
0017     u8                         cdb32[32];
0018     struct mpi3_scsi_io_cdb_eedp32 eedp32;
0019     struct mpi3_sge_common         sge;
0020 };
0021 
0022 struct mpi3_scsi_io_request {
0023     __le16                     host_tag;
0024     u8                         ioc_use_only02;
0025     u8                         function;
0026     __le16                     ioc_use_only04;
0027     u8                         ioc_use_only06;
0028     u8                         msg_flags;
0029     __le16                     change_count;
0030     __le16                     dev_handle;
0031     __le32                     flags;
0032     __le32                     skip_count;
0033     __le32                     data_length;
0034     u8                         lun[8];
0035     union mpi3_scsi_io_cdb_union  cdb;
0036     union mpi3_sge_union          sgl[4];
0037 };
0038 
0039 #define MPI3_SCSIIO_MSGFLAGS_METASGL_VALID                  (0x80)
0040 #define MPI3_SCSIIO_MSGFLAGS_DIVERT_TO_FIRMWARE             (0x40)
0041 #define MPI3_SCSIIO_FLAGS_LARGE_CDB                         (0x60000000)
0042 #define MPI3_SCSIIO_FLAGS_CDB_16_OR_LESS                    (0x00000000)
0043 #define MPI3_SCSIIO_FLAGS_CDB_GREATER_THAN_16               (0x20000000)
0044 #define MPI3_SCSIIO_FLAGS_CDB_IN_SEPARATE_BUFFER            (0x40000000)
0045 #define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_MASK                (0x07000000)
0046 #define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_SIMPLEQ             (0x00000000)
0047 #define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_HEADOFQ             (0x01000000)
0048 #define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ORDEREDQ            (0x02000000)
0049 #define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ACAQ                (0x04000000)
0050 #define MPI3_SCSIIO_FLAGS_CMDPRI_MASK                       (0x00f00000)
0051 #define MPI3_SCSIIO_FLAGS_CMDPRI_SHIFT                      (20)
0052 #define MPI3_SCSIIO_FLAGS_DATADIRECTION_MASK                (0x000c0000)
0053 #define MPI3_SCSIIO_FLAGS_DATADIRECTION_NO_DATA_TRANSFER    (0x00000000)
0054 #define MPI3_SCSIIO_FLAGS_DATADIRECTION_WRITE               (0x00040000)
0055 #define MPI3_SCSIIO_FLAGS_DATADIRECTION_READ                (0x00080000)
0056 #define MPI3_SCSIIO_FLAGS_DMAOPERATION_MASK                 (0x00030000)
0057 #define MPI3_SCSIIO_FLAGS_DMAOPERATION_HOST_PI              (0x00010000)
0058 #define MPI3_SCSIIO_FLAGS_DIVERT_REASON_MASK                (0x000000f0)
0059 #define MPI3_SCSIIO_FLAGS_DIVERT_REASON_IO_THROTTLING       (0x00000010)
0060 #define MPI3_SCSIIO_FLAGS_DIVERT_REASON_PROD_SPECIFIC       (0x00000080)
0061 #define MPI3_SCSIIO_METASGL_INDEX                           (3)
0062 struct mpi3_scsi_io_reply {
0063     __le16                     host_tag;
0064     u8                         ioc_use_only02;
0065     u8                         function;
0066     __le16                     ioc_use_only04;
0067     u8                         ioc_use_only06;
0068     u8                         msg_flags;
0069     __le16                     ioc_use_only08;
0070     __le16                     ioc_status;
0071     __le32                     ioc_log_info;
0072     u8                         scsi_status;
0073     u8                         scsi_state;
0074     __le16                     dev_handle;
0075     __le32                     transfer_count;
0076     __le32                     sense_count;
0077     __le32                     response_data;
0078     __le16                     task_tag;
0079     __le16                     scsi_status_qualifier;
0080     __le32                     eedp_error_offset;
0081     __le16                     eedp_observed_app_tag;
0082     __le16                     eedp_observed_guard;
0083     __le32                     eedp_observed_ref_tag;
0084     __le64                     sense_data_buffer_address;
0085 };
0086 
0087 #define MPI3_SCSIIO_REPLY_MSGFLAGS_REFTAG_OBSERVED_VALID        (0x01)
0088 #define MPI3_SCSIIO_REPLY_MSGFLAGS_APPTAG_OBSERVED_VALID        (0x02)
0089 #define MPI3_SCSIIO_REPLY_MSGFLAGS_GUARD_OBSERVED_VALID         (0x04)
0090 #define MPI3_SCSI_STATUS_GOOD                   (0x00)
0091 #define MPI3_SCSI_STATUS_CHECK_CONDITION        (0x02)
0092 #define MPI3_SCSI_STATUS_CONDITION_MET          (0x04)
0093 #define MPI3_SCSI_STATUS_BUSY                   (0x08)
0094 #define MPI3_SCSI_STATUS_INTERMEDIATE           (0x10)
0095 #define MPI3_SCSI_STATUS_INTERMEDIATE_CONDMET   (0x14)
0096 #define MPI3_SCSI_STATUS_RESERVATION_CONFLICT   (0x18)
0097 #define MPI3_SCSI_STATUS_COMMAND_TERMINATED     (0x22)
0098 #define MPI3_SCSI_STATUS_TASK_SET_FULL          (0x28)
0099 #define MPI3_SCSI_STATUS_ACA_ACTIVE             (0x30)
0100 #define MPI3_SCSI_STATUS_TASK_ABORTED           (0x40)
0101 #define MPI3_SCSI_STATE_SENSE_MASK              (0x03)
0102 #define MPI3_SCSI_STATE_SENSE_VALID             (0x00)
0103 #define MPI3_SCSI_STATE_SENSE_FAILED            (0x01)
0104 #define MPI3_SCSI_STATE_SENSE_BUFF_Q_EMPTY      (0x02)
0105 #define MPI3_SCSI_STATE_SENSE_NOT_AVAILABLE     (0x03)
0106 #define MPI3_SCSI_STATE_NO_SCSI_STATUS          (0x04)
0107 #define MPI3_SCSI_STATE_TERMINATED              (0x08)
0108 #define MPI3_SCSI_STATE_RESPONSE_DATA_VALID     (0x10)
0109 #define MPI3_SCSI_RSP_RESPONSECODE_MASK         (0x000000ff)
0110 #define MPI3_SCSI_RSP_RESPONSECODE_SHIFT        (0)
0111 #define MPI3_SCSI_RSP_ARI2_MASK                 (0x0000ff00)
0112 #define MPI3_SCSI_RSP_ARI2_SHIFT                (8)
0113 #define MPI3_SCSI_RSP_ARI1_MASK                 (0x00ff0000)
0114 #define MPI3_SCSI_RSP_ARI1_SHIFT                (16)
0115 #define MPI3_SCSI_RSP_ARI0_MASK                 (0xff000000)
0116 #define MPI3_SCSI_RSP_ARI0_SHIFT                (24)
0117 #define MPI3_SCSI_TASKTAG_UNKNOWN               (0xffff)
0118 #endif