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