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