| 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | |
| 3 | #ifndef _SCSI_SCSI_STATUS_H |
| 4 | #define _SCSI_SCSI_STATUS_H |
| 5 | |
| 6 | #include <linux/types.h> |
| 7 | #include <scsi/scsi_proto.h> |
| 8 | |
| 9 | /* Message codes. */ |
| 10 | enum scsi_msg_byte { |
| 11 | COMMAND_COMPLETE = 0x00, |
| 12 | EXTENDED_MESSAGE = 0x01, |
| 13 | SAVE_POINTERS = 0x02, |
| 14 | RESTORE_POINTERS = 0x03, |
| 15 | DISCONNECT = 0x04, |
| 16 | INITIATOR_ERROR = 0x05, |
| 17 | ABORT_TASK_SET = 0x06, |
| 18 | MESSAGE_REJECT = 0x07, |
| 19 | NOP = 0x08, |
| 20 | MSG_PARITY_ERROR = 0x09, |
| 21 | LINKED_CMD_COMPLETE = 0x0a, |
| 22 | LINKED_FLG_CMD_COMPLETE = 0x0b, |
| 23 | TARGET_RESET = 0x0c, |
| 24 | ABORT_TASK = 0x0d, |
| 25 | CLEAR_TASK_SET = 0x0e, |
| 26 | INITIATE_RECOVERY = 0x0f, /* SCSI-II only */ |
| 27 | RELEASE_RECOVERY = 0x10, /* SCSI-II only */ |
| 28 | TERMINATE_IO_PROC = 0x11, /* SCSI-II only */ |
| 29 | CLEAR_ACA = 0x16, |
| 30 | LOGICAL_UNIT_RESET = 0x17, |
| 31 | SIMPLE_QUEUE_TAG = 0x20, |
| 32 | HEAD_OF_QUEUE_TAG = 0x21, |
| 33 | ORDERED_QUEUE_TAG = 0x22, |
| 34 | IGNORE_WIDE_RESIDUE = 0x23, |
| 35 | ACA = 0x24, |
| 36 | QAS_REQUEST = 0x55, |
| 37 | |
| 38 | /* Old SCSI2 names, don't use in new code */ |
| 39 | BUS_DEVICE_RESET = TARGET_RESET, |
| 40 | ABORT = ABORT_TASK_SET, |
| 41 | }; |
| 42 | |
| 43 | /* Host byte codes. */ |
| 44 | enum scsi_host_status { |
| 45 | DID_OK = 0x00, /* NO error */ |
| 46 | DID_NO_CONNECT = 0x01, /* Couldn't connect before timeout period */ |
| 47 | DID_BUS_BUSY = 0x02, /* BUS stayed busy through time out period */ |
| 48 | DID_TIME_OUT = 0x03, /* TIMED OUT for other reason */ |
| 49 | DID_BAD_TARGET = 0x04, /* BAD target. */ |
| 50 | DID_ABORT = 0x05, /* Told to abort for some other reason */ |
| 51 | DID_PARITY = 0x06, /* Parity error */ |
| 52 | DID_ERROR = 0x07, /* Internal error */ |
| 53 | DID_RESET = 0x08, /* Reset by somebody. */ |
| 54 | DID_BAD_INTR = 0x09, /* Got an interrupt we weren't expecting. */ |
| 55 | DID_PASSTHROUGH = 0x0a, /* Force command past mid-layer */ |
| 56 | DID_SOFT_ERROR = 0x0b, /* The low level driver just wish a retry */ |
| 57 | DID_IMM_RETRY = 0x0c, /* Retry without decrementing retry count */ |
| 58 | DID_REQUEUE = 0x0d, /* Requeue command (no immediate retry) also |
| 59 | * without decrementing the retry count */ |
| 60 | DID_TRANSPORT_DISRUPTED = 0x0e, /* Transport error disrupted execution |
| 61 | * and the driver blocked the port to |
| 62 | * recover the link. Transport class will |
| 63 | * retry or fail IO */ |
| 64 | DID_TRANSPORT_FAILFAST = 0x0f, /* Transport class fastfailed the io */ |
| 65 | /* |
| 66 | * We used to have DID_TARGET_FAILURE, DID_NEXUS_FAILURE, |
| 67 | * DID_ALLOC_FAILURE and DID_MEDIUM_ERROR at 0x10 - 0x13. For compat |
| 68 | * with userspace apps that parse the host byte for SG IO, we leave |
| 69 | * that block of codes unused and start at 0x14 below. |
| 70 | */ |
| 71 | DID_TRANSPORT_MARGINAL = 0x14, /* Transport marginal errors */ |
| 72 | }; |
| 73 | |
| 74 | #endif /* _SCSI_SCSI_STATUS_H */ |
| 75 | |