1 /*
2  * This file is auto-generated. Modifications will be lost.
3  *
4  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5  * for more information.
6  */
7 #ifndef _LINUX_VIRTIO_SCSI_H
8 #define _LINUX_VIRTIO_SCSI_H
9 #include <linux/virtio_types.h>
10 #define VIRTIO_SCSI_CDB_DEFAULT_SIZE 32
11 #define VIRTIO_SCSI_SENSE_DEFAULT_SIZE 96
12 #ifndef VIRTIO_SCSI_CDB_SIZE
13 #define VIRTIO_SCSI_CDB_SIZE VIRTIO_SCSI_CDB_DEFAULT_SIZE
14 #endif
15 #ifndef VIRTIO_SCSI_SENSE_SIZE
16 #define VIRTIO_SCSI_SENSE_SIZE VIRTIO_SCSI_SENSE_DEFAULT_SIZE
17 #endif
18 struct virtio_scsi_cmd_req {
19   __u8 lun[8];
20   __virtio64 tag;
21   __u8 task_attr;
22   __u8 prio;
23   __u8 crn;
24   __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
25 } __attribute__((packed));
26 struct virtio_scsi_cmd_req_pi {
27   __u8 lun[8];
28   __virtio64 tag;
29   __u8 task_attr;
30   __u8 prio;
31   __u8 crn;
32   __virtio32 pi_bytesout;
33   __virtio32 pi_bytesin;
34   __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
35 } __attribute__((packed));
36 struct virtio_scsi_cmd_resp {
37   __virtio32 sense_len;
38   __virtio32 resid;
39   __virtio16 status_qualifier;
40   __u8 status;
41   __u8 response;
42   __u8 sense[VIRTIO_SCSI_SENSE_SIZE];
43 } __attribute__((packed));
44 struct virtio_scsi_ctrl_tmf_req {
45   __virtio32 type;
46   __virtio32 subtype;
47   __u8 lun[8];
48   __virtio64 tag;
49 } __attribute__((packed));
50 struct virtio_scsi_ctrl_tmf_resp {
51   __u8 response;
52 } __attribute__((packed));
53 struct virtio_scsi_ctrl_an_req {
54   __virtio32 type;
55   __u8 lun[8];
56   __virtio32 event_requested;
57 } __attribute__((packed));
58 struct virtio_scsi_ctrl_an_resp {
59   __virtio32 event_actual;
60   __u8 response;
61 } __attribute__((packed));
62 struct virtio_scsi_event {
63   __virtio32 event;
64   __u8 lun[8];
65   __virtio32 reason;
66 } __attribute__((packed));
67 struct virtio_scsi_config {
68   __virtio32 num_queues;
69   __virtio32 seg_max;
70   __virtio32 max_sectors;
71   __virtio32 cmd_per_lun;
72   __virtio32 event_info_size;
73   __virtio32 sense_size;
74   __virtio32 cdb_size;
75   __virtio16 max_channel;
76   __virtio16 max_target;
77   __virtio32 max_lun;
78 } __attribute__((packed));
79 #define VIRTIO_SCSI_F_INOUT 0
80 #define VIRTIO_SCSI_F_HOTPLUG 1
81 #define VIRTIO_SCSI_F_CHANGE 2
82 #define VIRTIO_SCSI_F_T10_PI 3
83 #define VIRTIO_SCSI_S_OK 0
84 #define VIRTIO_SCSI_S_OVERRUN 1
85 #define VIRTIO_SCSI_S_ABORTED 2
86 #define VIRTIO_SCSI_S_BAD_TARGET 3
87 #define VIRTIO_SCSI_S_RESET 4
88 #define VIRTIO_SCSI_S_BUSY 5
89 #define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6
90 #define VIRTIO_SCSI_S_TARGET_FAILURE 7
91 #define VIRTIO_SCSI_S_NEXUS_FAILURE 8
92 #define VIRTIO_SCSI_S_FAILURE 9
93 #define VIRTIO_SCSI_S_FUNCTION_SUCCEEDED 10
94 #define VIRTIO_SCSI_S_FUNCTION_REJECTED 11
95 #define VIRTIO_SCSI_S_INCORRECT_LUN 12
96 #define VIRTIO_SCSI_T_TMF 0
97 #define VIRTIO_SCSI_T_AN_QUERY 1
98 #define VIRTIO_SCSI_T_AN_SUBSCRIBE 2
99 #define VIRTIO_SCSI_T_TMF_ABORT_TASK 0
100 #define VIRTIO_SCSI_T_TMF_ABORT_TASK_SET 1
101 #define VIRTIO_SCSI_T_TMF_CLEAR_ACA 2
102 #define VIRTIO_SCSI_T_TMF_CLEAR_TASK_SET 3
103 #define VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET 4
104 #define VIRTIO_SCSI_T_TMF_LOGICAL_UNIT_RESET 5
105 #define VIRTIO_SCSI_T_TMF_QUERY_TASK 6
106 #define VIRTIO_SCSI_T_TMF_QUERY_TASK_SET 7
107 #define VIRTIO_SCSI_T_EVENTS_MISSED 0x80000000
108 #define VIRTIO_SCSI_T_NO_EVENT 0
109 #define VIRTIO_SCSI_T_TRANSPORT_RESET 1
110 #define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
111 #define VIRTIO_SCSI_T_PARAM_CHANGE 3
112 #define VIRTIO_SCSI_EVT_RESET_HARD 0
113 #define VIRTIO_SCSI_EVT_RESET_RESCAN 1
114 #define VIRTIO_SCSI_EVT_RESET_REMOVED 2
115 #define VIRTIO_SCSI_S_SIMPLE 0
116 #define VIRTIO_SCSI_S_ORDERED 1
117 #define VIRTIO_SCSI_S_HEAD 2
118 #define VIRTIO_SCSI_S_ACA 3
119 #endif
120