1 | #ifndef _SSSRAID_H_
|
---|
2 | #define _SSSRAID_H_
|
---|
3 | #include <stdint.h>
|
---|
4 | #define u8 uint8_t
|
---|
5 | #define u16 uint16_t
|
---|
6 | #define u32 uint32_t
|
---|
7 | #define u64 uint64_t
|
---|
8 | #define ADM_MAX_DATA_SIZE 0x1000U // 4096
|
---|
9 | #define ADM_SCSI_CDB_MAX_LEN 32
|
---|
10 | #define ADM_SCSI_CDB_SENSE_MAX_LEN 96
|
---|
11 | #define ADM_SCSI_CDB_SENSE_LEN32 32
|
---|
12 | #define ADM_CMD_SHOW_PDLIST 0x502 // 1282
|
---|
13 | #define ADM_CMD_SCSI_PASSTHROUGH 0x51e // 1310
|
---|
14 | #define BSG_APPEND_TIMEOUT_MS 600000
|
---|
15 | #define ADM_BSG_MSGCODE_SCSI_PTHRU 1
|
---|
16 |
|
---|
17 | #define ADM_RAID_SET 0xc0
|
---|
18 | #define ADM_RAID_WRITE 0xc1
|
---|
19 | #define ADM_RAID_READ 0xc2
|
---|
20 | #define ADM_RAID_PARAM_WRITE 0xc3
|
---|
21 | #define ADM_RAID_READ_FROM_CQE 0xc4
|
---|
22 |
|
---|
23 | // pdlist device type interface
|
---|
24 | enum adm_pdlist_intf {
|
---|
25 | ADM_DEVICE_TYPE_SAS = 1,
|
---|
26 | ADM_DEVICE_TYPE_EXP = 2,
|
---|
27 | ADM_DEVICE_TYPE_SATA = 8,
|
---|
28 | ADM_DEVICE_TYPE_PLANE = 9,
|
---|
29 | ADM_DEVICE_TYPE_NVME = 10,
|
---|
30 | ADM_DEVICE_TYPE_UNKNOW,
|
---|
31 | ADM_DEVICE_TYPE_BUTT
|
---|
32 | };
|
---|
33 |
|
---|
34 | struct cmd_pdlist_idx {
|
---|
35 | u16 start_idx;
|
---|
36 | u16 count;
|
---|
37 | u32 rsvd;
|
---|
38 | };
|
---|
39 |
|
---|
40 | struct cmd_pdlist_entry {
|
---|
41 | u16 enc_id;
|
---|
42 | u16 slot_id;
|
---|
43 | u8 interface;
|
---|
44 | u8 media_type;
|
---|
45 | u8 logi_type;
|
---|
46 | u8 logi_status;
|
---|
47 | u32 reserve[26];
|
---|
48 | };
|
---|
49 | #define CMD_PDS_MAX_NUM 256U
|
---|
50 | #define CMD_PDLIST_ONCE_NUM ((ADM_MAX_DATA_SIZE - 64) / sizeof(struct cmd_pdlist_entry))
|
---|
51 |
|
---|
52 | struct cmd_show_pdlist {
|
---|
53 | u16 num;
|
---|
54 | u16 rsvd0;
|
---|
55 | u32 rsvd1[15];
|
---|
56 | struct cmd_pdlist_entry disks[CMD_PDLIST_ONCE_NUM];
|
---|
57 | };
|
---|
58 |
|
---|
59 | struct multi_disk_location {
|
---|
60 | u16 enc_id;
|
---|
61 | u16 slot_id;
|
---|
62 | u16 did;
|
---|
63 | u8 flag;
|
---|
64 | u8 rsvd;
|
---|
65 | };
|
---|
66 |
|
---|
67 | struct cmd_scsi_passthrough {
|
---|
68 | struct multi_disk_location loc;
|
---|
69 | u8 lun;
|
---|
70 | u8 cdb_len;
|
---|
71 | u8 sense_buffer_len;
|
---|
72 | u8 rsvd0;
|
---|
73 | u8 cdb[32];
|
---|
74 | u32 rsvd1;
|
---|
75 | u8 *sense_buffer;
|
---|
76 | };
|
---|
77 |
|
---|
78 | struct sssraid_passthru_common_cmd {
|
---|
79 | u8 opcode;
|
---|
80 | u8 flags;
|
---|
81 | u16 rsvd0;
|
---|
82 | u32 nsid;
|
---|
83 | union {
|
---|
84 | struct {
|
---|
85 | u16 subopcode;
|
---|
86 | u16 rsvd1;
|
---|
87 | } info_0;
|
---|
88 | u32 cdw2;
|
---|
89 | };
|
---|
90 | union {
|
---|
91 | struct {
|
---|
92 | u16 data_len;
|
---|
93 | u16 param_len;
|
---|
94 | } info_1;
|
---|
95 | u32 cdw3;
|
---|
96 | };
|
---|
97 | u64 metadata;
|
---|
98 |
|
---|
99 | u64 addr;
|
---|
100 | u32 metadata_len;
|
---|
101 | u32 data_len;
|
---|
102 |
|
---|
103 | u32 cdw10;
|
---|
104 | u32 cdw11;
|
---|
105 | u32 cdw12;
|
---|
106 | u32 cdw13;
|
---|
107 | u32 cdw14;
|
---|
108 | u32 cdw15;
|
---|
109 | u32 timeout_ms;
|
---|
110 | u32 result0;
|
---|
111 | u32 result1;
|
---|
112 | };
|
---|
113 |
|
---|
114 | struct sssraid_ioq_passthru_cmd {
|
---|
115 | u8 opcode;
|
---|
116 | u8 flags;
|
---|
117 | u16 rsvd0;
|
---|
118 | u32 nsid;
|
---|
119 | union {
|
---|
120 | struct {
|
---|
121 | u16 res_sense_len;
|
---|
122 | u8 cdb_len;
|
---|
123 | u8 rsvd0;
|
---|
124 | } info_0;
|
---|
125 | u32 cdw2;
|
---|
126 | };
|
---|
127 | union {
|
---|
128 | struct {
|
---|
129 | u16 subopcode;
|
---|
130 | u16 rsvd1;
|
---|
131 | } info_1;
|
---|
132 | u32 cdw3;
|
---|
133 | };
|
---|
134 | union {
|
---|
135 | struct {
|
---|
136 | u16 rsvd;
|
---|
137 | u16 param_len;
|
---|
138 | } info_2;
|
---|
139 | u32 cdw4;
|
---|
140 | };
|
---|
141 | u32 cdw5;
|
---|
142 | u64 addr;
|
---|
143 | u64 prp2;
|
---|
144 | union {
|
---|
145 | struct {
|
---|
146 | u16 eid;
|
---|
147 | u16 sid;
|
---|
148 | } info_3;
|
---|
149 | u32 cdw10;
|
---|
150 | };
|
---|
151 | union {
|
---|
152 | struct {
|
---|
153 | u16 did;
|
---|
154 | u8 did_flag;
|
---|
155 | u8 rsvd2;
|
---|
156 | } info_4;
|
---|
157 | u32 cdw11;
|
---|
158 | };
|
---|
159 | u32 cdw12;
|
---|
160 | u32 cdw13;
|
---|
161 | u32 cdw14;
|
---|
162 | u32 data_len;
|
---|
163 | u32 cdw16;
|
---|
164 | u32 cdw17;
|
---|
165 | u32 cdw18;
|
---|
166 | u32 cdw19;
|
---|
167 | u32 cdw20;
|
---|
168 | u32 cdw21;
|
---|
169 | u32 cdw22;
|
---|
170 | u32 cdw23;
|
---|
171 | u64 sense_addr;
|
---|
172 | u32 cdw26[4];
|
---|
173 | u32 timeout_ms;
|
---|
174 | u32 result0;
|
---|
175 | u32 result1;
|
---|
176 | };
|
---|
177 |
|
---|
178 | struct bsg_ioctl_cmd {
|
---|
179 | u32 msgcode;
|
---|
180 | u32 control;
|
---|
181 | union {
|
---|
182 | struct sssraid_passthru_common_cmd ioctl_r64;
|
---|
183 | struct sssraid_ioq_passthru_cmd ioctl_pthru;
|
---|
184 | };
|
---|
185 | };
|
---|
186 |
|
---|
187 | #endif // _SSSRAID_H
|
---|