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