/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright 2016-2023 Broadcom Inc. All rights reserved.
*/
#ifndef MPI30_INIT_H
#define MPI30_INIT_H 1
struct mpi3_scsi_io_cdb_eedp32 {
u8 cdb[20 ];
__be32 primary_reference_tag;
__le16 primary_application_tag;
__le16 primary_application_tag_mask;
__le32 transfer_length;
};
union mpi3_scsi_io_cdb_union {
u8 cdb32[32 ];
struct mpi3_scsi_io_cdb_eedp32 eedp32;
struct mpi3_sge_common sge;
};
struct mpi3_scsi_io_request {
__le16 host_tag;
u8 ioc_use_only02;
u8 function;
__le16 ioc_use_only04;
u8 ioc_use_only06;
u8 msg_flags;
__le16 change_count;
__le16 dev_handle;
__le32 flags;
__le32 skip_count;
__le32 data_length;
u8 lun[8 ];
union mpi3_scsi_io_cdb_union cdb;
union mpi3_sge_union sgl[4 ];
};
#define MPI3_SCSIIO_MSGFLAGS_METASGL_VALID (0 x80)
#define MPI3_SCSIIO_MSGFLAGS_DIVERT_TO_FIRMWARE (0 x40)
#define MPI3_SCSIIO_FLAGS_LARGE_CDB (0 x60000000)
#define MPI3_SCSIIO_FLAGS_LARGE_CDB_MASK (0 x60000000)
#define MPI3_SCSIIO_FLAGS_LARGE_CDB_SHIFT (29 )
#define MPI3_SCSIIO_FLAGS_IOC_USE_ONLY_27_MASK (0 x18000000)
#define MPI3_SCSIIO_FLAGS_IOC_USE_ONLY_27_SHIFT (27 )
#define MPI3_SCSIIO_FLAGS_CDB_16_OR_LESS (0 x00000000)
#define MPI3_SCSIIO_FLAGS_CDB_GREATER_THAN_16 (0 x20000000)
#define MPI3_SCSIIO_FLAGS_CDB_IN_SEPARATE_BUFFER (0 x40000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_MASK (0 x07000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_SHIFT (24 )
#define MPI3_SCSIIO_FLAGS_DATADIRECTION_MASK (0 x000c0000)
#define MPI3_SCSIIO_FLAGS_DATADIRECTION_SHIFT (18 )
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_SIMPLEQ (0 x00000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_HEADOFQ (0 x01000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ORDEREDQ (0 x02000000)
#define MPI3_SCSIIO_FLAGS_TASKATTRIBUTE_ACAQ (0 x04000000)
#define MPI3_SCSIIO_FLAGS_CMDPRI_MASK (0 x00f00000)
#define MPI3_SCSIIO_FLAGS_CMDPRI_SHIFT (20 )
#define MPI3_SCSIIO_FLAGS_DATADIRECTION_NO_DATA_TRANSFER (0 x00000000)
#define MPI3_SCSIIO_FLAGS_DATADIRECTION_WRITE (0 x00040000)
#define MPI3_SCSIIO_FLAGS_DATADIRECTION_READ (0 x00080000)
#define MPI3_SCSIIO_FLAGS_DMAOPERATION_MASK (0 x00030000)
#define MPI3_SCSIIO_FLAGS_DMAOPERATION_SHIFT (16 )
#define MPI3_SCSIIO_FLAGS_DMAOPERATION_HOST_PI (0 x00010000)
#define MPI3_SCSIIO_FLAGS_DIVERT_REASON_MASK (0 x000000f0)
#define MPI3_SCSIIO_FLAGS_DIVERT_REASON_SHIFT (4 )
#define MPI3_SCSIIO_FLAGS_DIVERT_REASON_IO_THROTTLING (0 x00000010)
#define MPI3_SCSIIO_FLAGS_DIVERT_REASON_WRITE_SAME_TOO_LARGE (0 x00000020)
#define MPI3_SCSIIO_FLAGS_DIVERT_REASON_PROD_SPECIFIC (0 x00000080)
#define MPI3_SCSIIO_METASGL_INDEX (3 )
struct mpi3_scsi_io_reply {
__le16 host_tag;
u8 ioc_use_only02;
u8 function;
__le16 ioc_use_only04;
u8 ioc_use_only06;
u8 msg_flags;
__le16 ioc_use_only08;
__le16 ioc_status;
__le32 ioc_log_info;
u8 scsi_status;
u8 scsi_state;
__le16 dev_handle;
__le32 transfer_count;
__le32 sense_count;
__le32 response_data;
__le16 task_tag;
__le16 scsi_status_qualifier;
__le32 eedp_error_offset;
__le16 eedp_observed_app_tag;
__le16 eedp_observed_guard;
__le32 eedp_observed_ref_tag;
__le64 sense_data_buffer_address;
};
#define MPI3_SCSIIO_REPLY_MSGFLAGS_REFTAG_OBSERVED_VALID (0 x01)
#define MPI3_SCSIIO_REPLY_MSGFLAGS_APPTAG_OBSERVED_VALID (0 x02)
#define MPI3_SCSIIO_REPLY_MSGFLAGS_GUARD_OBSERVED_VALID (0 x04)
#define MPI3_SCSI_STATUS_GOOD (0 x00)
#define MPI3_SCSI_STATUS_CHECK_CONDITION (0 x02)
#define MPI3_SCSI_STATUS_CONDITION_MET (0 x04)
#define MPI3_SCSI_STATUS_BUSY (0 x08)
#define MPI3_SCSI_STATUS_INTERMEDIATE (0 x10)
#define MPI3_SCSI_STATUS_INTERMEDIATE_CONDMET (0 x14)
#define MPI3_SCSI_STATUS_RESERVATION_CONFLICT (0 x18)
#define MPI3_SCSI_STATUS_COMMAND_TERMINATED (0 x22)
#define MPI3_SCSI_STATUS_TASK_SET_FULL (0 x28)
#define MPI3_SCSI_STATUS_ACA_ACTIVE (0 x30)
#define MPI3_SCSI_STATUS_TASK_ABORTED (0 x40)
#define MPI3_SCSI_STATE_SENSE_MASK (0 x03)
#define MPI3_SCSI_STATE_SENSE_SHIFT (0 )
#define MPI3_SCSI_STATE_SENSE_VALID (0 x00)
#define MPI3_SCSI_STATE_SENSE_FAILED (0 x01)
#define MPI3_SCSI_STATE_SENSE_BUFF_Q_EMPTY (0 x02)
#define MPI3_SCSI_STATE_SENSE_NOT_AVAILABLE (0 x03)
#define MPI3_SCSI_STATE_NO_SCSI_STATUS (0 x04)
#define MPI3_SCSI_STATE_TERMINATED (0 x08)
#define MPI3_SCSI_STATE_RESPONSE_DATA_VALID (0 x10)
#define MPI3_SCSI_RSP_RESPONSECODE_MASK (0 x000000ff)
#define MPI3_SCSI_RSP_RESPONSECODE_SHIFT (0 )
#define MPI3_SCSI_RSP_ARI2_MASK (0 x0000ff00)
#define MPI3_SCSI_RSP_ARI2_SHIFT (8 )
#define MPI3_SCSI_RSP_ARI1_MASK (0 x00ff0000)
#define MPI3_SCSI_RSP_ARI1_SHIFT (16 )
#define MPI3_SCSI_RSP_ARI0_MASK (0 xff000000)
#define MPI3_SCSI_RSP_ARI0_SHIFT (24 )
#define MPI3_SCSI_TASKTAG_UNKNOWN (0 xffff)
#define MPI3_SCSITASKMGMT_MSGFLAGS_DO_NOT_SEND_TASK_IU (0 x08)
#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK (0 x01)
#define MPI3_SCSITASKMGMT_TASKTYPE_ABORT_TASK_SET (0 x02)
#define MPI3_SCSITASKMGMT_TASKTYPE_TARGET_RESET (0 x03)
#define MPI3_SCSITASKMGMT_TASKTYPE_LOGICAL_UNIT_RESET (0 x05)
#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_TASK_SET (0 x06)
#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK (0 x07)
#define MPI3_SCSITASKMGMT_TASKTYPE_CLEAR_ACA (0 x08)
#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_TASK_SET (0 x09)
#define MPI3_SCSITASKMGMT_TASKTYPE_QUERY_ASYNC_EVENT (0 x0a)
#define MPI3_SCSITASKMGMT_TASKTYPE_I_T_NEXUS_RESET (0 x0b)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_COMPLETE (0 x00)
#define MPI3_SCSITASKMGMT_RSPCODE_INVALID_FRAME (0 x02)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_FUNCTION_NOT_SUPPORTED (0 x04)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_FAILED (0 x05)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_SUCCEEDED (0 x08)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_INVALID_LUN (0 x09)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_OVERLAPPED_TAG (0 x0a)
#define MPI3_SCSITASKMGMT_RSPCODE_IO_QUEUED_ON_IOC (0 x80)
#define MPI3_SCSITASKMGMT_RSPCODE_TM_NVME_DENIED (0 x81)
#endif
Messung V0.5 in Prozent C=90 H=92 G=90
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland