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