ctl_cmd_table.c revision 274562
1122702Sandre/*-
2122702Sandre * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3122702Sandre * All rights reserved.
4122702Sandre *
5122702Sandre * Redistribution and use in source and binary forms, with or without
6122702Sandre * modification, are permitted provided that the following conditions
7122702Sandre * are met:
8122702Sandre * 1. Redistributions of source code must retain the above copyright
9122702Sandre *    notice, this list of conditions, and the following disclaimer,
10122702Sandre *    without modification.
11122702Sandre * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12122702Sandre *    substantially similar to the "NO WARRANTY" disclaimer below
13122702Sandre *    ("Disclaimer") and any redistribution must be conditioned upon
14122702Sandre *    including a substantially similar Disclaimer requirement for further
15122702Sandre *    binary redistribution.
16122702Sandre *
17122702Sandre * NO WARRANTY
18122702Sandre * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19122702Sandre * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20122702Sandre * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21122702Sandre * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22122702Sandre * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23122702Sandre * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24122702Sandre * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25122702Sandre * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26122702Sandre * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27122702Sandre * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28122702Sandre * POSSIBILITY OF SUCH DAMAGES.
29122702Sandre *
30122702Sandre * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31122702Sandre * $FreeBSD: stable/10/sys/cam/ctl/ctl_cmd_table.c 274562 2014-11-16 01:47:43Z mav $
32122702Sandre */
33122702Sandre/*
34122702Sandre * CAM Target Layer command table.
35122702Sandre *
36122702Sandre * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37122702Sandre */
38122702Sandre
39122759Sandre#include <sys/cdefs.h>
40122759Sandre#include <sys/param.h>
41122759Sandre#include <sys/systm.h>
42122759Sandre#include <sys/kernel.h>
43122702Sandre#include <sys/types.h>
44122702Sandre#include <sys/malloc.h>
45122702Sandre#include <sys/condvar.h>
46122702Sandre#include <sys/queue.h>
47122702Sandre#include <sys/sysctl.h>
48122702Sandre
49122702Sandre#include <cam/scsi/scsi_all.h>
50122702Sandre#include <cam/scsi/scsi_da.h>
51122702Sandre#include <cam/ctl/ctl_io.h>
52122702Sandre#include <cam/ctl/ctl.h>
53122702Sandre#include <cam/ctl/ctl_frontend.h>
54122702Sandre#include <cam/ctl/ctl_backend.h>
55122702Sandre#include <cam/ctl/ctl_frontend_internal.h>
56122702Sandre#include <cam/ctl/ctl_ioctl.h>
57122702Sandre#include <cam/ctl/ctl_ha.h>
58122702Sandre#include <cam/ctl/ctl_private.h>
59122702Sandre
60122702Sandre/*
61122702Sandre * Whenever support for a new command is added, it should be added to these
62122702Sandre * tables.
63122702Sandre */
64122702Sandre
65122702Sandre/* 5E PERSISTENT RESERVE IN */
66122702Sandreconst struct ctl_cmd_entry ctl_cmd_table_5e[32] =
67122702Sandre{
68122702Sandre/* 00 READ KEYS */
69122702Sandre{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
70122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
71122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
72122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
73122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
74122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
75122702Sandre						CTL_FLAG_DATA_IN |
76122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
77122702Sandre CTL_LUN_PAT_NONE,
78122702Sandre 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
79122702Sandre
80122702Sandre/* 01 READ RESERVATION */
81122702Sandre{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
82122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
83122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
84122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
85122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
86122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
87122702Sandre						CTL_FLAG_DATA_IN |
88122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
89122702Sandre CTL_LUN_PAT_NONE,
90122702Sandre 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
91122702Sandre
92122702Sandre/* 02 REPORT CAPABILITIES */
93122702Sandre{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
94122702Sandre					    CTL_CMD_FLAG_OK_ON_BOTH |
95122702Sandre					    CTL_CMD_FLAG_OK_ON_STOPPED |
96122702Sandre					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
97122702Sandre					    CTL_CMD_FLAG_OK_ON_OFFLINE |
98122702Sandre					    CTL_CMD_FLAG_OK_ON_SECONDARY |
99122702Sandre					    CTL_FLAG_DATA_IN |
100122702Sandre					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
101122702Sandre CTL_LUN_PAT_NONE,
102122702Sandre 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
103122702Sandre
104122702Sandre/* 03 READ FULL STATUS */
105122702Sandre{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
106122702Sandre					    CTL_CMD_FLAG_OK_ON_BOTH |
107122702Sandre					    CTL_CMD_FLAG_OK_ON_STOPPED |
108122702Sandre					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
109122702Sandre					    CTL_CMD_FLAG_OK_ON_OFFLINE |
110122702Sandre					    CTL_CMD_FLAG_OK_ON_SECONDARY |
111126239Smlaier					    CTL_FLAG_DATA_IN |
112122702Sandre					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
113122702Sandre CTL_LUN_PAT_NONE,
114122702Sandre 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
115122702Sandre
116122702Sandre/* 04-1f */
117122702Sandre};
118128872Sandre
119133497Sandre/* 5F PERSISTENT RESERVE OUT */
120128872Sandreconst struct ctl_cmd_entry ctl_cmd_table_5f[32] =
121128872Sandre{
122128872Sandre/* 00 REGISTER */
123128872Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
124128872Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
125128872Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
126128872Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
127128872Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
128128872Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
129128872Sandre						CTL_FLAG_DATA_OUT |
130128872Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
131133497Sandre CTL_LUN_PAT_NONE,
132128872Sandre 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
133128872Sandre
134128872Sandre/* 01 RESERVE */
135128872Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
136128872Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
137128872Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
138128872Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
139128872Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
140128872Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
141128872Sandre						CTL_FLAG_DATA_OUT |
142128872Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
143128872Sandre CTL_LUN_PAT_NONE,
144128872Sandre 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
145128872Sandre
146128872Sandre/* 02 RELEASE */
147128872Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
148128872Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
149128872Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
150128872Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
151128872Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
152128872Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
153128872Sandre						CTL_FLAG_DATA_OUT |
154122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
155122702Sandre CTL_LUN_PAT_NONE,
156122702Sandre 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
157122702Sandre
158122702Sandre/* 03 CLEAR */
159122702Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
160122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
161122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
162122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
163122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
164122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
165122702Sandre						CTL_FLAG_DATA_OUT |
166122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
167122702Sandre CTL_LUN_PAT_NONE,
168126239Smlaier 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
169122702Sandre
170122702Sandre/* 04 PREEMPT */
171122702Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
172122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
173122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
174128872Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
175122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
176133497Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
177128872Sandre						CTL_FLAG_DATA_OUT |
178122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
179122702Sandre CTL_LUN_PAT_NONE,
180122702Sandre 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
181122702Sandre
182122702Sandre/* 05 PREEMPT AND ABORT */
183122702Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
184122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
185122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
186122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
187122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
188122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
189122702Sandre						CTL_FLAG_DATA_OUT |
190128872Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
191128872Sandre CTL_LUN_PAT_NONE,
192122702Sandre 10, { 0x05, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
193122702Sandre
194122702Sandre/* 06 REGISTER AND IGNORE EXISTING KEY */
195122702Sandre{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
196122702Sandre						CTL_CMD_FLAG_OK_ON_BOTH |
197122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
198122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
199122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
200122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
201122702Sandre						CTL_FLAG_DATA_OUT |
202122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
203122702Sandre CTL_LUN_PAT_NONE,
204122702Sandre 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
205122702Sandre
206122702Sandre/* 07 REGISTER AND MOVE */
207122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
208122702Sandre
209122702Sandre/* 08-1f */
210122702Sandre};
211122702Sandre
212122702Sandre/* 83 EXTENDED COPY */
213122702Sandreconst struct ctl_cmd_entry ctl_cmd_table_83[32] =
214122702Sandre{
215122702Sandre/* 00 EXTENDED COPY (LID1) */
216122702Sandre{ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
217122702Sandre					    CTL_FLAG_DATA_OUT,
218122702Sandre CTL_LUN_PAT_NONE,
219122702Sandre 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
220122702Sandre
221122702Sandre/* 01 EXTENDED COPY (LID4) */
222122702Sandre{ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
223122702Sandre					    CTL_FLAG_DATA_OUT,
224122702Sandre CTL_LUN_PAT_NONE,
225122702Sandre 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
226122702Sandre
227122702Sandre/* 02 */
228122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
229122702Sandre
230122702Sandre/* 03 */
231122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
232122702Sandre
233122702Sandre/* 04 */
234122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
235122702Sandre
236122702Sandre/* 05 */
237122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
238122702Sandre
239122702Sandre/* 06 */
240122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
241122702Sandre
242122702Sandre/* 07 */
243122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
244122702Sandre
245122702Sandre/* 08 */
246122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
247122702Sandre
248122702Sandre/* 09 */
249122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
250122702Sandre
251122702Sandre/* 0A */
252122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
253122702Sandre
254122702Sandre/* 0B */
255122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
256128872Sandre
257122702Sandre/* 0C */
258122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
259122702Sandre
260122702Sandre/* 0D */
261128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
262122702Sandre
263122702Sandre/* 0E */
264122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
265122702Sandre
266122702Sandre/* 0F */
267122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
268122702Sandre
269128872Sandre/* 10 POPULATE TOKEN */
270122702Sandre{ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
271128872Sandre					CTL_FLAG_DATA_OUT |
272128872Sandre					CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
273122702Sandre CTL_LUN_PAT_NONE,
274128872Sandre 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
275122702Sandre       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
276122702Sandre
277122702Sandre/* 11 WRITE USING TOKEN */
278122702Sandre{ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
279122702Sandre					CTL_FLAG_DATA_OUT,
280122702Sandre CTL_LUN_PAT_NONE,
281122702Sandre 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
282122702Sandre       0xff, 0xff, 0xff, 0xff, 0, 0x07}},
283122702Sandre
284122702Sandre/* 12 */
285122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
286133480Sandre
287122702Sandre/* 13 */
288133480Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
289133480Sandre
290133480Sandre/* 14 */
291133480Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
292133480Sandre
293133480Sandre/* 15 */
294133480Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
295122702Sandre
296122702Sandre/* 16 */
297122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
298122702Sandre
299122702Sandre/* 17 */
300122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
301129017Sandre
302129017Sandre/* 18 */
303129017Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
304129017Sandre
305129017Sandre/* 19 */
306129017Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
307129017Sandre
308129017Sandre/* 1A */
309129017Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
310129017Sandre
311122702Sandre/* 1B */
312122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
313122702Sandre
314122702Sandre/* 1C COPY OPERATION ABORT */
315122702Sandre{ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
316122702Sandre					      CTL_FLAG_DATA_NONE,
317122702Sandre CTL_LUN_PAT_NONE,
318122702Sandre 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
319122702Sandre};
320122702Sandre
321122702Sandre/* 84 RECEIVE COPY STATUS */
322122702Sandreconst struct ctl_cmd_entry ctl_cmd_table_84[32] =
323122702Sandre{
324122702Sandre/* 00 RECEIVE COPY STATUS (LID1) */
325122702Sandre{ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
326122702Sandre CTL_CMD_FLAG_OK_ON_BOTH |
327122702Sandre CTL_FLAG_DATA_IN |
328128872Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
329122702Sandre CTL_LUN_PAT_NONE,
330122702Sandre 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
331122702Sandre
332122702Sandre/* 01 RECEIVE COPY DATA (LID1) */
333133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
334133497Sandre
335122702Sandre/* 02 */
336122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
337122702Sandre
338122702Sandre/* 03 RECEIVE COPY OPERATING PARAMETERS */
339133482Sandre{ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
340133482Sandre CTL_CMD_FLAG_OK_ON_BOTH |
341122702Sandre CTL_CMD_FLAG_OK_ON_STOPPED |
342122702Sandre CTL_CMD_FLAG_OK_ON_INOPERABLE |
343122702Sandre CTL_CMD_FLAG_OK_ON_SECONDARY |
344122702Sandre CTL_FLAG_DATA_IN |
345122702Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
346128872Sandre CTL_LUN_PAT_NONE,
347122702Sandre 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
348122702Sandre
349128872Sandre/* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
350122702Sandre{ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
351122702Sandre CTL_CMD_FLAG_OK_ON_BOTH |
352122702Sandre CTL_FLAG_DATA_IN |
353122702Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
354122702Sandre CTL_LUN_PAT_NONE,
355122702Sandre 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
356122702Sandre
357122702Sandre/* 05 RECEIVE COPY STATUS (LID4) */
358128872Sandre{ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
359128872Sandre CTL_CMD_FLAG_OK_ON_BOTH |
360128872Sandre CTL_FLAG_DATA_IN |
361128872Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
362128872Sandre CTL_LUN_PAT_NONE,
363128872Sandre 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
364133497Sandre
365122702Sandre/* 06 RECEIVE COPY DATA (LID4)*/
366122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
367122702Sandre
368122702Sandre/* 07 RECEIVE ROD TOKEN INFORMATION */
369122702Sandre{ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
370122702Sandre CTL_CMD_FLAG_OK_ON_BOTH |
371122702Sandre CTL_FLAG_DATA_IN |
372122702Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
373122702Sandre CTL_LUN_PAT_NONE,
374122702Sandre 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
375122702Sandre
376122702Sandre/* 08 REPORT ALL ROD TOKENS */
377133497Sandre{ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
378122702Sandre CTL_CMD_FLAG_OK_ON_BOTH |
379122702Sandre CTL_FLAG_DATA_IN |
380122702Sandre CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
381122702Sandre CTL_LUN_PAT_NONE,
382122702Sandre 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
383122702Sandre};
384122702Sandre
385122702Sandre/* 9E SERVICE ACTION IN(16) */
386122702Sandreconst struct ctl_cmd_entry ctl_cmd_table_9e[32] =
387122702Sandre{
388122702Sandre/* 00 */
389122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
390122702Sandre
391122702Sandre/* 01 */
392122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
393122702Sandre
394122702Sandre/* 02 */
395122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
396122702Sandre
397122702Sandre/* 03 */
398122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
399122702Sandre
400122702Sandre/* 04 */
401122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
402122702Sandre
403122702Sandre/* 05 */
404122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
405122702Sandre
406122702Sandre/* 06 */
407122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
408122702Sandre
409122702Sandre/* 07 */
410122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
411122702Sandre
412122702Sandre/* 08 */
413126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
414122702Sandre
415122702Sandre/* 09 */
416122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
417122702Sandre
418122702Sandre/* 0A */
419126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
420122702Sandre
421126239Smlaier/* 0B */
422126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
423122702Sandre
424122702Sandre/* 0C */
425122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
426122702Sandre
427122702Sandre/* 0D */
428126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
429126239Smlaier
430126239Smlaier/* 0E */
431122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
432122702Sandre
433122702Sandre/* 0F */
434122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
435126239Smlaier
436122702Sandre/* 10 */
437122702Sandre{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
438122702Sandre					  CTL_CMD_FLAG_OK_ON_STOPPED |
439122702Sandre					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
440122702Sandre					  CTL_CMD_FLAG_OK_ON_SECONDARY |
441126239Smlaier					  CTL_FLAG_DATA_IN |
442122702Sandre					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
443122702Sandre CTL_LUN_PAT_READCAP,
444122702Sandre 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
445126239Smlaier
446122702Sandre/* 11-1f */
447122702Sandre};
448122702Sandre
449122702Sandre/* A3 MAINTENANCE IN */
450122702Sandreconst struct ctl_cmd_entry ctl_cmd_table_a3[32] =
451122702Sandre{
452122702Sandre/* 00 */
453133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
454122702Sandre
455122702Sandre/* 01 */
456122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
457122702Sandre
458122702Sandre/* 02 */
459122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
460122702Sandre
461122702Sandre/* 03 */
462122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
463122702Sandre
464122702Sandre/* 04 */
465122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
466122702Sandre
467122702Sandre/* 05 */
468133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
469122702Sandre
470122702Sandre/* 06 */
471122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
472133497Sandre
473133497Sandre/* 07 */
474122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
475122702Sandre
476122702Sandre/* 08 */
477122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
478122702Sandre
479122702Sandre/* 09 */
480122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
481122702Sandre
482122702Sandre/* 0A REPORT TARGET PORT GROUPS */
483122702Sandre{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
484122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
485122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
486122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
487122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
488122702Sandre						CTL_FLAG_DATA_IN |
489122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
490123740Speter CTL_LUN_PAT_NONE,
491122702Sandre 12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
492122702Sandre
493122702Sandre/* 0B */
494122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
495122702Sandre
496122702Sandre/* 0C REPORT SUPPORTED_OPCODES */
497122702Sandre{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
498122702Sandre						CTL_CMD_FLAG_OK_ON_STOPPED |
499122702Sandre						CTL_CMD_FLAG_OK_ON_INOPERABLE |
500122702Sandre						CTL_CMD_FLAG_OK_ON_OFFLINE |
501122702Sandre						CTL_CMD_FLAG_OK_ON_SECONDARY |
502122702Sandre						CTL_FLAG_DATA_IN |
503122702Sandre						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
504122702Sandre CTL_LUN_PAT_NONE,
505122702Sandre 12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
506122702Sandre
507122702Sandre/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
508122702Sandre{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
509122702Sandre					   CTL_CMD_FLAG_OK_ON_STOPPED |
510128872Sandre					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
511128872Sandre					   CTL_CMD_FLAG_OK_ON_OFFLINE |
512128872Sandre					   CTL_CMD_FLAG_OK_ON_SECONDARY |
513122702Sandre					   CTL_FLAG_DATA_IN |
514122702Sandre					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
515122702Sandre CTL_LUN_PAT_NONE,
516122702Sandre 12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
517122702Sandre
518122702Sandre/* 0E */
519122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
520122702Sandre
521122702Sandre/* 0F REPORT TIMESTAMP */
522122702Sandre{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
523128872Sandre					CTL_CMD_FLAG_OK_ON_STOPPED |
524122702Sandre					CTL_CMD_FLAG_OK_ON_INOPERABLE |
525122702Sandre					CTL_CMD_FLAG_OK_ON_OFFLINE |
526122702Sandre					CTL_CMD_FLAG_OK_ON_SECONDARY |
527122702Sandre					CTL_FLAG_DATA_IN |
528122702Sandre					CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
529122702Sandre CTL_LUN_PAT_NONE,
530133497Sandre 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
531122702Sandre
532122702Sandre/* 10-1f */
533122759Sandre};
534122702Sandre
535122702Sandreconst struct ctl_cmd_entry ctl_cmd_table[256] =
536122702Sandre{
537122702Sandre/* 00 TEST UNIT READY */
538122702Sandre{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
539122702Sandre			  CTL_FLAG_DATA_NONE |
540122702Sandre			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
541122702Sandre CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
542122702Sandre
543128872Sandre/* 01 REWIND */
544122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
545128872Sandre
546122702Sandre/* 02 */
547122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
548122702Sandre
549122702Sandre/* 03 REQUEST SENSE */
550122702Sandre{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
551122702Sandre				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
552122702Sandre				       CTL_CMD_FLAG_ALLOW_ON_RESV |
553122702Sandre				       CTL_CMD_FLAG_NO_SENSE |
554122702Sandre				       CTL_CMD_FLAG_OK_ON_STOPPED |
555128872Sandre				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
556122702Sandre				       CTL_CMD_FLAG_OK_ON_OFFLINE |
557122702Sandre				       CTL_CMD_FLAG_OK_ON_SECONDARY |
558122702Sandre				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
559122702Sandre CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
560122702Sandre
561122702Sandre/* 04 FORMAT UNIT */
562126239Smlaier{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
563122702Sandre				CTL_CMD_FLAG_OK_ON_INOPERABLE |
564122702Sandre				CTL_FLAG_DATA_OUT,
565122702Sandre CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
566122702Sandre
567122702Sandre/* 05 READ BLOCK LIMITS */
568126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
569122702Sandre
570126239Smlaier/* 06 */
571126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572122702Sandre
573122702Sandre/* 07 REASSIGN BLOCKS */
574122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
575122702Sandre
576122702Sandre/* 08 READ(6) */
577126239Smlaier{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
578126239Smlaier				  CTL_FLAG_DATA_IN |
579126239Smlaier				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
580122702Sandre CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
581122702Sandre
582122702Sandre/* 09 */
583122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584126239Smlaier
585122702Sandre/* 0A WRITE(6) */
586122702Sandre{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
587122702Sandre				   CTL_FLAG_DATA_OUT,
588122702Sandre CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
589122702Sandre
590126239Smlaier/* 0B SEEK(6) */
591122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
592122702Sandre
593122702Sandre/* 0C */
594126239Smlaier{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
595122702Sandre
596128872Sandre/* 0D */
597122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
598122702Sandre
599122702Sandre/* 0E */
600122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
601122702Sandre
602122702Sandre/* 0F READ REVERSE(6) */
603133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
604122702Sandre
605122702Sandre/* 10 WRITE FILEMARKS(6) */
606122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
607122702Sandre
608122702Sandre/* 11 SPACE(6) */
609122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
610122702Sandre
611122702Sandre/* 12 INQUIRY */
612122702Sandre{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
613122702Sandre			      CTL_CMD_FLAG_ALLOW_ON_RESV |
614122702Sandre			      CTL_CMD_FLAG_NO_SENSE |
615122702Sandre			      CTL_CMD_FLAG_OK_ON_STOPPED |
616122702Sandre			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
617122702Sandre			      CTL_CMD_FLAG_OK_ON_OFFLINE |
618133497Sandre			      CTL_CMD_FLAG_OK_ON_SECONDARY |
619122702Sandre			      CTL_FLAG_DATA_IN |
620122702Sandre			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
621122702Sandre CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
622133497Sandre
623122702Sandre/* 13 */
624133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
625133497Sandre
626133497Sandre/* 14 RECOVER BUFFERED DATA */
627133497Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
628133497Sandre
629133497Sandre/* 15 MODE SELECT(6) */
630133497Sandre{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
631122702Sandre				     CTL_CMD_FLAG_OK_ON_STOPPED |
632133497Sandre				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
633133497Sandre				     CTL_CMD_FLAG_OK_ON_OFFLINE |
634133497Sandre				     CTL_CMD_FLAG_OK_ON_SECONDARY |
635133497Sandre				     CTL_FLAG_DATA_OUT,
636122702Sandre CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
637122702Sandre
638122702Sandre/* 16 RESERVE(6) */
639133497Sandre{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
640133497Sandre				    CTL_CMD_FLAG_OK_ON_BOTH |
641122702Sandre				    CTL_CMD_FLAG_OK_ON_STOPPED |
642133497Sandre				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
643133497Sandre				    CTL_CMD_FLAG_OK_ON_OFFLINE |
644133497Sandre				    CTL_CMD_FLAG_OK_ON_SECONDARY |
645122702Sandre				    CTL_FLAG_DATA_OUT,
646133497Sandre CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
647133497Sandre
648133497Sandre/* 17 RELEASE(6) */
649133497Sandre{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
650133497Sandre				   CTL_CMD_FLAG_OK_ON_BOTH |
651133497Sandre				   CTL_CMD_FLAG_OK_ON_STOPPED |
652122702Sandre				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
653122702Sandre				   CTL_CMD_FLAG_OK_ON_OFFLINE |
654122702Sandre				   CTL_CMD_FLAG_OK_ON_SECONDARY |
655122702Sandre				   CTL_FLAG_DATA_NONE,
656122702Sandre CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
657128872Sandre
658128872Sandre/* 18 COPY */
659128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
660122702Sandre
661122702Sandre/* 19 ERASE(6) */
662122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
663122702Sandre
664122702Sandre/* 1A MODE SENSE(6) */
665122702Sandre{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
666122702Sandre				    CTL_CMD_FLAG_OK_ON_STOPPED |
667128872Sandre				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
668128872Sandre				    CTL_CMD_FLAG_OK_ON_OFFLINE |
669128872Sandre				    CTL_CMD_FLAG_OK_ON_SECONDARY |
670128872Sandre				    CTL_FLAG_DATA_IN |
671128872Sandre				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
672128872Sandre CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}},
673128872Sandre
674128872Sandre/* 1B START STOP UNIT */
675133480Sandre{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
676128872Sandre				   CTL_CMD_FLAG_OK_ON_STOPPED |
677128872Sandre				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
678128872Sandre				   CTL_CMD_FLAG_OK_ON_OFFLINE |
679128872Sandre				   CTL_FLAG_DATA_NONE |
680128872Sandre				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
681128872Sandre CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
682128872Sandre
683128872Sandre/* 1C RECEIVE DIAGNOSTIC RESULTS */
684128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
685133480Sandre
686128872Sandre/* 1D SEND DIAGNOSTIC */
687128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
688128872Sandre
689128872Sandre/* 1E PREVENT ALLOW MEDIUM REMOVAL */
690128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
691128872Sandre
692128872Sandre/* 1F */
693128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
694128872Sandre
695128872Sandre/* 20 */
696122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
697122702Sandre
698122702Sandre/* 21 */
699122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
700122702Sandre
701122702Sandre/* 22 */
702122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
703122702Sandre
704122702Sandre/* 23 */
705122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
706122702Sandre
707122702Sandre/* 24 SET WINDOW */
708122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
709122702Sandre
710122702Sandre/* 25 READ CAPACITY(10) */
711122702Sandre{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
712122702Sandre				       CTL_CMD_FLAG_OK_ON_STOPPED |
713122702Sandre				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
714122702Sandre				       CTL_CMD_FLAG_OK_ON_SECONDARY |
715122702Sandre				       CTL_FLAG_DATA_IN |
716122702Sandre				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
717128872Sandre CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
718122702Sandre
719122702Sandre/* 26 */
720128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
721122702Sandre
722123740Speter/* 27 */
723128872Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
724122702Sandre
725122702Sandre/* 28 READ(10) */
726122702Sandre{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
727122702Sandre				  CTL_FLAG_DATA_IN |
728122702Sandre				  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
729128872Sandre CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
730128872Sandre 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
731128872Sandre
732128872Sandre/* 29 READ GENERATION */
733122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
734122702Sandre
735122702Sandre/* 2A WRITE(10) */
736122702Sandre{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
737122702Sandre CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
738122702Sandre 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
739122702Sandre
740122702Sandre/* 2B SEEK(10) */
741122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
742122702Sandre
743122702Sandre/* 2C ERASE(10) */
744122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
745122702Sandre
746122702Sandre/* 2D READ UPDATED BLOCK */
747122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
748122702Sandre
749122702Sandre/* 2E WRITE AND VERIFY(10) */
750122702Sandre{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
751122702Sandre CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
752122702Sandre 10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
753122702Sandre
754122702Sandre/* 2F VERIFY(10) */
755122702Sandre{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
756122702Sandre			      CTL_FLAG_DATA_OUT |
757122702Sandre			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
758122702Sandre CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
759122702Sandre 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
760122702Sandre
761122702Sandre/* 30 SEARCH DATA HIGH(10) */
762122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
763122702Sandre
764122702Sandre/* 31 SEARCH DATA EQUAL(10) */
765122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
766122702Sandre
767122702Sandre/* 32 SEARCH DATA LOW(10) */
768122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
769122702Sandre
770128872Sandre/* 33 SET LIMITS(10) */
771122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
772122702Sandre
773122702Sandre/* 34 PRE-FETCH(10) */
774122702Sandre{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
775122702Sandre
776128872Sandre/* 35 SYNCHRONIZE CACHE(10) */
777128872Sandre{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
778122702Sandre				   CTL_FLAG_DATA_NONE,
779122702Sandre CTL_LUN_PAT_NONE,
780 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
781
782/* 36 LOCK UNLOCK CACHE(10) */
783{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
784
785/* 37 READ DEFECT DATA(10) */
786{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
787				     CTL_FLAG_DATA_IN |
788				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
789 CTL_LUN_PAT_NONE,
790 10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
791
792/* 38 MEDIUM SCAN */
793{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
794
795/* 39 COMPARE */
796{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
797
798/* 3A COPY AND VERIFY */
799{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
800
801/* 3B WRITE BUFFER */
802{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
803				      CTL_FLAG_DATA_OUT,
804 CTL_LUN_PAT_NONE,
805 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
806
807/* 3C READ BUFFER */
808{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
809				     CTL_FLAG_DATA_IN |
810				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
811 CTL_LUN_PAT_NONE,
812 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
813
814/* 3D UPDATE BLOCK */
815{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
816
817/* 3E READ LONG */
818{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
819
820/* 3F WRITE LONG */
821{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
822
823/* 40 CHANGE DEFINITION */
824{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
825
826/* 41 WRITE SAME(10) */
827{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
828				   CTL_FLAG_DATA_OUT,
829 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
830 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
831
832/* 42 READ SUB-CHANNEL / UNMAP */
833{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
834 CTL_LUN_PAT_WRITE,
835 10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
836
837/* 43 READ TOC/PMA/ATIP */
838{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
839
840/* 44 REPORT DENSITY SUPPORT */
841{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
842
843/* 45 PLAY AUDIO(10) */
844{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
845
846/* 46 GET CONFIGURATION */
847{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
848
849/* 47 PLAY AUDIO MSF */
850{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
851
852/* 48 PLAY AUDIO TRACK INDEX */
853{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
854
855/* 49 PLAY TRACK RELATIVE(10) */
856{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
857
858/* 4A GET EVENT STATUS NOTIFICATION */
859{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
860
861/* 4B PAUSE/RESUME */
862{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
863
864/* 4C LOG SELECT */
865{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
866
867/* 4D LOG SENSE */
868{ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
869				    CTL_FLAG_DATA_IN |
870				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
871 CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} },
872
873/* 4E STOP PLAY/SCAN */
874{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
875
876/* 4F */
877{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
878
879/* 50 XDWRITE(10) */
880{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
881
882/* 51 XPWRITE(10) */
883{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
884
885/* 52 XDREAD(10) */
886{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
887
888/* 53 RESERVE TRACK */
889{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
890
891/* 54 SEND OPC INFORMATION */
892{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
893
894/* 55 MODE SELECT(10) */
895{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
896				     CTL_CMD_FLAG_OK_ON_STOPPED |
897				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
898				     CTL_CMD_FLAG_OK_ON_OFFLINE |
899				     CTL_CMD_FLAG_OK_ON_SECONDARY |
900				     CTL_FLAG_DATA_OUT,
901 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
902
903/* 56 RESERVE(10) */
904{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
905				    CTL_CMD_FLAG_OK_ON_BOTH |
906				    CTL_CMD_FLAG_OK_ON_STOPPED |
907				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
908				    CTL_CMD_FLAG_OK_ON_OFFLINE |
909				    CTL_CMD_FLAG_OK_ON_SECONDARY |
910				    CTL_FLAG_DATA_OUT,
911 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
912
913/* 57 RELEASE(10) */
914{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
915				   CTL_CMD_FLAG_OK_ON_BOTH |
916				   CTL_CMD_FLAG_OK_ON_STOPPED |
917				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
918				   CTL_CMD_FLAG_OK_ON_OFFLINE |
919				   CTL_CMD_FLAG_OK_ON_SECONDARY |
920				   CTL_FLAG_DATA_OUT,
921 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
922
923/* 58 REPAIR TRACK */
924{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
925
926/* 59 READ MASTER CUE */
927{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
928
929/* 5A MODE SENSE(10) */
930{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
931				    CTL_CMD_FLAG_OK_ON_STOPPED |
932				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
933				    CTL_CMD_FLAG_OK_ON_OFFLINE |
934				    CTL_CMD_FLAG_OK_ON_SECONDARY |
935				    CTL_FLAG_DATA_IN |
936				    CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
937 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
938
939/* 5B CLOSE TRACK/SESSION */
940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
941
942/* 5C READ BUFFER CAPACITY */
943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
944
945/* 5D SEND CUE SHEET */
946{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
947
948/* 5E PERSISTENT RESERVE IN */
949{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
950 CTL_LUN_PAT_NONE},
951
952/* 5F PERSISTENT RESERVE OUT */
953{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
954 CTL_LUN_PAT_NONE},
955
956/* 60 */
957{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
958
959/* 61 */
960{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
961
962/* 62 */
963{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
964
965/* 63 */
966{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
967
968/* 64 */
969{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
970
971/* 65 */
972{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
973
974/* 66 */
975{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
976
977/* 67 */
978{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
979
980/* 68 */
981{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
982
983/* 69 */
984{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
985
986/* 6A */
987{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
988
989/* 6B */
990{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
991
992/* 6C */
993{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
994
995/* 6D */
996{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
997
998/* 6E */
999{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1000
1001/* 6F */
1002{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1003
1004/* 70 */
1005{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1006
1007/* 71 */
1008{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1009
1010/* 72 */
1011{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1012
1013/* 73 */
1014{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1015
1016/* 74 */
1017{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1018
1019/* 75 */
1020{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1021
1022/* 76 */
1023{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1024
1025/* 77 */
1026{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1027
1028/* 78 */
1029{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1030
1031/* 79 */
1032{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1033
1034/* 7A */
1035{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1036
1037/* 7B */
1038{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1039
1040/* 7C */
1041{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1042
1043/* 7D */
1044{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1045
1046/* 7E */
1047{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1048
1049/* 7F */
1050{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1051
1052/* 80 XDWRITE EXTENDED(16) */
1053{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1054
1055/* 81 REBUILD(16) */
1056{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1057
1058/* 82 REGENERATE(16) */
1059{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1060
1061/* 83 EXTENDED COPY */
1062{__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1063 CTL_LUN_PAT_NONE},
1064
1065/* 84 RECEIVE COPY RESULTS */
1066{__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1067 CTL_LUN_PAT_NONE},
1068
1069/* 85 */
1070{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1071
1072/* 86 ACCESS CONTROL IN */
1073{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1074
1075/* 87 ACCESS CONTROL OUT */
1076{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1077
1078/* 88 READ(16) */
1079{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1080                                  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1081 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1082 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1083      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1084
1085/* 89 COMPARE AND WRITE */
1086{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1087 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1088 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1089      0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1090
1091/* 8A WRITE(16) */
1092{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1093 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1094 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1095      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1096
1097/* 8B */
1098{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1099
1100/* 8C READ ATTRIBUTE */
1101{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1102
1103/* 8D WRITE ATTRIBUTE */
1104{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1105
1106/* 8E WRITE AND VERIFY(16) */
1107{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1108 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1109 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1110      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1111
1112/* 8F VERIFY(16) */
1113{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1114			      CTL_FLAG_DATA_OUT |
1115			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1116 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1117 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1118      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1119
1120/* 90 PRE-FETCH(16) */
1121{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1122
1123/* 91 SYNCHRONIZE CACHE(16) */
1124{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
1125				   CTL_FLAG_DATA_NONE,
1126 CTL_LUN_PAT_NONE,
1127 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1128      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1129
1130/* 92 LOCK UNLOCK CACHE(16) */
1131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1132
1133/* 93 WRITE SAME(16) */
1134{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
1135				   CTL_FLAG_DATA_OUT,
1136 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1137 16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1138      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1139
1140/* 94 */
1141{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1142
1143/* 95 */
1144{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1145
1146/* 96 */
1147{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1148
1149/* 97 */
1150{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1151
1152/* 98 */
1153{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1154
1155/* 99 */
1156{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1157
1158/* 9A */
1159{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1160
1161/* 9B */
1162{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1163
1164/* 9C WRITE ATOMIC (16) */
1165{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1166 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1167 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1168      0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}},
1169
1170/* 9D */
1171{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1172
1173/* 9E SERVICE ACTION IN(16) */
1174{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1175 CTL_LUN_PAT_NONE},
1176
1177/* 9F SERVICE ACTION OUT(16) */
1178{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1179
1180/* A0 REPORT LUNS */
1181{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
1182				  CTL_CMD_FLAG_ALLOW_ON_RESV |
1183				  CTL_CMD_FLAG_NO_SENSE |
1184				  CTL_CMD_FLAG_OK_ON_STOPPED |
1185				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
1186				  CTL_CMD_FLAG_OK_ON_OFFLINE |
1187				  CTL_CMD_FLAG_OK_ON_SECONDARY |
1188				  CTL_FLAG_DATA_IN |
1189				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1190 CTL_LUN_PAT_NONE,
1191 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1192
1193/* A1 BLANK */
1194{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1195
1196/* A2 SEND EVENT */
1197{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1198
1199/* A3 MAINTENANCE IN */
1200{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1201 CTL_LUN_PAT_NONE},
1202
1203/* A4 MAINTENANCE OUT */
1204{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1205
1206/* A5 MOVE MEDIUM */
1207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1208
1209/* A6 EXCHANGE MEDIUM */
1210{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1211
1212/* A7 MOVE MEDIUM ATTACHED */
1213{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1214
1215/* A8 READ(12) */
1216{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1217                                  CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1218 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1219 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1220
1221/* A9 PLAY TRACK RELATIVE(12) */
1222{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1223
1224/* AA WRITE(12) */
1225{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1226 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1227 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1228
1229/* AB SERVICE ACTION IN(12) */
1230{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1231
1232/* AC ERASE(12) */
1233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1234
1235/* AD READ DVD STRUCTURE */
1236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1237
1238/* AE WRITE AND VERIFY(12) */
1239{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1240 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1241 12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1242
1243/* AF VERIFY(12) */
1244{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1245			      CTL_FLAG_DATA_OUT |
1246			      CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1247 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1248 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1249
1250/* B0 SEARCH DATA HIGH(12) */
1251{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1252
1253/* B1 SEARCH DATA EQUAL(12) */
1254{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1255
1256/* B2 SEARCH DATA LOW(12) */
1257{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1258
1259/* B3 SET LIMITS(12) */
1260{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1261
1262/* B4 READ ELEMENT STATUS ATTACHED */
1263{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1264
1265/* B5 REQUEST VOLUME ELEMENT ADDRESS */
1266{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1267
1268/* B6 SEND VOLUME TAG */
1269{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1270
1271/* B7 READ DEFECT DATA(12) */
1272{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
1273				     CTL_FLAG_DATA_IN |
1274				     CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1275 CTL_LUN_PAT_NONE,
1276 12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1277
1278/* B8 READ ELEMENT STATUS */
1279{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1280
1281/* B9 READ CD MSF */
1282{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1283
1284/* BA REDUNDANCY GROUP IN */
1285{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1286
1287/* BB REDUNDANCY GROUP OUT */
1288{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1289
1290/* BC SPARE IN */
1291{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1292
1293/* BD SPARE OUT */
1294{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1295
1296/* BE VOLUME SET IN */
1297{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1298
1299/* BF VOLUME SET OUT */
1300{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1301
1302/* C0 - ISC_SEND_MSG_SHORT */
1303//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1304{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1305 CTL_LUN_PAT_NONE,
1306 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1307      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1308
1309/* C1 - ISC_SEND_MSG */
1310//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1311{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1312 CTL_LUN_PAT_NONE,
1313 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1314      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1315
1316/* C2 - ISC_WRITE */
1317//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1318{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1319 CTL_LUN_PAT_NONE,
1320 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1321      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1322
1323/* C3 - ISC_READ */
1324//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1325{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1326 CTL_LUN_PAT_NONE,
1327 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1328      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1329
1330/* C4 */
1331{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1332
1333/* C5 */
1334{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1335
1336/* C6 */
1337{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1338
1339/* C7 */
1340{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1341
1342/* C8 */
1343{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1344
1345/* C9 */
1346{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1347
1348/* CA */
1349{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1350
1351/* CB */
1352{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1353
1354/* CC */
1355{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1356
1357/* CD */
1358{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1359
1360/* CE */
1361{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1362
1363/* CF */
1364{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1365
1366/* D0 */
1367{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1368
1369/* D1 */
1370{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1371
1372/* D2 */
1373{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1374
1375/* D3 */
1376{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1377
1378/* D4 */
1379{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1380
1381/* D5 */
1382{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1383
1384/* D6 */
1385{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1386
1387/* D7 */
1388{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1389
1390/* D8 */
1391{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1392
1393/* D9 */
1394{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1395
1396/* DA */
1397{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1398
1399/* DB */
1400{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1401
1402/* DC */
1403{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1404
1405/* DD */
1406{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1407
1408/* DE */
1409{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1410
1411/* DF */
1412{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1413
1414/* E0 */
1415{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1416
1417/* E1 */
1418{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1419
1420/* E2 */
1421{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1422
1423/* E3 */
1424{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1425
1426/* E4 */
1427{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1428
1429/* E5 */
1430{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1431
1432/* E6 */
1433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1434
1435/* E7 */
1436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1437
1438/* E8 */
1439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1440
1441/* E9 */
1442{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1443
1444/* EA */
1445{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1446
1447/* EB */
1448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1449
1450/* EC */
1451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1452
1453/* ED */
1454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1455
1456/* EE */
1457{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1458
1459/* EF */
1460{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1461
1462/* F0 */
1463{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1464
1465/* F1 */
1466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1467
1468/* F2 */
1469{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1470
1471/* F3 */
1472{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1473
1474/* F4 */
1475{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1476
1477/* F5 */
1478{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1479
1480/* F6 */
1481{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1482
1483/* F7 */
1484{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1485
1486/* F8 */
1487{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1488
1489/* F9 */
1490{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1491
1492/* FA */
1493{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1494
1495/* FB */
1496{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1497
1498/* FC */
1499{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1500
1501/* FD */
1502{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1503
1504/* FE */
1505{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1506
1507/* FF */
1508{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1509
1510};
1511