]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - sys/cam/ctl/ctl_cmd_table.c
MFC r268096, r268306, r268361:
[FreeBSD/stable/10.git] / sys / cam / ctl / ctl_cmd_table.c
1 /*-
2  * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions, and the following disclaimer,
10  *    without modification.
11  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12  *    substantially similar to the "NO WARRANTY" disclaimer below
13  *    ("Disclaimer") and any redistribution must be conditioned upon
14  *    including a substantially similar Disclaimer requirement for further
15  *    binary redistribution.
16  *
17  * NO WARRANTY
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28  * POSSIBILITY OF SUCH DAMAGES.
29  *
30  * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31  * $FreeBSD$
32  */
33 /*
34  * CAM Target Layer command table.
35  *
36  * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37  */
38
39 #include <sys/cdefs.h>
40 #include <sys/param.h>
41 #include <sys/systm.h>
42 #include <sys/kernel.h>
43 #include <sys/types.h>
44 #include <sys/malloc.h>
45 #include <sys/condvar.h>
46 #include <sys/queue.h>
47 #include <sys/sysctl.h>
48
49 #include <cam/scsi/scsi_all.h>
50 #include <cam/scsi/scsi_da.h>
51 #include <cam/ctl/ctl_io.h>
52 #include <cam/ctl/ctl.h>
53 #include <cam/ctl/ctl_frontend.h>
54 #include <cam/ctl/ctl_backend.h>
55 #include <cam/ctl/ctl_frontend_internal.h>
56 #include <cam/ctl/ctl_ioctl.h>
57 #include <cam/ctl/ctl_ha.h>
58 #include <cam/ctl/ctl_private.h>
59
60 /*
61  * Whenever support for a new command is added, it should be added to these
62  * tables.
63  */
64
65 /* 5E PERSISTENT RESERVE IN */
66 const struct ctl_cmd_entry ctl_cmd_table_5e[32] =
67 {
68 /* 00 READ KEYS */
69 {ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV |
70                                                 CTL_CMD_FLAG_OK_ON_BOTH |
71                                                 CTL_CMD_FLAG_OK_ON_STOPPED |
72                                                 CTL_CMD_FLAG_OK_ON_INOPERABLE |
73                                                 CTL_CMD_FLAG_OK_ON_SECONDARY |
74                                                 CTL_FLAG_DATA_IN |
75                                                 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
76  CTL_LUN_PAT_NONE,
77  10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
78
79 /* 01 READ RESERVATION */
80 {ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV |
81                                                 CTL_CMD_FLAG_OK_ON_BOTH |
82                                                 CTL_CMD_FLAG_OK_ON_STOPPED |
83                                                 CTL_CMD_FLAG_OK_ON_INOPERABLE |
84                                                 CTL_CMD_FLAG_OK_ON_SECONDARY |
85                                                 CTL_FLAG_DATA_IN |
86                                                 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
87  CTL_LUN_PAT_NONE,
88  10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
89
90 /* 02 REPORT CAPABILITIES */
91 {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
92                                             CTL_CMD_FLAG_OK_ON_BOTH |
93                                             CTL_CMD_FLAG_OK_ON_STOPPED |
94                                             CTL_CMD_FLAG_OK_ON_INOPERABLE |
95                                             CTL_CMD_FLAG_OK_ON_SECONDARY |
96                                             CTL_FLAG_DATA_IN |
97                                             CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
98  CTL_LUN_PAT_NONE,
99  10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
100
101 /* 03 READ FULL STATUS */
102 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
103
104 /* 04-1f */
105 };
106
107 /* 5F PERSISTENT RESERVE OUT */
108 const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
109 {
110 /* 00 REGISTER */
111 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
112                                                   CTL_CMD_FLAG_OK_ON_BOTH |
113                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
114                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
115                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
116                                                   CTL_FLAG_DATA_OUT |
117                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
118  CTL_LUN_PAT_NONE,
119  10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
120
121 /* 01 RESERVE */
122 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
123                                                   CTL_CMD_FLAG_OK_ON_BOTH |
124                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
125                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
126                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
127                                                   CTL_FLAG_DATA_OUT |
128                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
129  CTL_LUN_PAT_NONE,
130  10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
131
132 /* 02 RELEASE */
133 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
134                                                   CTL_CMD_FLAG_OK_ON_BOTH |
135                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
136                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
137                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
138                                                   CTL_FLAG_DATA_OUT |
139                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
140  CTL_LUN_PAT_NONE,
141  10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
142
143 /* 03 CLEAR */
144 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
145                                                   CTL_CMD_FLAG_OK_ON_BOTH |
146                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
147                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
148                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
149                                                   CTL_FLAG_DATA_OUT |
150                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
151  CTL_LUN_PAT_NONE,
152  10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
153
154 /* 04 PREEMPT */
155 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
156                                                   CTL_CMD_FLAG_OK_ON_BOTH |
157                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
158                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
159                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
160                                                   CTL_FLAG_DATA_OUT |
161                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
162  CTL_LUN_PAT_NONE,
163  10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
164
165 /* 05 PREEMPT AND ABORT */
166 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
167
168 /* 06 REGISTER AND IGNORE EXISTING KEY */
169 {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
170                                                   CTL_CMD_FLAG_OK_ON_BOTH |
171                                                   CTL_CMD_FLAG_OK_ON_STOPPED |
172                                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
173                                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
174                                                   CTL_FLAG_DATA_OUT |
175                                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
176  CTL_LUN_PAT_NONE,
177  10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
178
179 /* 07 REGISTER AND MOVE */
180 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
181
182 /* 08-1f */
183 };
184
185 /* 9E SERVICE ACTION IN(16) */
186 const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
187 {
188 /* 00 */
189 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
190
191 /* 01 */
192 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
193
194 /* 02 */
195 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
196
197 /* 03 */
198 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
199
200 /* 04 */
201 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
202
203 /* 05 */
204 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
205
206 /* 06 */
207 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
208
209 /* 07 */
210 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
211
212 /* 08 */
213 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
214
215 /* 09 */
216 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
217
218 /* 0A */
219 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
220
221 /* 0B */
222 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
223
224 /* 0C */
225 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
226
227 /* 0D */
228 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
229
230 /* 0E */
231 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
232
233 /* 0F */
234 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
235
236 /* 10 */
237 {ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
238                                           CTL_CMD_FLAG_OK_ON_STOPPED |
239                                           CTL_CMD_FLAG_OK_ON_INOPERABLE |
240                                           CTL_CMD_FLAG_OK_ON_SECONDARY |
241                                           CTL_FLAG_DATA_IN |
242                                           CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
243  CTL_LUN_PAT_READCAP,
244  16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
245
246 /* 11-1f */
247 };
248
249 /* A3 MAINTENANCE IN */
250 const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
251 {
252 /* 00 */
253 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
254
255 /* 01 */
256 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
257
258 /* 02 */
259 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
260
261 /* 03 */
262 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
263
264 /* 04 */
265 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
266
267 /* 05 */
268 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
269
270 /* 06 */
271 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
272
273 /* 07 */
274 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
275
276 /* 08 */
277 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
278
279 /* 09 */
280 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
281
282 /* 0A REPORT TARGET PORT GROUPS */
283 {ctl_report_tagret_port_groups, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
284                                                     CTL_CMD_FLAG_OK_ON_STOPPED |
285                                                     CTL_CMD_FLAG_OK_ON_INOPERABLE |
286                                                     CTL_CMD_FLAG_OK_ON_SECONDARY |
287                                                     CTL_FLAG_DATA_IN,
288  CTL_LUN_PAT_NONE,
289  12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
290
291 /* 0B */
292 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
293
294 /* 0C REPORT SUPPORTED_OPCODES */
295 {ctl_report_supported_opcodes, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
296                                                    CTL_CMD_FLAG_OK_ON_STOPPED |
297                                                    CTL_CMD_FLAG_OK_ON_INOPERABLE |
298                                                    CTL_CMD_FLAG_OK_ON_SECONDARY |
299                                                    CTL_FLAG_DATA_IN,
300  CTL_LUN_PAT_NONE,
301  12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
302
303 /* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
304 {ctl_report_supported_tmf, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
305                                                CTL_CMD_FLAG_OK_ON_STOPPED |
306                                                CTL_CMD_FLAG_OK_ON_INOPERABLE |
307                                                CTL_CMD_FLAG_OK_ON_SECONDARY |
308                                                CTL_FLAG_DATA_IN,
309  CTL_LUN_PAT_NONE,
310  12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
311
312 /* 0e-1f */
313 };
314
315 const struct ctl_cmd_entry ctl_cmd_table[256] =
316 {
317 /* 00 TEST UNIT READY */
318 {ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
319                           CTL_FLAG_DATA_NONE |
320                           CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
321  CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
322
323 /* 01 REWIND */
324 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
325
326 /* 02 */
327 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
328
329 /* 03 REQUEST SENSE */
330 {ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
331                                        CTL_CMD_FLAG_OK_ON_ALL_LUNS |
332                                        CTL_CMD_FLAG_ALLOW_ON_RESV |
333                                        CTL_CMD_FLAG_NO_SENSE |
334                                        CTL_CMD_FLAG_OK_ON_STOPPED |
335                                        CTL_CMD_FLAG_OK_ON_INOPERABLE |
336                                        CTL_CMD_FLAG_OK_ON_OFFLINE |
337                                        CTL_CMD_FLAG_OK_ON_SECONDARY |
338                                        CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
339  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
340
341 /* 04 FORMAT UNIT */
342 {ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
343                                 CTL_CMD_FLAG_OK_ON_INOPERABLE |
344                                 CTL_FLAG_DATA_OUT,
345  CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
346
347 /* 05 READ BLOCK LIMITS */
348 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
349
350 /* 06 */
351 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
352
353 /* 07 REASSIGN BLOCKS */
354 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
355
356 /* 08 READ(6) */
357 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
358                                   CTL_FLAG_DATA_IN |
359                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
360  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
361
362 /* 09 */
363 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
364
365 /* 0A WRITE(6) */
366 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
367                                    CTL_FLAG_DATA_OUT,
368  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
369
370 /* 0B SEEK(6) */
371 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
372
373 /* 0C */
374 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
375
376 /* 0D */
377 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
378
379 /* 0E */
380 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
381
382 /* 0F READ REVERSE(6) */
383 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
384
385 /* 10 WRITE FILEMARKS(6) */
386 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
387
388 /* 11 SPACE(6) */
389 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
390
391 /* 12 INQUIRY */
392 {ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
393                               CTL_CMD_FLAG_ALLOW_ON_RESV |
394                               CTL_CMD_FLAG_NO_SENSE |
395                               CTL_CMD_FLAG_OK_ON_STOPPED |
396                               CTL_CMD_FLAG_OK_ON_INOPERABLE |
397                               CTL_CMD_FLAG_OK_ON_OFFLINE |
398                               CTL_CMD_FLAG_OK_ON_SECONDARY |
399                               CTL_FLAG_DATA_IN |
400                               CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
401  CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
402
403 /* 13 */
404 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
405
406 /* 14 RECOVER BUFFERED DATA */
407 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
408
409 /* 15 MODE SELECT(6) */
410 {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
411                                      CTL_CMD_FLAG_OK_ON_STOPPED |
412                                      CTL_CMD_FLAG_OK_ON_INOPERABLE |
413                                      CTL_CMD_FLAG_OK_ON_SECONDARY |
414                                      CTL_FLAG_DATA_OUT,
415  CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
416
417 /* 16 RESERVE(6) */
418 {ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
419                                     CTL_CMD_FLAG_OK_ON_BOTH |
420                                     CTL_CMD_FLAG_OK_ON_STOPPED |
421                                     CTL_CMD_FLAG_OK_ON_INOPERABLE |
422                                     CTL_CMD_FLAG_OK_ON_SECONDARY |
423                                     CTL_FLAG_DATA_OUT,
424  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
425
426 /* 17 RELEASE(6) */
427 {ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
428                                    CTL_CMD_FLAG_OK_ON_BOTH |
429                                    CTL_CMD_FLAG_OK_ON_STOPPED |
430                                    CTL_CMD_FLAG_OK_ON_INOPERABLE |
431                                    CTL_CMD_FLAG_OK_ON_SECONDARY |
432                                    CTL_FLAG_DATA_NONE,
433  CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
434
435 /* 18 COPY */
436 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
437
438 /* 19 ERASE(6) */
439 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
440
441 /* 1A MODE SENSE(6) */
442 {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
443                                     CTL_CMD_FLAG_OK_ON_STOPPED |
444                                     CTL_CMD_FLAG_OK_ON_INOPERABLE |
445                                     CTL_CMD_FLAG_OK_ON_SECONDARY |
446                                     CTL_FLAG_DATA_IN |
447                                     CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
448  CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0, 0xff, 0x07}},
449
450 /* 1B START STOP UNIT */
451 {ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
452                                    CTL_CMD_FLAG_OK_ON_STOPPED |
453                                    CTL_CMD_FLAG_OK_ON_INOPERABLE |
454                                    CTL_CMD_FLAG_OK_ON_OFFLINE |
455                                    CTL_FLAG_DATA_NONE |
456                                    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
457  CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
458
459 /* 1C RECEIVE DIAGNOSTIC RESULTS */
460 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
461
462 /* 1D SEND DIAGNOSTIC */
463 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
464
465 /* 1E PREVENT ALLOW MEDIUM REMOVAL */
466 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
467
468 /* 1F */
469 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
470
471 /* 20 */
472 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
473
474 /* 21 */
475 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
476
477 /* 22 */
478 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
479
480 /* 23 */
481 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
482
483 /* 24 SET WINDOW */
484 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
485
486 /* 25 READ CAPACITY(10) */
487 {ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
488                                        CTL_CMD_FLAG_OK_ON_STOPPED |
489                                        CTL_CMD_FLAG_OK_ON_INOPERABLE |
490                                        CTL_CMD_FLAG_OK_ON_SECONDARY |
491                                        CTL_FLAG_DATA_IN |
492                                        CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
493  CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
494
495 /* 26 */
496 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
497
498 /* 27 */
499 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
500
501 /* 28 READ(10) */
502 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
503                                   CTL_FLAG_DATA_IN |
504                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
505  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
506  10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
507
508 /* 29 READ GENERATION */
509 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
510
511 /* 2A WRITE(10) */
512 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
513  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
514  10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
515
516 /* 2B SEEK(10) */
517 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
518
519 /* 2C ERASE(10) */
520 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
521
522 /* 2D READ UPDATED BLOCK */
523 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
524
525 /* 2E WRITE AND VERIFY(10) */
526 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
527  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
528  10, {0x10, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
529
530 /* 2F VERIFY(10) */
531 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
532                               CTL_FLAG_DATA_OUT |
533                               CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
534  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
535  10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
536
537 /* 30 SEARCH DATA HIGH(10) */
538 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
539
540 /* 31 SEARCH DATA EQUAL(10) */
541 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
542
543 /* 32 SEARCH DATA LOW(10) */
544 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
545
546 /* 33 SET LIMITS(10) */
547 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
548
549 /* 34 PRE-FETCH(10) */
550 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
551
552 /* 35 SYNCHRONIZE CACHE(10) */
553 {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
554                                    CTL_FLAG_DATA_NONE,
555  CTL_LUN_PAT_NONE,
556  10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
557
558 /* 36 LOCK UNLOCK CACHE(10) */
559 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
560
561 /* 37 READ DEFECT DATA(10) */
562 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
563
564 /* 38 MEDIUM SCAN */
565 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
566
567 /* 39 COMPARE */
568 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
569
570 /* 3A COPY AND VERIFY */
571 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572
573 /* 3B WRITE BUFFER */
574 {ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
575                                       CTL_FLAG_DATA_OUT,
576  CTL_LUN_PAT_NONE,
577  10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
578
579 /* 3C READ BUFFER */
580 {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
581                                      CTL_FLAG_DATA_IN |
582                                      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
583  CTL_LUN_PAT_NONE,
584  10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
585
586 /* 3D UPDATE BLOCK */
587 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
588
589 /* 3E READ LONG */
590 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
591
592 /* 3F WRITE LONG */
593 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
594
595 /* 40 CHANGE DEFINITION */
596 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
597
598 /* 41 WRITE SAME(10) */
599 {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
600                                    CTL_FLAG_DATA_OUT,
601  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
602  10, {0x0a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
603
604 /* 42 READ SUB-CHANNEL / UNMAP */
605 {ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
606  CTL_LUN_PAT_WRITE,
607  10, {0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
608
609 /* 43 READ TOC/PMA/ATIP */
610 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
611
612 /* 44 REPORT DENSITY SUPPORT */
613 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
614
615 /* 45 PLAY AUDIO(10) */
616 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
617
618 /* 46 GET CONFIGURATION */
619 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
620
621 /* 47 PLAY AUDIO MSF */
622 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623
624 /* 48 PLAY AUDIO TRACK INDEX */
625 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626
627 /* 49 PLAY TRACK RELATIVE(10) */
628 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
629
630 /* 4A GET EVENT STATUS NOTIFICATION */
631 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
632
633 /* 4B PAUSE/RESUME */
634 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
635
636 /* 4C LOG SELECT */
637 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638
639 /* 4D LOG SENSE */
640 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641
642 /* 4E STOP PLAY/SCAN */
643 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644
645 /* 4F */
646 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647
648 /* 50 XDWRITE(10) */
649 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650
651 /* 51 XPWRITE(10) */
652 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653
654 /* 52 XDREAD(10) */
655 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656
657 /* 53 RESERVE TRACK */
658 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
659
660 /* 54 SEND OPC INFORMATION */
661 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
662
663 /* 55 MODE SELECT(10) */
664 {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
665                                      CTL_CMD_FLAG_OK_ON_STOPPED |
666                                      CTL_CMD_FLAG_OK_ON_INOPERABLE |
667                                      CTL_CMD_FLAG_OK_ON_SECONDARY |
668                                      CTL_FLAG_DATA_OUT,
669  CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
670
671 /* 56 RESERVE(10) */
672 {ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
673                                     CTL_CMD_FLAG_OK_ON_BOTH |
674                                     CTL_CMD_FLAG_OK_ON_STOPPED |
675                                     CTL_CMD_FLAG_OK_ON_INOPERABLE |
676                                     CTL_CMD_FLAG_OK_ON_SECONDARY |
677                                     CTL_FLAG_DATA_OUT,
678  CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
679
680 /* 57 RELEASE(10) */
681 {ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
682                                    CTL_CMD_FLAG_OK_ON_BOTH |
683                                    CTL_CMD_FLAG_OK_ON_STOPPED |
684                                    CTL_CMD_FLAG_OK_ON_INOPERABLE |
685                                    CTL_CMD_FLAG_OK_ON_SECONDARY |
686                                    CTL_FLAG_DATA_OUT,
687  CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
688
689 /* 58 REPAIR TRACK */
690 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
691
692 /* 59 READ MASTER CUE */
693 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
694
695 /* 5A MODE SENSE(10) */
696 {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
697                                     CTL_CMD_FLAG_OK_ON_STOPPED |
698                                     CTL_CMD_FLAG_OK_ON_INOPERABLE |
699                                     CTL_CMD_FLAG_OK_ON_SECONDARY |
700                                     CTL_FLAG_DATA_IN |
701                                     CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
702  CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
703
704 /* 5B CLOSE TRACK/SESSION */
705 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
706
707 /* 5C READ BUFFER CAPACITY */
708 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
709
710 /* 5D SEND CUE SHEET */
711 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
712
713 /* 5E PERSISTENT RESERVE IN */
714 {__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
715  CTL_LUN_PAT_NONE},
716
717 /* 5F PERSISTENT RESERVE OUT */
718 {__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
719  CTL_LUN_PAT_NONE},
720
721 /* 60 */
722 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
723
724 /* 61 */
725 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
726
727 /* 62 */
728 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
729
730 /* 63 */
731 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
732
733 /* 64 */
734 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735
736 /* 65 */
737 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738
739 /* 66 */
740 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741
742 /* 67 */
743 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
744
745 /* 68 */
746 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
747
748 /* 69 */
749 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
750
751 /* 6A */
752 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
753
754 /* 6B */
755 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
756
757 /* 6C */
758 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
759
760 /* 6D */
761 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
762
763 /* 6E */
764 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
765
766 /* 6F */
767 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
768
769 /* 70 */
770 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
771
772 /* 71 */
773 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774
775 /* 72 */
776 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777
778 /* 73 */
779 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780
781 /* 74 */
782 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783
784 /* 75 */
785 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
786
787 /* 76 */
788 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
789
790 /* 77 */
791 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
792
793 /* 78 */
794 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
795
796 /* 79 */
797 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
798
799 /* 7A */
800 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
801
802 /* 7B */
803 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
804
805 /* 7C */
806 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
807
808 /* 7D */
809 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
810
811 /* 7E */
812 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
813
814 /* 7F */
815 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
816
817 /* 80 XDWRITE EXTENDED(16) */
818 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
819
820 /* 81 REBUILD(16) */
821 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
822
823 /* 82 REGENERATE(16) */
824 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
825
826 /* 83 EXTENDED COPY */
827 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
828
829 /* 84 RECEIVE COPY RESULTS */
830 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831
832 /* 85 */
833 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
834
835 /* 86 ACCESS CONTROL IN */
836 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
837
838 /* 87 ACCESS CONTROL OUT */
839 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
840
841 /* 88 READ(16) */
842 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
843                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
844  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
845  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
846       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
847
848 /* 89 COMPARE AND WRITE */
849 {ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
850  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
851  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
852       0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
853
854 /* 8A WRITE(16) */
855 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
856  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
857  16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
858       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
859
860 /* 8B */
861 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
862
863 /* 8C READ ATTRIBUTE */
864 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
865
866 /* 8D WRITE ATTRIBUTE */
867 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
868
869 /* 8E WRITE AND VERIFY(16) */
870 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
871  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
872  16, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
873       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
874
875 /* 8F VERIFY(16) */
876 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
877                               CTL_FLAG_DATA_OUT |
878                               CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
879  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
880  16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
881       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
882
883 /* 90 PRE-FETCH(16) */
884 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885
886 /* 91 SYNCHRONIZE CACHE(16) */
887 {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
888                                    CTL_FLAG_DATA_NONE,
889  CTL_LUN_PAT_NONE,
890  16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
891       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
892
893 /* 92 LOCK UNLOCK CACHE(16) */
894 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
895
896 /* 93 WRITE SAME(16) */
897 {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
898                                    CTL_FLAG_DATA_OUT,
899  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
900  16, {0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
901       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
902
903 /* 94 */
904 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905
906 /* 95 */
907 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908
909 /* 96 */
910 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911
912 /* 97 */
913 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914
915 /* 98 */
916 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917
918 /* 99 */
919 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920
921 /* 9A */
922 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
923
924 /* 9B */
925 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
926
927 /* 9C */
928 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
929
930 /* 9D */
931 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
932
933 /* 9E SERVICE ACTION IN(16) */
934 {__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
935  CTL_LUN_PAT_NONE},
936
937 /* 9F SERVICE ACTION OUT(16) */
938 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
939
940 /* A0 REPORT LUNS */
941 {ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
942                                   CTL_CMD_FLAG_ALLOW_ON_RESV |
943                                   CTL_CMD_FLAG_NO_SENSE |
944                                   CTL_CMD_FLAG_OK_ON_STOPPED |
945                                   CTL_CMD_FLAG_OK_ON_INOPERABLE |
946                                   CTL_CMD_FLAG_OK_ON_OFFLINE |
947                                   CTL_CMD_FLAG_OK_ON_SECONDARY |
948                                   CTL_FLAG_DATA_IN |
949                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
950  CTL_LUN_PAT_NONE,
951  12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
952
953 /* A1 BLANK */
954 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
955
956 /* A2 SEND EVENT */
957 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
958
959 /* A3 MAINTENANCE IN */
960 {__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
961  CTL_LUN_PAT_NONE},
962
963 /* A4 MAINTENANCE OUT */
964 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
965
966 /* A5 MOVE MEDIUM */
967 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
968
969 /* A6 EXCHANGE MEDIUM */
970 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
971
972 /* A7 MOVE MEDIUM ATTACHED */
973 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
974
975 /* A8 READ(12) */
976 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
977                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
978  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
979  12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
980
981 /* A9 PLAY TRACK RELATIVE(12) */
982 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
983
984 /* AA WRITE(12) */
985 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
986  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
987  12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
988
989 /* AB SERVICE ACTION IN(12) */
990 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
991
992 /* AC ERASE(12) */
993 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
994
995 /* AD READ DVD STRUCTURE */
996 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
997
998 /* AE WRITE AND VERIFY(12) */
999 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1000  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1001  12, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1002
1003 /* AF VERIFY(12) */
1004 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1005                               CTL_FLAG_DATA_OUT |
1006                               CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1007  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1008  12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1009
1010 /* B0 SEARCH DATA HIGH(12) */
1011 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1012
1013 /* B1 SEARCH DATA EQUAL(12) */
1014 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1015
1016 /* B2 SEARCH DATA LOW(12) */
1017 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1018
1019 /* B3 SET LIMITS(12) */
1020 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1021
1022 /* B4 READ ELEMENT STATUS ATTACHED */
1023 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1024
1025 /* B5 REQUEST VOLUME ELEMENT ADDRESS */
1026 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1027
1028 /* B6 SEND VOLUME TAG */
1029 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1030
1031 /* B7 READ DEFECT DATA(12) */
1032 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1033
1034 /* B8 READ ELEMENT STATUS */
1035 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1036
1037 /* B9 READ CD MSF */
1038 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1039
1040 /* BA REDUNDANCY GROUP IN */
1041 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1042
1043 /* BB REDUNDANCY GROUP OUT */
1044 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1045
1046 /* BC SPARE IN */
1047 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1048
1049 /* BD SPARE OUT */
1050 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1051
1052 /* BE VOLUME SET IN */
1053 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1054
1055 /* BF VOLUME SET OUT */
1056 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1057
1058 /* C0 - ISC_SEND_MSG_SHORT */
1059 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1060 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1061  CTL_LUN_PAT_NONE,
1062  16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1063       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1064
1065 /* C1 - ISC_SEND_MSG */
1066 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1067 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1068  CTL_LUN_PAT_NONE,
1069  16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1070       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1071
1072 /* C2 - ISC_WRITE */
1073 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1074 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1075  CTL_LUN_PAT_NONE,
1076  16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1077       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1078
1079 /* C3 - ISC_READ */
1080 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1081 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1082  CTL_LUN_PAT_NONE,
1083  16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1084       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1085
1086 /* C4 */
1087 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1088
1089 /* C5 */
1090 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1091
1092 /* C6 */
1093 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1094
1095 /* C7 */
1096 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1097
1098 /* C8 */
1099 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1100
1101 /* C9 */
1102 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1103
1104 /* CA */
1105 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1106
1107 /* CB */
1108 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1109
1110 /* CC */
1111 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1112
1113 /* CD */
1114 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1115
1116 /* CE */
1117 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1118
1119 /* CF */
1120 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1121
1122 /* D0 */
1123 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1124
1125 /* D1 */
1126 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1127
1128 /* D2 */
1129 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1130
1131 /* D3 */
1132 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1133
1134 /* D4 */
1135 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1136
1137 /* D5 */
1138 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1139
1140 /* D6 */
1141 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1142
1143 /* D7 */
1144 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145
1146 /* D8 */
1147 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1148
1149 /* D9 */
1150 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1151
1152 /* DA */
1153 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1154
1155 /* DB */
1156 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1157
1158 /* DC */
1159 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1160
1161 /* DD */
1162 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1163
1164 /* DE */
1165 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1166
1167 /* DF */
1168 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1169
1170 /* E0 */
1171 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1172
1173 /* E1 */
1174 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1175
1176 /* E2 */
1177 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1178
1179 /* E3 */
1180 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1181
1182 /* E4 */
1183 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1184
1185 /* E5 */
1186 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1187
1188 /* E6 */
1189 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1190
1191 /* E7 */
1192 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1193
1194 /* E8 */
1195 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1196
1197 /* E9 */
1198 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1199
1200 /* EA */
1201 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1202
1203 /* EB */
1204 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1205
1206 /* EC */
1207 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1208
1209 /* ED */
1210 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1211
1212 /* EE */
1213 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1214
1215 /* EF */
1216 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1217
1218 /* F0 */
1219 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1220
1221 /* F1 */
1222 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1223
1224 /* F2 */
1225 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1226
1227 /* F3 */
1228 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1229
1230 /* F4 */
1231 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1232
1233 /* F5 */
1234 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1235
1236 /* F6 */
1237 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1238
1239 /* F7 */
1240 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1241
1242 /* F8 */
1243 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1244
1245 /* F9 */
1246 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1247
1248 /* FA */
1249 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1250
1251 /* FB */
1252 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1253
1254 /* FC */
1255 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1256
1257 /* FD */
1258 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1259
1260 /* FE */
1261 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1262
1263 /* FF */
1264 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1265
1266 };