^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * This file is in the public domain.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #ifndef _SCSI_SCSI_IU_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define _SCSI_SCSI_IU_H 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) struct scsi_status_iu_header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) u_int8_t reserved[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) u_int8_t flags;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define SIU_SNSVALID 0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define SIU_RSPVALID 0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) u_int8_t status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) u_int8_t sense_length[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) u_int8_t pkt_failures_length[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) u_int8_t pkt_failures[1];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define SIU_PKTFAIL_OFFSET(siu) 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define SIU_PKTFAIL_CODE(siu) (scsi_4btoul((siu)->pkt_failures) & 0xFF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define SIU_PFC_NONE 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define SIU_PFC_CIU_FIELDS_INVALID 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define SIU_PFC_TMF_NOT_SUPPORTED 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #define SIU_PFC_TMF_FAILED 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define SIU_PFC_INVALID_TYPE_CODE 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define SIU_PFC_ILLEGAL_REQUEST 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) #define SIU_SENSE_OFFSET(siu) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) (12 + (((siu)->flags & SIU_RSPVALID) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) ? scsi_4btoul((siu)->pkt_failures_length) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) : 0))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define SIU_TASKMGMT_NONE 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define SIU_TASKMGMT_ABORT_TASK 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #define SIU_TASKMGMT_ABORT_TASK_SET 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #define SIU_TASKMGMT_CLEAR_TASK_SET 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define SIU_TASKMGMT_LUN_RESET 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #define SIU_TASKMGMT_TARGET_RESET 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) #define SIU_TASKMGMT_CLEAR_ACA 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #endif /*_SCSI_SCSI_IU_H*/