ctl_cmd_table.c revision 268675
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: stable/10/sys/cam/ctl/ctl_cmd_table.c 268675 2014-07-15 16:54:04Z mav $
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 */
66const 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 */
108const 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) */
186const 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 */
250const 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 */
313{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
314
315/* 0F REPORT TIMESTAMP */
316{ctl_report_timestamp, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
317					   CTL_CMD_FLAG_OK_ON_STOPPED |
318					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
319					   CTL_CMD_FLAG_OK_ON_SECONDARY |
320					   CTL_FLAG_DATA_IN,
321 CTL_LUN_PAT_NONE,
322 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
323
324/* 10-1f */
325};
326
327const struct ctl_cmd_entry ctl_cmd_table[256] =
328{
329/* 00 TEST UNIT READY */
330{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
331			  CTL_FLAG_DATA_NONE |
332			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
333 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
334
335/* 01 REWIND */
336{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
337
338/* 02 */
339{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
340
341/* 03 REQUEST SENSE */
342{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
343				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
344				       CTL_CMD_FLAG_ALLOW_ON_RESV |
345				       CTL_CMD_FLAG_NO_SENSE |
346				       CTL_CMD_FLAG_OK_ON_STOPPED |
347				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
348				       CTL_CMD_FLAG_OK_ON_OFFLINE |
349				       CTL_CMD_FLAG_OK_ON_SECONDARY |
350				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
351 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
352
353/* 04 FORMAT UNIT */
354{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
355				CTL_CMD_FLAG_OK_ON_INOPERABLE |
356				CTL_FLAG_DATA_OUT,
357 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
358
359/* 05 READ BLOCK LIMITS */
360{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
361
362/* 06 */
363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
364
365/* 07 REASSIGN BLOCKS */
366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
367
368/* 08 READ(6) */
369{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
370				  CTL_FLAG_DATA_IN |
371				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
372 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
373
374/* 09 */
375{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
376
377/* 0A WRITE(6) */
378{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
379				   CTL_FLAG_DATA_OUT,
380 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
381
382/* 0B SEEK(6) */
383{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
384
385/* 0C */
386{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
387
388/* 0D */
389{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
390
391/* 0E */
392{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
393
394/* 0F READ REVERSE(6) */
395{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
396
397/* 10 WRITE FILEMARKS(6) */
398{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
399
400/* 11 SPACE(6) */
401{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
402
403/* 12 INQUIRY */
404{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
405			      CTL_CMD_FLAG_ALLOW_ON_RESV |
406			      CTL_CMD_FLAG_NO_SENSE |
407			      CTL_CMD_FLAG_OK_ON_STOPPED |
408			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
409			      CTL_CMD_FLAG_OK_ON_OFFLINE |
410			      CTL_CMD_FLAG_OK_ON_SECONDARY |
411			      CTL_FLAG_DATA_IN |
412			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
413 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
414
415/* 13 */
416{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
417
418/* 14 RECOVER BUFFERED DATA */
419{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
420
421/* 15 MODE SELECT(6) */
422{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
423				     CTL_CMD_FLAG_OK_ON_STOPPED |
424				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
425				     CTL_CMD_FLAG_OK_ON_SECONDARY |
426				     CTL_FLAG_DATA_OUT,
427 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
428
429/* 16 RESERVE(6) */
430{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
431				    CTL_CMD_FLAG_OK_ON_BOTH |
432				    CTL_CMD_FLAG_OK_ON_STOPPED |
433				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
434				    CTL_CMD_FLAG_OK_ON_SECONDARY |
435				    CTL_FLAG_DATA_OUT,
436 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
437
438/* 17 RELEASE(6) */
439{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
440				   CTL_CMD_FLAG_OK_ON_BOTH |
441				   CTL_CMD_FLAG_OK_ON_STOPPED |
442				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
443				   CTL_CMD_FLAG_OK_ON_SECONDARY |
444				   CTL_FLAG_DATA_NONE,
445 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
446
447/* 18 COPY */
448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
449
450/* 19 ERASE(6) */
451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
452
453/* 1A MODE SENSE(6) */
454{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
455				    CTL_CMD_FLAG_OK_ON_STOPPED |
456				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
457				    CTL_CMD_FLAG_OK_ON_SECONDARY |
458				    CTL_FLAG_DATA_IN |
459				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
460 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0, 0xff, 0x07}},
461
462/* 1B START STOP UNIT */
463{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
464				   CTL_CMD_FLAG_OK_ON_STOPPED |
465				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
466				   CTL_CMD_FLAG_OK_ON_OFFLINE |
467				   CTL_FLAG_DATA_NONE |
468				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
469 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
470
471/* 1C RECEIVE DIAGNOSTIC RESULTS */
472{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
473
474/* 1D SEND DIAGNOSTIC */
475{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
476
477/* 1E PREVENT ALLOW MEDIUM REMOVAL */
478{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
479
480/* 1F */
481{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
482
483/* 20 */
484{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
485
486/* 21 */
487{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
488
489/* 22 */
490{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
491
492/* 23 */
493{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
494
495/* 24 SET WINDOW */
496{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
497
498/* 25 READ CAPACITY(10) */
499{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
500				       CTL_CMD_FLAG_OK_ON_STOPPED |
501				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
502				       CTL_CMD_FLAG_OK_ON_SECONDARY |
503				       CTL_FLAG_DATA_IN |
504				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
505 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
506
507/* 26 */
508{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
509
510/* 27 */
511{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
512
513/* 28 READ(10) */
514{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
515				  CTL_FLAG_DATA_IN |
516				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
517 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
518 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
519
520/* 29 READ GENERATION */
521{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
522
523/* 2A WRITE(10) */
524{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
525 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
526 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
527
528/* 2B SEEK(10) */
529{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
530
531/* 2C ERASE(10) */
532{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
533
534/* 2D READ UPDATED BLOCK */
535{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
536
537/* 2E WRITE AND VERIFY(10) */
538{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
539 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
540 10, {0x10, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
541
542/* 2F VERIFY(10) */
543{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
544			      CTL_FLAG_DATA_OUT |
545			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
546 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
547 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
548
549/* 30 SEARCH DATA HIGH(10) */
550{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
551
552/* 31 SEARCH DATA EQUAL(10) */
553{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
554
555/* 32 SEARCH DATA LOW(10) */
556{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
557
558/* 33 SET LIMITS(10) */
559{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
560
561/* 34 PRE-FETCH(10) */
562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
563
564/* 35 SYNCHRONIZE CACHE(10) */
565{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
566				   CTL_FLAG_DATA_NONE,
567 CTL_LUN_PAT_NONE,
568 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
569
570/* 36 LOCK UNLOCK CACHE(10) */
571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572
573/* 37 READ DEFECT DATA(10) */
574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
575
576/* 38 MEDIUM SCAN */
577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
578
579/* 39 COMPARE */
580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
581
582/* 3A COPY AND VERIFY */
583{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584
585/* 3B WRITE BUFFER */
586{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
587				      CTL_FLAG_DATA_OUT,
588 CTL_LUN_PAT_NONE,
589 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
590
591/* 3C READ BUFFER */
592{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
593				     CTL_FLAG_DATA_IN |
594				     CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
595 CTL_LUN_PAT_NONE,
596 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
597
598/* 3D UPDATE BLOCK */
599{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
600
601/* 3E READ LONG */
602{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
603
604/* 3F WRITE LONG */
605{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
606
607/* 40 CHANGE DEFINITION */
608{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
609
610/* 41 WRITE SAME(10) */
611{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
612				   CTL_FLAG_DATA_OUT,
613 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
614 10, {0x0a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
615
616/* 42 READ SUB-CHANNEL / UNMAP */
617{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
618 CTL_LUN_PAT_WRITE,
619 10, {0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
620
621/* 43 READ TOC/PMA/ATIP */
622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623
624/* 44 REPORT DENSITY SUPPORT */
625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626
627/* 45 PLAY AUDIO(10) */
628{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
629
630/* 46 GET CONFIGURATION */
631{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
632
633/* 47 PLAY AUDIO MSF */
634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
635
636/* 48 PLAY AUDIO TRACK INDEX */
637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638
639/* 49 PLAY TRACK RELATIVE(10) */
640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641
642/* 4A GET EVENT STATUS NOTIFICATION */
643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644
645/* 4B PAUSE/RESUME */
646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647
648/* 4C LOG SELECT */
649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650
651/* 4D LOG SENSE */
652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653
654/* 4E STOP PLAY/SCAN */
655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656
657/* 4F */
658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
659
660/* 50 XDWRITE(10) */
661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
662
663/* 51 XPWRITE(10) */
664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
665
666/* 52 XDREAD(10) */
667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
668
669/* 53 RESERVE TRACK */
670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
671
672/* 54 SEND OPC INFORMATION */
673{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
674
675/* 55 MODE SELECT(10) */
676{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
677				     CTL_CMD_FLAG_OK_ON_STOPPED |
678				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
679				     CTL_CMD_FLAG_OK_ON_SECONDARY |
680				     CTL_FLAG_DATA_OUT,
681 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
682
683/* 56 RESERVE(10) */
684{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
685				    CTL_CMD_FLAG_OK_ON_BOTH |
686				    CTL_CMD_FLAG_OK_ON_STOPPED |
687				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
688				    CTL_CMD_FLAG_OK_ON_SECONDARY |
689				    CTL_FLAG_DATA_OUT,
690 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
691
692/* 57 RELEASE(10) */
693{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
694				   CTL_CMD_FLAG_OK_ON_BOTH |
695				   CTL_CMD_FLAG_OK_ON_STOPPED |
696				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
697				   CTL_CMD_FLAG_OK_ON_SECONDARY |
698				   CTL_FLAG_DATA_OUT,
699 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
700
701/* 58 REPAIR TRACK */
702{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
703
704/* 59 READ MASTER CUE */
705{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
706
707/* 5A MODE SENSE(10) */
708{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
709				    CTL_CMD_FLAG_OK_ON_STOPPED |
710				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
711				    CTL_CMD_FLAG_OK_ON_SECONDARY |
712				    CTL_FLAG_DATA_IN |
713				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
714 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
715
716/* 5B CLOSE TRACK/SESSION */
717{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
718
719/* 5C READ BUFFER CAPACITY */
720{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
721
722/* 5D SEND CUE SHEET */
723{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
724
725/* 5E PERSISTENT RESERVE IN */
726{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
727 CTL_LUN_PAT_NONE},
728
729/* 5F PERSISTENT RESERVE OUT */
730{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
731 CTL_LUN_PAT_NONE},
732
733/* 60 */
734{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735
736/* 61 */
737{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738
739/* 62 */
740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741
742/* 63 */
743{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
744
745/* 64 */
746{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
747
748/* 65 */
749{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
750
751/* 66 */
752{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
753
754/* 67 */
755{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
756
757/* 68 */
758{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
759
760/* 69 */
761{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
762
763/* 6A */
764{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
765
766/* 6B */
767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
768
769/* 6C */
770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
771
772/* 6D */
773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774
775/* 6E */
776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777
778/* 6F */
779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780
781/* 70 */
782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783
784/* 71 */
785{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
786
787/* 72 */
788{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
789
790/* 73 */
791{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
792
793/* 74 */
794{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
795
796/* 75 */
797{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
798
799/* 76 */
800{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
801
802/* 77 */
803{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
804
805/* 78 */
806{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
807
808/* 79 */
809{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
810
811/* 7A */
812{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
813
814/* 7B */
815{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
816
817/* 7C */
818{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
819
820/* 7D */
821{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
822
823/* 7E */
824{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
825
826/* 7F */
827{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
828
829/* 80 XDWRITE EXTENDED(16) */
830{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831
832/* 81 REBUILD(16) */
833{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
834
835/* 82 REGENERATE(16) */
836{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
837
838/* 83 EXTENDED COPY */
839{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
840
841/* 84 RECEIVE COPY RESULTS */
842{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
843
844/* 85 */
845{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
846
847/* 86 ACCESS CONTROL IN */
848{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
849
850/* 87 ACCESS CONTROL OUT */
851{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
852
853/* 88 READ(16) */
854{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
855                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
856 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
857 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
858      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
859
860/* 89 COMPARE AND WRITE */
861{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
862 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
863 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
864      0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
865
866/* 8A WRITE(16) */
867{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
868 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
869 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
870      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
871
872/* 8B */
873{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
874
875/* 8C READ ATTRIBUTE */
876{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
877
878/* 8D WRITE ATTRIBUTE */
879{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
880
881/* 8E WRITE AND VERIFY(16) */
882{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
883 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
884 16, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
885      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
886
887/* 8F VERIFY(16) */
888{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
889			      CTL_FLAG_DATA_OUT |
890			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
891 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
892 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
893      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
894
895/* 90 PRE-FETCH(16) */
896{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
897
898/* 91 SYNCHRONIZE CACHE(16) */
899{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
900				   CTL_FLAG_DATA_NONE,
901 CTL_LUN_PAT_NONE,
902 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
903      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
904
905/* 92 LOCK UNLOCK CACHE(16) */
906{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
907
908/* 93 WRITE SAME(16) */
909{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
910				   CTL_FLAG_DATA_OUT,
911 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
912 16, {0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
913      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
914
915/* 94 */
916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917
918/* 95 */
919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920
921/* 96 */
922{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
923
924/* 97 */
925{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
926
927/* 98 */
928{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
929
930/* 99 */
931{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
932
933/* 9A */
934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
935
936/* 9B */
937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
938
939/* 9C */
940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
941
942/* 9D */
943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
944
945/* 9E SERVICE ACTION IN(16) */
946{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
947 CTL_LUN_PAT_NONE},
948
949/* 9F SERVICE ACTION OUT(16) */
950{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
951
952/* A0 REPORT LUNS */
953{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
954				  CTL_CMD_FLAG_ALLOW_ON_RESV |
955				  CTL_CMD_FLAG_NO_SENSE |
956				  CTL_CMD_FLAG_OK_ON_STOPPED |
957				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
958				  CTL_CMD_FLAG_OK_ON_OFFLINE |
959				  CTL_CMD_FLAG_OK_ON_SECONDARY |
960				  CTL_FLAG_DATA_IN |
961				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
962 CTL_LUN_PAT_NONE,
963 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
964
965/* A1 BLANK */
966{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
967
968/* A2 SEND EVENT */
969{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
970
971/* A3 MAINTENANCE IN */
972{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
973 CTL_LUN_PAT_NONE},
974
975/* A4 MAINTENANCE OUT */
976{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
977
978/* A5 MOVE MEDIUM */
979{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
980
981/* A6 EXCHANGE MEDIUM */
982{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
983
984/* A7 MOVE MEDIUM ATTACHED */
985{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
986
987/* A8 READ(12) */
988{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
989                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
990 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
991 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
992
993/* A9 PLAY TRACK RELATIVE(12) */
994{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
995
996/* AA WRITE(12) */
997{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
998 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
999 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1000
1001/* AB SERVICE ACTION IN(12) */
1002{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1003
1004/* AC ERASE(12) */
1005{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1006
1007/* AD READ DVD STRUCTURE */
1008{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1009
1010/* AE WRITE AND VERIFY(12) */
1011{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1012 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1013 12, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1014
1015/* AF VERIFY(12) */
1016{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1017			      CTL_FLAG_DATA_OUT |
1018			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1019 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1020 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1021
1022/* B0 SEARCH DATA HIGH(12) */
1023{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1024
1025/* B1 SEARCH DATA EQUAL(12) */
1026{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1027
1028/* B2 SEARCH DATA LOW(12) */
1029{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1030
1031/* B3 SET LIMITS(12) */
1032{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1033
1034/* B4 READ ELEMENT STATUS ATTACHED */
1035{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1036
1037/* B5 REQUEST VOLUME ELEMENT ADDRESS */
1038{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1039
1040/* B6 SEND VOLUME TAG */
1041{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1042
1043/* B7 READ DEFECT DATA(12) */
1044{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1045
1046/* B8 READ ELEMENT STATUS */
1047{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1048
1049/* B9 READ CD MSF */
1050{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1051
1052/* BA REDUNDANCY GROUP IN */
1053{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1054
1055/* BB REDUNDANCY GROUP OUT */
1056{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1057
1058/* BC SPARE IN */
1059{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1060
1061/* BD SPARE OUT */
1062{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1063
1064/* BE VOLUME SET IN */
1065{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1066
1067/* BF VOLUME SET OUT */
1068{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1069
1070/* C0 - ISC_SEND_MSG_SHORT */
1071//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1072{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1073 CTL_LUN_PAT_NONE,
1074 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1075      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1076
1077/* C1 - ISC_SEND_MSG */
1078//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1079{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1080 CTL_LUN_PAT_NONE,
1081 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1082      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1083
1084/* C2 - ISC_WRITE */
1085//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1086{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1087 CTL_LUN_PAT_NONE,
1088 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1089      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1090
1091/* C3 - ISC_READ */
1092//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1093{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1094 CTL_LUN_PAT_NONE,
1095 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1096      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1097
1098/* C4 */
1099{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1100
1101/* C5 */
1102{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1103
1104/* C6 */
1105{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1106
1107/* C7 */
1108{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1109
1110/* C8 */
1111{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1112
1113/* C9 */
1114{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1115
1116/* CA */
1117{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1118
1119/* CB */
1120{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1121
1122/* CC */
1123{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1124
1125/* CD */
1126{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1127
1128/* CE */
1129{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1130
1131/* CF */
1132{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1133
1134/* D0 */
1135{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1136
1137/* D1 */
1138{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1139
1140/* D2 */
1141{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1142
1143/* D3 */
1144{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145
1146/* D4 */
1147{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1148
1149/* D5 */
1150{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1151
1152/* D6 */
1153{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1154
1155/* D7 */
1156{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1157
1158/* D8 */
1159{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1160
1161/* D9 */
1162{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1163
1164/* DA */
1165{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1166
1167/* DB */
1168{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1169
1170/* DC */
1171{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1172
1173/* DD */
1174{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1175
1176/* DE */
1177{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1178
1179/* DF */
1180{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1181
1182/* E0 */
1183{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1184
1185/* E1 */
1186{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1187
1188/* E2 */
1189{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1190
1191/* E3 */
1192{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1193
1194/* E4 */
1195{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1196
1197/* E5 */
1198{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1199
1200/* E6 */
1201{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1202
1203/* E7 */
1204{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1205
1206/* E8 */
1207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1208
1209/* E9 */
1210{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1211
1212/* EA */
1213{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1214
1215/* EB */
1216{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1217
1218/* EC */
1219{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1220
1221/* ED */
1222{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1223
1224/* EE */
1225{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1226
1227/* EF */
1228{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1229
1230/* F0 */
1231{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1232
1233/* F1 */
1234{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1235
1236/* F2 */
1237{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1238
1239/* F3 */
1240{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1241
1242/* F4 */
1243{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1244
1245/* F5 */
1246{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1247
1248/* F6 */
1249{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1250
1251/* F7 */
1252{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1253
1254/* F8 */
1255{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1256
1257/* F9 */
1258{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1259
1260/* FA */
1261{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1262
1263/* FB */
1264{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1265
1266/* FC */
1267{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1268
1269/* FD */
1270{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1271
1272/* FE */
1273{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1274
1275/* FF */
1276{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1277
1278};
1279