ctl_cmd_table.c revision 270106
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 270106 2014-08-17 18:22:42Z 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_RES, 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_RES, 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{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
103					    CTL_CMD_FLAG_OK_ON_BOTH |
104					    CTL_CMD_FLAG_OK_ON_STOPPED |
105					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
106					    CTL_CMD_FLAG_OK_ON_SECONDARY |
107					    CTL_FLAG_DATA_IN |
108					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
109 CTL_LUN_PAT_NONE,
110 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
111
112/* 04-1f */
113};
114
115/* 5F PERSISTENT RESERVE OUT */
116const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
117{
118/* 00 REGISTER */
119{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
120						CTL_CMD_FLAG_OK_ON_BOTH |
121						CTL_CMD_FLAG_OK_ON_STOPPED |
122						CTL_CMD_FLAG_OK_ON_INOPERABLE |
123						CTL_CMD_FLAG_OK_ON_SECONDARY |
124						CTL_FLAG_DATA_OUT |
125						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
126 CTL_LUN_PAT_NONE,
127 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
128
129/* 01 RESERVE */
130{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
131						CTL_CMD_FLAG_OK_ON_BOTH |
132						CTL_CMD_FLAG_OK_ON_STOPPED |
133						CTL_CMD_FLAG_OK_ON_INOPERABLE |
134						CTL_CMD_FLAG_OK_ON_SECONDARY |
135						CTL_FLAG_DATA_OUT |
136						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
137 CTL_LUN_PAT_NONE,
138 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
139
140/* 02 RELEASE */
141{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
142						CTL_CMD_FLAG_OK_ON_BOTH |
143						CTL_CMD_FLAG_OK_ON_STOPPED |
144						CTL_CMD_FLAG_OK_ON_INOPERABLE |
145						CTL_CMD_FLAG_OK_ON_SECONDARY |
146						CTL_FLAG_DATA_OUT |
147						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
148 CTL_LUN_PAT_NONE,
149 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
150
151/* 03 CLEAR */
152{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
153						CTL_CMD_FLAG_OK_ON_BOTH |
154						CTL_CMD_FLAG_OK_ON_STOPPED |
155						CTL_CMD_FLAG_OK_ON_INOPERABLE |
156						CTL_CMD_FLAG_OK_ON_SECONDARY |
157						CTL_FLAG_DATA_OUT |
158						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
159 CTL_LUN_PAT_NONE,
160 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
161
162/* 04 PREEMPT */
163{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
164						CTL_CMD_FLAG_OK_ON_BOTH |
165						CTL_CMD_FLAG_OK_ON_STOPPED |
166						CTL_CMD_FLAG_OK_ON_INOPERABLE |
167						CTL_CMD_FLAG_OK_ON_SECONDARY |
168						CTL_FLAG_DATA_OUT |
169						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
170 CTL_LUN_PAT_NONE,
171 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
172
173/* 05 PREEMPT AND ABORT */
174{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
175
176/* 06 REGISTER AND IGNORE EXISTING KEY */
177{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
178						CTL_CMD_FLAG_OK_ON_BOTH |
179						CTL_CMD_FLAG_OK_ON_STOPPED |
180						CTL_CMD_FLAG_OK_ON_INOPERABLE |
181						CTL_CMD_FLAG_OK_ON_SECONDARY |
182						CTL_FLAG_DATA_OUT |
183						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
184 CTL_LUN_PAT_NONE,
185 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
186
187/* 07 REGISTER AND MOVE */
188{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
189
190/* 08-1f */
191};
192
193/* 83 EXTENDED COPY */
194const struct ctl_cmd_entry ctl_cmd_table_83[32] =
195{
196/* 00 EXTENDED COPY (LID1) */
197{ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
198					    CTL_FLAG_DATA_OUT,
199 CTL_LUN_PAT_NONE,
200 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
201
202/* 01 EXTENDED COPY (LID4) */
203{ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
204					    CTL_FLAG_DATA_OUT,
205 CTL_LUN_PAT_NONE,
206 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
207
208/* 02 */
209{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
210
211/* 03 */
212{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
213
214/* 04 */
215{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
216
217/* 05 */
218{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
219
220/* 06 */
221{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
222
223/* 07 */
224{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
225
226/* 08 */
227{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
228
229/* 09 */
230{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
231
232/* 0A */
233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
234
235/* 0B */
236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
237
238/* 0C */
239{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
240
241/* 0D */
242{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
243
244/* 0E */
245{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
246
247/* 0F */
248{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
249
250/* 10 POPULATE TOKEN */
251{ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
252					CTL_FLAG_DATA_OUT,
253 CTL_LUN_PAT_NONE,
254 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
255       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
256
257/* 11 WRITE USING TOKEN */
258{ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
259					CTL_FLAG_DATA_OUT,
260 CTL_LUN_PAT_NONE,
261 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
262       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
263
264/* 12 */
265{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
266
267/* 13 */
268{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
269
270/* 14 */
271{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
272
273/* 15 */
274{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
275
276/* 16 */
277{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
278
279/* 17 */
280{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
281
282/* 18 */
283{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
284
285/* 19 */
286{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
287
288/* 1A */
289{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
290
291/* 1B */
292{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
293
294/* 1C COPY OPERATION ABORT */
295{ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
296					      CTL_FLAG_DATA_NONE,
297 CTL_LUN_PAT_NONE,
298 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
299};
300
301/* 84 RECEIVE COPY STATUS */
302const struct ctl_cmd_entry ctl_cmd_table_84[32] =
303{
304/* 00 RECEIVE COPY STATUS (LID1) */
305{ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
306 CTL_CMD_FLAG_OK_ON_BOTH |
307 CTL_FLAG_DATA_IN,
308 CTL_LUN_PAT_NONE,
309 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
310
311/* 01 RECEIVE COPY DATA (LID1) */
312{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
313
314/* 02 */
315{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
316
317/* 03 RECEIVE COPY OPERATING PARAMETERS */
318{ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
319 CTL_CMD_FLAG_OK_ON_BOTH |
320 CTL_CMD_FLAG_OK_ON_STOPPED |
321 CTL_CMD_FLAG_OK_ON_INOPERABLE |
322 CTL_CMD_FLAG_OK_ON_SECONDARY |
323 CTL_FLAG_DATA_IN,
324 CTL_LUN_PAT_NONE,
325 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
326
327/* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
328{ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
329 CTL_CMD_FLAG_OK_ON_BOTH |
330 CTL_FLAG_DATA_IN,
331 CTL_LUN_PAT_NONE,
332 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
333
334/* 05 RECEIVE COPY STATUS (LID4) */
335{ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
336 CTL_CMD_FLAG_OK_ON_BOTH |
337 CTL_FLAG_DATA_IN,
338 CTL_LUN_PAT_NONE,
339 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
340
341/* 06 RECEIVE COPY DATA (LID4)*/
342{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
343
344/* 07 RECEIVE ROD TOKEN INFORMATION */
345{ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
346 CTL_CMD_FLAG_OK_ON_BOTH |
347 CTL_FLAG_DATA_IN,
348 CTL_LUN_PAT_NONE,
349 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
350
351/* 08 REPORT ALL ROD TOKENS */
352{ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
353 CTL_CMD_FLAG_OK_ON_BOTH |
354 CTL_FLAG_DATA_IN,
355 CTL_LUN_PAT_NONE,
356 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
357};
358
359/* 9E SERVICE ACTION IN(16) */
360const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
361{
362/* 00 */
363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
364
365/* 01 */
366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
367
368/* 02 */
369{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
370
371/* 03 */
372{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
373
374/* 04 */
375{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
376
377/* 05 */
378{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
379
380/* 06 */
381{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
382
383/* 07 */
384{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
385
386/* 08 */
387{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
388
389/* 09 */
390{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
391
392/* 0A */
393{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
394
395/* 0B */
396{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
397
398/* 0C */
399{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
400
401/* 0D */
402{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
403
404/* 0E */
405{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
406
407/* 0F */
408{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
409
410/* 10 */
411{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
412					  CTL_CMD_FLAG_OK_ON_STOPPED |
413					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
414					  CTL_CMD_FLAG_OK_ON_SECONDARY |
415					  CTL_FLAG_DATA_IN |
416					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
417 CTL_LUN_PAT_READCAP,
418 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
419
420/* 11-1f */
421};
422
423/* A3 MAINTENANCE IN */
424const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
425{
426/* 00 */
427{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
428
429/* 01 */
430{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
431
432/* 02 */
433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
434
435/* 03 */
436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
437
438/* 04 */
439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
440
441/* 05 */
442{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
443
444/* 06 */
445{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
446
447/* 07 */
448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
449
450/* 08 */
451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
452
453/* 09 */
454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
455
456/* 0A REPORT TARGET PORT GROUPS */
457{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
458						CTL_CMD_FLAG_OK_ON_STOPPED |
459						CTL_CMD_FLAG_OK_ON_INOPERABLE |
460						CTL_CMD_FLAG_OK_ON_SECONDARY |
461						CTL_FLAG_DATA_IN,
462 CTL_LUN_PAT_NONE,
463 12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
464
465/* 0B */
466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
467
468/* 0C REPORT SUPPORTED_OPCODES */
469{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
470						CTL_CMD_FLAG_OK_ON_STOPPED |
471						CTL_CMD_FLAG_OK_ON_INOPERABLE |
472						CTL_CMD_FLAG_OK_ON_SECONDARY |
473						CTL_FLAG_DATA_IN,
474 CTL_LUN_PAT_NONE,
475 12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
476
477/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
478{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
479					   CTL_CMD_FLAG_OK_ON_STOPPED |
480					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
481					   CTL_CMD_FLAG_OK_ON_SECONDARY |
482					   CTL_FLAG_DATA_IN,
483 CTL_LUN_PAT_NONE,
484 12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
485
486/* 0E */
487{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
488
489/* 0F REPORT TIMESTAMP */
490{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
491					CTL_CMD_FLAG_OK_ON_STOPPED |
492					CTL_CMD_FLAG_OK_ON_INOPERABLE |
493					CTL_CMD_FLAG_OK_ON_SECONDARY |
494					CTL_FLAG_DATA_IN,
495 CTL_LUN_PAT_NONE,
496 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
497
498/* 10-1f */
499};
500
501const struct ctl_cmd_entry ctl_cmd_table[256] =
502{
503/* 00 TEST UNIT READY */
504{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
505			  CTL_FLAG_DATA_NONE |
506			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
507 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
508
509/* 01 REWIND */
510{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
511
512/* 02 */
513{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
514
515/* 03 REQUEST SENSE */
516{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
517				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
518				       CTL_CMD_FLAG_ALLOW_ON_RESV |
519				       CTL_CMD_FLAG_NO_SENSE |
520				       CTL_CMD_FLAG_OK_ON_STOPPED |
521				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
522				       CTL_CMD_FLAG_OK_ON_OFFLINE |
523				       CTL_CMD_FLAG_OK_ON_SECONDARY |
524				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
525 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
526
527/* 04 FORMAT UNIT */
528{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
529				CTL_CMD_FLAG_OK_ON_INOPERABLE |
530				CTL_FLAG_DATA_OUT,
531 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
532
533/* 05 READ BLOCK LIMITS */
534{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
535
536/* 06 */
537{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
538
539/* 07 REASSIGN BLOCKS */
540{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
541
542/* 08 READ(6) */
543{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
544				  CTL_FLAG_DATA_IN |
545				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
546 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
547
548/* 09 */
549{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
550
551/* 0A WRITE(6) */
552{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
553				   CTL_FLAG_DATA_OUT,
554 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
555
556/* 0B SEEK(6) */
557{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
558
559/* 0C */
560{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
561
562/* 0D */
563{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
564
565/* 0E */
566{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
567
568/* 0F READ REVERSE(6) */
569{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
570
571/* 10 WRITE FILEMARKS(6) */
572{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
573
574/* 11 SPACE(6) */
575{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
576
577/* 12 INQUIRY */
578{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
579			      CTL_CMD_FLAG_ALLOW_ON_RESV |
580			      CTL_CMD_FLAG_NO_SENSE |
581			      CTL_CMD_FLAG_OK_ON_STOPPED |
582			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
583			      CTL_CMD_FLAG_OK_ON_OFFLINE |
584			      CTL_CMD_FLAG_OK_ON_SECONDARY |
585			      CTL_FLAG_DATA_IN |
586			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
587 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
588
589/* 13 */
590{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
591
592/* 14 RECOVER BUFFERED DATA */
593{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
594
595/* 15 MODE SELECT(6) */
596{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
597				     CTL_CMD_FLAG_OK_ON_STOPPED |
598				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
599				     CTL_CMD_FLAG_OK_ON_SECONDARY |
600				     CTL_FLAG_DATA_OUT,
601 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
602
603/* 16 RESERVE(6) */
604{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
605				    CTL_CMD_FLAG_OK_ON_BOTH |
606				    CTL_CMD_FLAG_OK_ON_STOPPED |
607				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
608				    CTL_CMD_FLAG_OK_ON_SECONDARY |
609				    CTL_FLAG_DATA_OUT,
610 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
611
612/* 17 RELEASE(6) */
613{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
614				   CTL_CMD_FLAG_OK_ON_BOTH |
615				   CTL_CMD_FLAG_OK_ON_STOPPED |
616				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
617				   CTL_CMD_FLAG_OK_ON_SECONDARY |
618				   CTL_FLAG_DATA_NONE,
619 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
620
621/* 18 COPY */
622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623
624/* 19 ERASE(6) */
625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626
627/* 1A MODE SENSE(6) */
628{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
629				    CTL_CMD_FLAG_OK_ON_STOPPED |
630				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
631				    CTL_CMD_FLAG_OK_ON_SECONDARY |
632				    CTL_FLAG_DATA_IN |
633				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
634 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0, 0xff, 0x07}},
635
636/* 1B START STOP UNIT */
637{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
638				   CTL_CMD_FLAG_OK_ON_STOPPED |
639				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
640				   CTL_CMD_FLAG_OK_ON_OFFLINE |
641				   CTL_FLAG_DATA_NONE |
642				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
643 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
644
645/* 1C RECEIVE DIAGNOSTIC RESULTS */
646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647
648/* 1D SEND DIAGNOSTIC */
649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650
651/* 1E PREVENT ALLOW MEDIUM REMOVAL */
652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653
654/* 1F */
655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656
657/* 20 */
658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
659
660/* 21 */
661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
662
663/* 22 */
664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
665
666/* 23 */
667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
668
669/* 24 SET WINDOW */
670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
671
672/* 25 READ CAPACITY(10) */
673{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
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_IN |
678				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
679 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
680
681/* 26 */
682{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
683
684/* 27 */
685{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
686
687/* 28 READ(10) */
688{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
689				  CTL_FLAG_DATA_IN |
690				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
691 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
692 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
693
694/* 29 READ GENERATION */
695{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
696
697/* 2A WRITE(10) */
698{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
699 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
700 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
701
702/* 2B SEEK(10) */
703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
704
705/* 2C ERASE(10) */
706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
707
708/* 2D READ UPDATED BLOCK */
709{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
710
711/* 2E WRITE AND VERIFY(10) */
712{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
713 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
714 10, {0x10, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
715
716/* 2F VERIFY(10) */
717{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
718			      CTL_FLAG_DATA_OUT |
719			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
720 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
721 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
722
723/* 30 SEARCH DATA HIGH(10) */
724{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
725
726/* 31 SEARCH DATA EQUAL(10) */
727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
728
729/* 32 SEARCH DATA LOW(10) */
730{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
731
732/* 33 SET LIMITS(10) */
733{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
734
735/* 34 PRE-FETCH(10) */
736{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
737
738/* 35 SYNCHRONIZE CACHE(10) */
739{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
740				   CTL_FLAG_DATA_NONE,
741 CTL_LUN_PAT_NONE,
742 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
743
744/* 36 LOCK UNLOCK CACHE(10) */
745{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
746
747/* 37 READ DEFECT DATA(10) */
748{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
749
750/* 38 MEDIUM SCAN */
751{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
752
753/* 39 COMPARE */
754{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
755
756/* 3A COPY AND VERIFY */
757{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
758
759/* 3B WRITE BUFFER */
760{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
761				      CTL_FLAG_DATA_OUT,
762 CTL_LUN_PAT_NONE,
763 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
764
765/* 3C READ BUFFER */
766{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
767				     CTL_FLAG_DATA_IN |
768				     CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
769 CTL_LUN_PAT_NONE,
770 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
771
772/* 3D UPDATE BLOCK */
773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774
775/* 3E READ LONG */
776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777
778/* 3F WRITE LONG */
779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780
781/* 40 CHANGE DEFINITION */
782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783
784/* 41 WRITE SAME(10) */
785{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
786				   CTL_FLAG_DATA_OUT,
787 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
788 10, {0x0a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
789
790/* 42 READ SUB-CHANNEL / UNMAP */
791{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
792 CTL_LUN_PAT_WRITE,
793 10, {0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
794
795/* 43 READ TOC/PMA/ATIP */
796{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
797
798/* 44 REPORT DENSITY SUPPORT */
799{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
800
801/* 45 PLAY AUDIO(10) */
802{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
803
804/* 46 GET CONFIGURATION */
805{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
806
807/* 47 PLAY AUDIO MSF */
808{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
809
810/* 48 PLAY AUDIO TRACK INDEX */
811{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
812
813/* 49 PLAY TRACK RELATIVE(10) */
814{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
815
816/* 4A GET EVENT STATUS NOTIFICATION */
817{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
818
819/* 4B PAUSE/RESUME */
820{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
821
822/* 4C LOG SELECT */
823{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
824
825/* 4D LOG SENSE */
826{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
827
828/* 4E STOP PLAY/SCAN */
829{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
830
831/* 4F */
832{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
833
834/* 50 XDWRITE(10) */
835{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
836
837/* 51 XPWRITE(10) */
838{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
839
840/* 52 XDREAD(10) */
841{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
842
843/* 53 RESERVE TRACK */
844{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
845
846/* 54 SEND OPC INFORMATION */
847{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
848
849/* 55 MODE SELECT(10) */
850{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
851				     CTL_CMD_FLAG_OK_ON_STOPPED |
852				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
853				     CTL_CMD_FLAG_OK_ON_SECONDARY |
854				     CTL_FLAG_DATA_OUT,
855 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
856
857/* 56 RESERVE(10) */
858{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
859				    CTL_CMD_FLAG_OK_ON_BOTH |
860				    CTL_CMD_FLAG_OK_ON_STOPPED |
861				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
862				    CTL_CMD_FLAG_OK_ON_SECONDARY |
863				    CTL_FLAG_DATA_OUT,
864 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
865
866/* 57 RELEASE(10) */
867{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
868				   CTL_CMD_FLAG_OK_ON_BOTH |
869				   CTL_CMD_FLAG_OK_ON_STOPPED |
870				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
871				   CTL_CMD_FLAG_OK_ON_SECONDARY |
872				   CTL_FLAG_DATA_OUT,
873 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
874
875/* 58 REPAIR TRACK */
876{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
877
878/* 59 READ MASTER CUE */
879{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
880
881/* 5A MODE SENSE(10) */
882{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
883				    CTL_CMD_FLAG_OK_ON_STOPPED |
884				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
885				    CTL_CMD_FLAG_OK_ON_SECONDARY |
886				    CTL_FLAG_DATA_IN |
887				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
888 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
889
890/* 5B CLOSE TRACK/SESSION */
891{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
892
893/* 5C READ BUFFER CAPACITY */
894{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
895
896/* 5D SEND CUE SHEET */
897{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
898
899/* 5E PERSISTENT RESERVE IN */
900{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
901 CTL_LUN_PAT_NONE},
902
903/* 5F PERSISTENT RESERVE OUT */
904{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
905 CTL_LUN_PAT_NONE},
906
907/* 60 */
908{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
909
910/* 61 */
911{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
912
913/* 62 */
914{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
915
916/* 63 */
917{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
918
919/* 64 */
920{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
921
922/* 65 */
923{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
924
925/* 66 */
926{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
927
928/* 67 */
929{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
930
931/* 68 */
932{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
933
934/* 69 */
935{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
936
937/* 6A */
938{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
939
940/* 6B */
941{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
942
943/* 6C */
944{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
945
946/* 6D */
947{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
948
949/* 6E */
950{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
951
952/* 6F */
953{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
954
955/* 70 */
956{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
957
958/* 71 */
959{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
960
961/* 72 */
962{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
963
964/* 73 */
965{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
966
967/* 74 */
968{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
969
970/* 75 */
971{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
972
973/* 76 */
974{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
975
976/* 77 */
977{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
978
979/* 78 */
980{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
981
982/* 79 */
983{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
984
985/* 7A */
986{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
987
988/* 7B */
989{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
990
991/* 7C */
992{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
993
994/* 7D */
995{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
996
997/* 7E */
998{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
999
1000/* 7F */
1001{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1002
1003/* 80 XDWRITE EXTENDED(16) */
1004{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1005
1006/* 81 REBUILD(16) */
1007{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1008
1009/* 82 REGENERATE(16) */
1010{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011
1012/* 83 EXTENDED COPY */
1013{__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1014 CTL_LUN_PAT_NONE},
1015
1016/* 84 RECEIVE COPY RESULTS */
1017{__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1018 CTL_LUN_PAT_NONE},
1019
1020/* 85 */
1021{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1022
1023/* 86 ACCESS CONTROL IN */
1024{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1025
1026/* 87 ACCESS CONTROL OUT */
1027{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1028
1029/* 88 READ(16) */
1030{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1031                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1032 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1033 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1034      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1035
1036/* 89 COMPARE AND WRITE */
1037{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1038 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1039 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1040      0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1041
1042/* 8A WRITE(16) */
1043{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1044 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1045 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1046      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1047
1048/* 8B */
1049{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1050
1051/* 8C READ ATTRIBUTE */
1052{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1053
1054/* 8D WRITE ATTRIBUTE */
1055{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1056
1057/* 8E WRITE AND VERIFY(16) */
1058{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1059 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1060 16, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1061      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1062
1063/* 8F VERIFY(16) */
1064{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1065			      CTL_FLAG_DATA_OUT |
1066			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1067 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1068 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1069      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1070
1071/* 90 PRE-FETCH(16) */
1072{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1073
1074/* 91 SYNCHRONIZE CACHE(16) */
1075{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
1076				   CTL_FLAG_DATA_NONE,
1077 CTL_LUN_PAT_NONE,
1078 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1079      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1080
1081/* 92 LOCK UNLOCK CACHE(16) */
1082{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1083
1084/* 93 WRITE SAME(16) */
1085{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
1086				   CTL_FLAG_DATA_OUT,
1087 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1088 16, {0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1089      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1090
1091/* 94 */
1092{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1093
1094/* 95 */
1095{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1096
1097/* 96 */
1098{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1099
1100/* 97 */
1101{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1102
1103/* 98 */
1104{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1105
1106/* 99 */
1107{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1108
1109/* 9A */
1110{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1111
1112/* 9B */
1113{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1114
1115/* 9C */
1116{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1117
1118/* 9D */
1119{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1120
1121/* 9E SERVICE ACTION IN(16) */
1122{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1123 CTL_LUN_PAT_NONE},
1124
1125/* 9F SERVICE ACTION OUT(16) */
1126{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1127
1128/* A0 REPORT LUNS */
1129{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
1130				  CTL_CMD_FLAG_ALLOW_ON_RESV |
1131				  CTL_CMD_FLAG_NO_SENSE |
1132				  CTL_CMD_FLAG_OK_ON_STOPPED |
1133				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
1134				  CTL_CMD_FLAG_OK_ON_OFFLINE |
1135				  CTL_CMD_FLAG_OK_ON_SECONDARY |
1136				  CTL_FLAG_DATA_IN |
1137				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1138 CTL_LUN_PAT_NONE,
1139 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1140
1141/* A1 BLANK */
1142{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1143
1144/* A2 SEND EVENT */
1145{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1146
1147/* A3 MAINTENANCE IN */
1148{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1149 CTL_LUN_PAT_NONE},
1150
1151/* A4 MAINTENANCE OUT */
1152{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1153
1154/* A5 MOVE MEDIUM */
1155{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1156
1157/* A6 EXCHANGE MEDIUM */
1158{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1159
1160/* A7 MOVE MEDIUM ATTACHED */
1161{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1162
1163/* A8 READ(12) */
1164{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1165                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1166 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1167 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1168
1169/* A9 PLAY TRACK RELATIVE(12) */
1170{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1171
1172/* AA WRITE(12) */
1173{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1174 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1175 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1176
1177/* AB SERVICE ACTION IN(12) */
1178{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1179
1180/* AC ERASE(12) */
1181{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1182
1183/* AD READ DVD STRUCTURE */
1184{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1185
1186/* AE WRITE AND VERIFY(12) */
1187{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1188 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1189 12, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1190
1191/* AF VERIFY(12) */
1192{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1193			      CTL_FLAG_DATA_OUT |
1194			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1195 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1196 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1197
1198/* B0 SEARCH DATA HIGH(12) */
1199{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1200
1201/* B1 SEARCH DATA EQUAL(12) */
1202{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1203
1204/* B2 SEARCH DATA LOW(12) */
1205{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1206
1207/* B3 SET LIMITS(12) */
1208{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1209
1210/* B4 READ ELEMENT STATUS ATTACHED */
1211{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1212
1213/* B5 REQUEST VOLUME ELEMENT ADDRESS */
1214{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1215
1216/* B6 SEND VOLUME TAG */
1217{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1218
1219/* B7 READ DEFECT DATA(12) */
1220{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1221
1222/* B8 READ ELEMENT STATUS */
1223{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1224
1225/* B9 READ CD MSF */
1226{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1227
1228/* BA REDUNDANCY GROUP IN */
1229{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1230
1231/* BB REDUNDANCY GROUP OUT */
1232{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1233
1234/* BC SPARE IN */
1235{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1236
1237/* BD SPARE OUT */
1238{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1239
1240/* BE VOLUME SET IN */
1241{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1242
1243/* BF VOLUME SET OUT */
1244{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1245
1246/* C0 - ISC_SEND_MSG_SHORT */
1247//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1248{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1249 CTL_LUN_PAT_NONE,
1250 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1251      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1252
1253/* C1 - ISC_SEND_MSG */
1254//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1255{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1256 CTL_LUN_PAT_NONE,
1257 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1258      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1259
1260/* C2 - ISC_WRITE */
1261//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1262{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1263 CTL_LUN_PAT_NONE,
1264 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1265      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1266
1267/* C3 - ISC_READ */
1268//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1269{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1270 CTL_LUN_PAT_NONE,
1271 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1272      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1273
1274/* C4 */
1275{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1276
1277/* C5 */
1278{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1279
1280/* C6 */
1281{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1282
1283/* C7 */
1284{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1285
1286/* C8 */
1287{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1288
1289/* C9 */
1290{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1291
1292/* CA */
1293{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1294
1295/* CB */
1296{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1297
1298/* CC */
1299{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1300
1301/* CD */
1302{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1303
1304/* CE */
1305{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1306
1307/* CF */
1308{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1309
1310/* D0 */
1311{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1312
1313/* D1 */
1314{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1315
1316/* D2 */
1317{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1318
1319/* D3 */
1320{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1321
1322/* D4 */
1323{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1324
1325/* D5 */
1326{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1327
1328/* D6 */
1329{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1330
1331/* D7 */
1332{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1333
1334/* D8 */
1335{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1336
1337/* D9 */
1338{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1339
1340/* DA */
1341{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1342
1343/* DB */
1344{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1345
1346/* DC */
1347{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1348
1349/* DD */
1350{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1351
1352/* DE */
1353{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1354
1355/* DF */
1356{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1357
1358/* E0 */
1359{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1360
1361/* E1 */
1362{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1363
1364/* E2 */
1365{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1366
1367/* E3 */
1368{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1369
1370/* E4 */
1371{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1372
1373/* E5 */
1374{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1375
1376/* E6 */
1377{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1378
1379/* E7 */
1380{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1381
1382/* E8 */
1383{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1384
1385/* E9 */
1386{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1387
1388/* EA */
1389{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1390
1391/* EB */
1392{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1393
1394/* EC */
1395{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1396
1397/* ED */
1398{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1399
1400/* EE */
1401{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1402
1403/* EF */
1404{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1405
1406/* F0 */
1407{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1408
1409/* F1 */
1410{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1411
1412/* F2 */
1413{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1414
1415/* F3 */
1416{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1417
1418/* F4 */
1419{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1420
1421/* F5 */
1422{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1423
1424/* F6 */
1425{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1426
1427/* F7 */
1428{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1429
1430/* F8 */
1431{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1432
1433/* F9 */
1434{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1435
1436/* FA */
1437{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1438
1439/* FB */
1440{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1441
1442/* FC */
1443{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1444
1445/* FD */
1446{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1447
1448/* FE */
1449{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1450
1451/* FF */
1452{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1453
1454};
1455