FreeBSD kernel CAM code
scsi_sa.h
Go to the documentation of this file.
1/*-
2 * Structure and function declarations for the
3 * SCSI Sequential Access Peripheral driver for CAM.
4 *
5 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
6 *
7 * Copyright (c) 1999, 2000 Matthew Jacob
8 * Copyright (c) 2013, 2014, 2015 Spectra Logic Corporation
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 * notice, this list of conditions, and the following disclaimer,
16 * without modification, immediately at the beginning of the file.
17 * 2. The name of the author may not be used to endorse or promote products
18 * derived from this software without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
24 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 *
32 * $FreeBSD$
33 */
34
35#ifndef _SCSI_SCSI_SA_H
36#define _SCSI_SCSI_SA_H 1
37
38#include <sys/cdefs.h>
39
41{
42 u_int8_t opcode;
43 u_int8_t byte2;
44 u_int8_t unused[3];
45 u_int8_t control;
46};
47
49{
50 u_int8_t gran;
51#define RBL_GRAN_MASK 0x1F
52#define RBL_GRAN(rblim) ((rblim)->gran & RBL_GRAN_MASK)
53 u_int8_t maximum[3];
54 u_int8_t minimum[2];
55};
56
58{
59 u_int8_t opcode;
60 u_int8_t sli_fixed;
61#define SAR_SLI 0x02
62#define SARW_FIXED 0x01
63 u_int8_t length[3];
64 u_int8_t control;
65};
66
68{
69 u_int8_t opcode;
70 u_int8_t immediate;
71#define SLU_IMMED 0x01
72 u_int8_t reserved[2];
74#define SLU_EOT 0x04
75#define SLU_RETEN 0x02
76#define SLU_LOAD 0x01
77 u_int8_t control;
78};
79
81{
82 u_int8_t opcode;
83 u_int8_t immediate;
84#define SREW_IMMED 0x01
85 u_int8_t reserved[3];
86 u_int8_t control;
87};
88
89typedef enum {
97
99{
100 u_int8_t opcode;
101 u_int8_t code;
102#define SREW_IMMED 0x01
103 u_int8_t count[3];
104 u_int8_t control;
105};
106
108{
109 u_int8_t opcode;
110 u_int8_t byte2;
111#define SWFMRK_IMMED 0x01
112#define SWFMRK_WSMK 0x02
113 u_int8_t num_marks[3];
114 u_int8_t control;
115};
116
117/*
118 * Reserve and release unit have the same exact cdb format, but different
119 * opcodes.
120 */
122{
123 u_int8_t opcode;
125#define SRRU_LUN_MASK 0xE0
126#define SRRU_3RD_PARTY 0x10
127#define SRRU_3RD_SHAMT 1
128#define SRRU_3RD_MASK 0xE
129 u_int8_t reserved[3];
130 u_int8_t control;
131};
132
133/*
134 * Erase a tape
135 */
137{
138 u_int8_t opcode;
139 u_int8_t lun_imm_long;
140#define SE_LUN_MASK 0xE0
141#define SE_LONG 0x1
142#define SE_IMMED 0x2
143 u_int8_t reserved[3];
144 u_int8_t control;
145};
146
147/*
148 * Set tape capacity.
149 */
151{
152 u_int8_t opcode;
153 u_int8_t byte1;
154#define SA_SSC_IMMED 0x01
155 u_int8_t reserved;
156 u_int8_t cap_proportion[2];
157 u_int8_t control;
158};
159
160/*
161 * Format tape media. The CDB opcode is the same as the disk-specific
162 * FORMAT UNIT command, but the fields are different inside the CDB. Thus
163 * the reason for a separate definition here.
164 */
166{
167 u_int8_t opcode;
168 u_int8_t byte1;
169#define SFM_IMMED 0x01
170#define SFM_VERIFY 0x02
171 u_int8_t byte2;
172#define SFM_FORMAT_DEFAULT 0x00
173#define SFM_FORMAT_PARTITION 0x01
174#define SFM_FORMAT_DEF_PART 0x02
175#define SFM_FORMAT_MASK 0x0f
176 u_int8_t length[2];
177 u_int8_t control;
178};
179
181{
182 u_int8_t opcode;
183 u_int8_t reserved1;
185#define SAO_ALLOW_OVERWRITE_DISABLED 0x00
186#define SAO_ALLOW_OVERWRITE_CUR_POS 0x01
187#define SAO_ALLOW_OVERWRITE_FORMAT 0x02
188 u_int8_t partition;
189 u_int8_t logical_id[8];
190 u_int8_t reserved2[3];
191 u_int8_t control;
192};
193
194/*
195 * Dev specific mode page masks.
196 */
197#define SMH_SA_WP 0x80
198#define SMH_SA_BUF_MODE_MASK 0x70
199#define SMH_SA_BUF_MODE_NOBUF 0x00
200#define SMH_SA_BUF_MODE_SIBUF 0x10 /* Single-Initiator buffering */
201#define SMH_SA_BUF_MODE_MIBUF 0x20 /* Multi-Initiator buffering */
202#define SMH_SA_SPEED_MASK 0x0F
203#define SMH_SA_SPEED_DEFAULT 0x00
204
205/*
206 * Sequential-access specific mode page numbers.
207 */
208#define SA_DEVICE_CONFIGURATION_PAGE 0x10
209#define SA_MEDIUM_PARTITION_PAGE_1 0x11
210#define SA_MEDIUM_PARTITION_PAGE_2 0x12
211#define SA_MEDIUM_PARTITION_PAGE_3 0x13
212#define SA_MEDIUM_PARTITION_PAGE_4 0x14
213#define SA_DATA_COMPRESSION_PAGE 0x0f /* SCSI-3 */
214
215/*
216 * Mode page definitions.
217 */
218
219/* See SCSI-II spec 9.3.3.1 */
221 u_int8_t pagecode; /* 0x10 */
222 u_int8_t pagelength; /* 0x0e */
223 u_int8_t byte2; /* CAP, CAF, Active Format */
227 u_int8_t wrdelay_time[2];
228 u_int8_t byte8;
229#define SA_DBR 0x80 /* data buffer recovery */
230#define SA_BIS 0x40 /* block identifiers supported */
231#define SA_RSMK 0x20 /* report setmarks */
232#define SA_AVC 0x10 /* automatic velocity control */
233#define SA_SOCF_MASK 0x0c /* stop on consecutive formats */
234#define SA_RBO 0x02 /* recover buffer order */
235#define SA_REW 0x01 /* report early warning */
236 u_int8_t gap_size;
237 u_int8_t byte10;
238/* from SCSI-3: SSC-4 Working draft (2/14) 8.3.3 */
239#define SA_EOD_DEF_MASK 0xe0 /* EOD defined */
240#define SA_EEG 0x10 /* Enable EOD Generation */
241#define SA_SEW 0x08 /* Synchronize at Early Warning */
242#define SA_SOFT_WP 0x04 /* Software Write Protect */
243#define SA_BAML 0x02 /* Block Address Mode Lock */
244#define SA_BAM 0x01 /* Block Address Mode */
245 u_int8_t ew_bufsize[3];
246 u_int8_t sel_comp_alg;
247#define SA_COMP_NONE 0x00
248#define SA_COMP_DEFAULT 0x01
249 /* the following is 'reserved' in SCSI-2 but is defined in SSC-r22 */
250 u_int8_t extra_wp;
251#define SA_ASOC_WP 0x04 /* Associated Write Protect */
252#define SA_PERS_WP 0x02 /* Persistent Write Protect */
253#define SA_PERM_WP 0x01 /* Permanent Write Protect */
254};
255
256/* from SCSI-3: SSC-Rev10 (6/97) */
258 u_int8_t page_code; /* 0x0f */
259 u_int8_t page_length; /* 0x0e */
260 u_int8_t dce_and_dcc;
261#define SA_DCP_DCE 0x80 /* Data compression enable */
262#define SA_DCP_DCC 0x40 /* Data compression capable */
263 u_int8_t dde_and_red;
264#define SA_DCP_DDE 0x80 /* Data decompression enable */
265#define SA_DCP_RED_MASK 0x60 /* Report Exception on Decomp. */
266#define SA_DCP_RED_SHAMT 5
267#define SA_DCP_RED_0 0x00
268#define SA_DCP_RED_1 0x20
269#define SA_DCP_RED_2 0x40
270 u_int8_t comp_algorithm[4];
271 u_int8_t decomp_algorithm[4];
272 u_int8_t reserved[4];
273};
274
275typedef union {
276 struct { u_int8_t pagecode, pagelength; } hdr;
277 struct scsi_dev_conf_page dconf;
279} sa_comp_t;
280
281/*
282 * Control Data Protection subpage. This is as defined in SSC3r03.
283 */
285 uint8_t page_code;
286#define SA_CTRL_DP_PAGE_CODE 0x0a
288#define SA_CTRL_DP_SUBPAGE_CODE 0xf0
289 uint8_t length[2];
290 uint8_t prot_method;
291#define SA_CTRL_DP_NO_LBP 0x00
292#define SA_CTRL_DP_REED_SOLOMON 0x01
293#define SA_CTRL_DP_METHOD_MAX 0xff
294 uint8_t pi_length;
295#define SA_CTRL_DP_PI_LENGTH_MASK 0x3f
296#define SA_CTRL_DP_RS_LENGTH 4
297 uint8_t prot_bits;
298#define SA_CTRL_DP_LBP_W 0x80
299#define SA_CTRL_DP_LBP_R 0x40
300#define SA_CTRL_DP_RBDP 0x20
301 uint8_t reserved[];
302};
303
304/*
305 * This is the Read/Write Control mode page used on IBM Enterprise Tape
306 * Drives. They are known as 3592, TS, or Jaguar drives. The SCSI inquiry
307 * data will show a Product ID "03592XXX", where XXX is 'J1A', 'E05' (TS1120),
308 * 'E06' (TS1130), 'E07' (TS1140) or 'E08' (TS1150).
309 *
310 * This page definition is current as of the 3592 SCSI Reference v6,
311 * released on December 16th, 2014.
312 */
314 uint8_t page_code;
315#define SA_IBM_RW_CTRL_PAGE_CODE 0x25
316 uint8_t page_length;
318#define SA_IBM_RW_CTRL_LOC_IGNORE_SEQ 0x04
319#define SA_IBM_RW_CTRL_SPC_BLK_IGNORE_SEQ 0x02
320#define SA_IBM_RW_CTRL_SPC_FM_IGNORE_SEQ 0x01
322#define SA_IBM_RW_CTRL_LOC_IGNORE_DATA 0x04
323#define SA_IBM_RW_CTRL_SPC_BLK_IGNORE_DATA 0x02
324#define SA_IBM_RW_CTRL_SPC_FM_IGNORE_DATA 0x01
325 uint8_t reserved1;
326 uint8_t leop_method;
327#define SA_IBM_RW_CTRL_LEOP_DEFAULT 0x00
328#define SA_IBM_RW_CTRL_LEOP_MAX_CAP 0x01
329#define SA_IBM_RW_CTRL_LEOP_CONST_CAP 0x02
330 uint8_t leop_ew[2];
331 uint8_t byte8;
332#define SA_IBM_RW_CTRL_DISABLE_FASTSYNC 0x80
333#define SA_IBM_RW_CTRL_DISABLE_SKIPSYNC 0x40
334#define SA_IBM_RW_CTRL_DISABLE_CROSS_EOD 0x08
335#define SA_IBM_RW_CTRL_DISABLE_CROSS_PERM_ERR 0x04
336#define SA_IBM_RW_CTRL_REPORT_SEG_EW 0x02
337#define SA_IBM_RW_CTRL_REPORT_HOUSEKEEPING_ERR 0x01
340 uint8_t reserved2[21];
341};
342
344 u_int8_t opcode; /* READ_POSITION */
345 u_int8_t byte1; /* set LSB to read hardware block pos */
346#define SA_RPOS_SHORT_FORM 0x00
347#define SA_RPOS_SHORT_VENDOR 0x01
348#define SA_RPOS_LONG_FORM 0x06
349#define SA_RPOS_EXTENDED_FORM 0x08
350 u_int8_t reserved[5];
351 u_int8_t length[2];
352 u_int8_t control;
353};
354
355struct scsi_tape_position_data { /* Short Form */
356 u_int8_t flags;
357#define SA_RPOS_BOP 0x80 /* Beginning of Partition */
358#define SA_RPOS_EOP 0x40 /* End of Partition */
359#define SA_RPOS_BCU 0x20 /* Block Count Unknown (SCSI3) */
360#define SA_RPOS_BYCU 0x10 /* Byte Count Unknown (SCSI3) */
361#define SA_RPOS_BPU 0x04 /* Block Position Unknown */
362#define SA_RPOS_PERR 0x02 /* Position Error (SCSI3) */
363#define SA_RPOS_BPEW 0x01 /* Beyond Programmable Early Warning */
364#define SA_RPOS_UNCERTAIN SA_RPOS_BPU
365 u_int8_t partition;
366 u_int8_t reserved[2];
367 u_int8_t firstblk[4];
368 u_int8_t lastblk[4];
369 u_int8_t reserved2;
370 u_int8_t nbufblk[3];
371 u_int8_t nbufbyte[4];
372};
373
375 u_int8_t flags;
376#define SA_RPOS_LONG_BOP 0x80 /* Beginning of Partition */
377#define SA_RPOS_LONG_EOP 0x40 /* End of Partition */
378#define SA_RPOS_LONG_MPU 0x08 /* Mark Position Unknown */
379#define SA_RPOS_LONG_LONU 0x04 /* Logical Object Number Unknown */
380#define SA_RPOS_LONG_BPEW 0x01 /* Beyond Programmable Early Warning */
381 u_int8_t reserved[3];
382 u_int8_t partition[4];
384 u_int8_t logical_file_num[8];
385 u_int8_t set_id[8];
386};
387
389 u_int8_t flags;
390#define SA_RPOS_EXT_BOP 0x80 /* Beginning of Partition */
391#define SA_RPOS_EXT_EOP 0x40 /* End of Partition */
392#define SA_RPOS_EXT_LOCU 0x20 /* Logical Object Count Unknown */
393#define SA_RPOS_EXT_BYCU 0x10 /* Byte Count Unknown */
394#define SA_RPOS_EXT_LOLU 0x04 /* Logical Object Location Unknown */
395#define SA_RPOS_EXT_PERR 0x02 /* Position Error */
396#define SA_RPOS_EXT_BPEW 0x01 /* Beyond Programmable Early Warning */
397 u_int8_t partition;
398 u_int8_t length[2];
399 u_int8_t reserved;
400 u_int8_t num_objects[3];
401 u_int8_t first_object[8];
402 u_int8_t last_object[8];
403 u_int8_t bytes_in_buffer[8];
404};
405
407 u_int8_t opcode;
408 u_int8_t byte1;
409#define SA_SPOS_IMMED 0x01
410#define SA_SPOS_CP 0x02
411#define SA_SPOS_BT 0x04
412 u_int8_t reserved1;
413 u_int8_t blkaddr[4];
414#define SA_SPOS_MAX_BLK 0xffffffff
415 u_int8_t reserved2;
416 u_int8_t partition;
417 u_int8_t control;
418};
419
421 u_int8_t opcode;
422 u_int8_t byte1;
423#define SA_LC_IMMEDIATE 0x01
424#define SA_LC_CP 0x02
425#define SA_LC_DEST_TYPE_MASK 0x38
426#define SA_LC_DEST_TYPE_SHIFT 3
427#define SA_LC_DEST_OBJECT 0x00
428#define SA_LC_DEST_FILE 0x01
429#define SA_LC_DEST_SET 0x02
430#define SA_LC_DEST_EOD 0x03
431 u_int8_t byte2;
432#define SA_LC_BAM_IMPLICIT 0x00
433#define SA_LC_BAM_EXPLICIT 0x01
434 u_int8_t partition;
435 u_int8_t logical_id[8];
436 u_int8_t reserved[3];
437 u_int8_t control;
438};
439
441 u_int8_t opcode;
442 u_int8_t byte1;
443#define SRDS_MEDIA 0x01
444#define SRDS_MEDIUM_TYPE 0x02
445 u_int8_t reserved[5];
446 u_int8_t length[2];
447#define SRDS_MAX_LENGTH 0xffff
448 u_int8_t control;
449};
450
452 u_int8_t length[2];
453 u_int8_t reserved[2];
454 u_int8_t descriptor[];
455};
456
460 u_int8_t byte2;
461#define SDD_DLV 0x01
462#define SDD_DEFLT 0x20
463#define SDD_DUP 0x40
464#define SDD_WRTOK 0x80
465 u_int8_t length[2];
466#define SDD_DEFAULT_LENGTH 52
467 u_int8_t bits_per_mm[3];
468 u_int8_t media_width[2];
469 u_int8_t tracks[2];
470 u_int8_t capacity[4];
471 u_int8_t assigning_org[8];
472 u_int8_t density_name[8];
473 u_int8_t description[20];
474};
475
477 u_int8_t medium_type;
478 u_int8_t reserved1;
479 u_int8_t length[2];
480#define SMTD_DEFAULT_LENGTH 52
483 u_int8_t media_width[2];
484 u_int8_t medium_length[2];
485 u_int8_t reserved2[2];
486 u_int8_t assigning_org[8];
487 u_int8_t medium_type_name[8];
488 u_int8_t description[20];
489};
490
491/*
492 * Manufacturer-assigned Serial Number VPD page.
493 * Current as of SSC-5r03, 28 September 2016.
494 */
496{
497 u_int8_t device;
498 u_int8_t page_code;
499#define SVPD_MFG_SERIAL_NUMBER_PAGE_CODE 0xB1
500 u_int8_t page_length[2];
501 u_int8_t mfg_serial_num[];
502};
503
504/*
505 * Security Protocol Specific values for the Tape Data Encryption protocol
506 * (0x20) used with SECURITY PROTOCOL IN. See below for values used with
507 * SECURITY PROTOCOL OUT. Current as of SSC4r03.
508 */
509#define TDE_IN_SUPPORT_PAGE 0x0000
510#define TDE_OUT_SUPPORT_PAGE 0x0001
511#define TDE_DATA_ENC_CAP_PAGE 0x0010
512#define TDE_SUPPORTED_KEY_FORMATS_PAGE 0x0011
513#define TDE_DATA_ENC_MAN_CAP_PAGE 0x0012
514#define TDE_DATA_ENC_STATUS_PAGE 0x0020
515#define TDE_NEXT_BLOCK_ENC_STATUS_PAGE 0x0021
516#define TDE_GET_ENC_MAN_ATTR_PAGE 0x0022
517#define TDE_RANDOM_NUM_PAGE 0x0030
518#define TDE_KEY_WRAP_PK_PAGE 0x0031
519
520/*
521 * Tape Data Encryption protocol pages used with SECURITY PROTOCOL IN and
522 * SECURITY PROTOCOL OUT.
523 */
524/*
525 * Tape Data Encryption In Support page (0x0000).
526 */
528 uint8_t page_code[2];
529 uint8_t page_length[2];
530 uint8_t page_codes[];
531};
532
533/*
534 * Tape Data Encryption Out Support page (0x0001).
535 */
537 uint8_t page_code[2];
538 uint8_t page_length[2];
539 uint8_t page_codes[];
540};
541
542/*
543 * Logical block encryption algorithm descriptor. This is reported in the
544 * Data Encryption Capabilities page.
545 */
547 uint8_t alg_index;
548 uint8_t reserved1;
549 uint8_t desc_length[2];
550 uint8_t byte4;
551#define TDE_BEA_AVFMV 0x80
552#define TDE_BEA_SDK_C 0x40
553#define TDE_BEA_MAC_C 0x20
554#define TDE_BEA_DELB_C 0x10
555#define TDE_BEA_DECRYPT_C_MASK 0x0c
556#define TDE_BEA_DECRYPT_C_EXT 0x0c
557#define TDE_BEA_DECRYPT_C_HARD 0x08
558#define TDE_BEA_DECRYPT_C_SOFT 0x04
559#define TDE_BEA_DECRYPT_C_NO_CAP 0x00
560#define TDE_BEA_ENCRYPT_C_MASK 0x03
561#define TDE_BEA_ENCRYPT_C_EXT 0x03
562#define TDE_BEA_ENCRYPT_C_HARD 0x02
563#define TDE_BEA_ENCRYPT_C_SOFT 0x01
564#define TDE_BEA_ENCRYPT_C_NO_CAP 0x00
565 uint8_t byte5;
566#define TDE_BEA_AVFCLP_MASK 0xc0
567#define TDE_BEA_AVFCLP_VALID 0x80
568#define TDE_BEA_AVFCLP_NOT_VALID 0x40
569#define TDE_BEA_AVFCLP_NOT_APP 0x00
570#define TDE_BEA_NONCE_C_MASK 0x30
571#define TDE_BEA_NONCE_C_SUPPORTED 0x30
572#define TDE_BEA_NONCE_C_PROVIDED 0x20
573#define TDE_BEA_NONCE_C_GENERATED 0x10
574#define TDE_BEA_NONCE_C_NOT_REQUIRED 0x00
575#define TDE_BEA_KADF_C 0x08
576#define TDE_BEA_VCELB_C 0x04
577#define TDE_BEA_UKADF 0x02
578#define TDE_BEA_AKADF 0x01
581 uint8_t lbe_key_size[2];
582 uint8_t byte12;
583#define TDE_BEA_DKAD_C_MASK 0xc0
584#define TDE_BEA_DKAD_C_CAPABLE 0xc0
585#define TDE_BEA_DKAD_C_NOT_ALLOWED 0x80
586#define TDE_BEA_DKAD_C_REQUIRED 0x40
587#define TDE_BEA_EEMC_C_MASK 0x30
588#define TDE_BEA_EEMC_C_ALLOWED 0x20
589#define TDE_BEA_EEMC_C_NOT_ALLOWED 0x10
590#define TDE_BEA_EEMC_C_NOT_SPECIFIED 0x00
591 /*
592 * Raw Decryption Mode Control Capabilities (RDMC_C) field. The
593 * descriptions are too complex to represent as a simple name.
594 */
595#define TDE_BEA_RDMC_C_MASK 0x0e
596#define TDE_BEA_RDMC_C_MODE_7 0x0e
597#define TDE_BEA_RDMC_C_MODE_6 0x0c
598#define TDE_BEA_RDMC_C_MODE_5 0x0a
599#define TDE_BEA_RDMC_C_MODE_4 0x08
600#define TDE_BEA_RDMC_C_MODE_1 0x02
601#define TDE_BEA_EAREM 0x01
602 uint8_t byte13;
603#define TDE_BEA_MAX_EEDKS_MASK 0x0f
604 uint8_t msdk_count[2];
605 uint8_t max_eedk_size[2];
606 uint8_t reserved2[2];
608};
609
610/*
611 * Data Encryption Capabilities page (0x0010).
612 */
614 uint8_t page_code[2];
615 uint8_t page_length;
616 uint8_t byte4;
617#define DATA_ENC_CAP_EXTDECC_MASK 0x0c
618#define DATA_ENC_CAP_EXTDECC_NOT_REPORTED 0x00
619#define DATA_ENC_CAP_EXTDECC_NOT_CAPABLE 0x04
620#define DATA_ENC_CAP_EXTDECC_CAPABLE 0x08
621#define DATA_ENC_CAP_CFG_P_MASK 0x03
622#define DATA_ENC_CAP_CFG_P_NOT_REPORTED 0x00
623#define DATA_ENC_CAP_CFG_P_ALLOWED 0x01
624#define DATA_ENC_CAP_CFG_P_NOT_ALLOWED 0x02
625 uint8_t reserved[15];
627};
628
629/*
630 * Tape Data Encryption Supported Key Formats page (0x0011).
631 */
633 uint8_t page_code[2];
634 uint8_t page_length[2];
636};
637
638/*
639 * Tape Data Encryption Management Capabilities page (0x0012).
640 */
642 uint8_t page_code[2];
643 uint8_t page_length[2];
644 uint8_t byte4;
645#define TDE_DEMC_LOCK_C 0x01
646 uint8_t byte5;
647#define TDE_DEMC_CKOD_C 0x04
648#define TDE_DEMC_CKORP_C 0x02
649#define TDE_DEMC_CKORL_C 0x01
650 uint8_t reserved1;
651 uint8_t byte7;
652#define TDE_DEMC_AITN_C 0x04
653#define TDE_DEMC_LOCAL_C 0x02
654#define TDE_DEMC_PUBLIC_C 0x01
655 uint8_t reserved2[8];
656};
657
658/*
659 * Tape Data Encryption Status Page (0x0020).
660 */
662 uint8_t page_code[2];
663 uint8_t page_length[2];
664 uint8_t scope;
665#define TDE_DES_IT_NEXUS_SCOPE_MASK 0xe0
666#define TDE_DES_LBE_SCOPE_MASK 0x07
669 uint8_t algo_index;
671 uint8_t byte12;
672#define TDE_DES_PARAM_CTRL_MASK 0x70
673#define TDE_DES_PARAM_CTRL_MGMT 0x40
674#define TDE_DES_PARAM_CTRL_CHANGER 0x30
675#define TDE_DES_PARAM_CTRL_DRIVE 0x20
676#define TDE_DES_PARAM_CTRL_EXT 0x10
677#define TDE_DES_PARAM_CTRL_NOT_REPORTED 0x00
678#define TDE_DES_VCELB 0x08
679#define TDE_DES_CEEMS_MASK 0x06
680#define TDE_DES_RDMD 0x01
682 uint8_t asdk_count[2];
683 uint8_t reserved[8];
685};
686
687/*
688 * Tape Data Encryption Next Block Encryption Status page (0x0021).
689 */
691 uint8_t page_code[2];
692 uint8_t page_length[2];
694 uint8_t status;
695#define TDE_NBES_COMP_STATUS_MASK 0xf0
696#define TDE_NBES_COMP_INCAPABLE 0x00
697#define TDE_NBES_COMP_NOT_YET 0x10
698#define TDE_NBES_COMP_NOT_A_BLOCK 0x20
699#define TDE_NBES_COMP_NOT_COMPRESSED 0x30
700#define TDE_NBES_COMP_COMPRESSED 0x40
701#define TDE_NBES_ENC_STATUS_MASK 0x0f
702#define TDE_NBES_ENC_INCAPABLE 0x00
703#define TDE_NBES_ENC_NOT_YET 0x01
704#define TDE_NBES_ENC_NOT_A_BLOCK 0x02
705#define TDE_NBES_ENC_NOT_ENCRYPTED 0x03
706#define TDE_NBES_ENC_ALG_NOT_SUPPORTED 0x04
707#define TDE_NBES_ENC_SUPPORTED_ALG 0x05
708#define TDE_NBES_ENC_NO_KEY 0x06
709 uint8_t algo_index;
710 uint8_t byte14;
711#define TDE_NBES_EMES 0x02
712#define TDE_NBES_RDMDS 0x01
715};
716
717/*
718 * Tape Data Encryption Get Encryption Management Attributes page (0x0022).
719 */
721 uint8_t page_code[2];
722 uint8_t reserved[3];
723 uint8_t byte5;
724#define TDE_GEMA_CAOD 0x01
725 uint8_t page_length[2];
727};
728
729/*
730 * Tape Data Encryption Random Number page (0x0030).
731 */
733 uint8_t page_code[2];
734 uint8_t page_length[2];
735 uint8_t random_number[32];
736};
737
738/*
739 * Tape Data Encryption Device Server Key Wrapping Public Key page (0x0031).
740 */
742 uint8_t page_code[2];
743 uint8_t page_length[2];
744 uint8_t public_key_type[4];
747 uint8_t public_key[];
748};
749
750/*
751 * Security Protocol Specific values for the Tape Data Encryption protocol
752 * (0x20) used with SECURITY PROTOCOL OUT. See above for values used with
753 * SECURITY PROTOCOL IN. Current as of SSCr03.
754 */
755#define TDE_SET_DATA_ENC_PAGE 0x0010
756#define TDE_SA_ENCAP_PAGE 0x0011
757#define TDE_SET_ENC_MGMT_ATTR_PAGE 0x0022
758
759/*
760 * Tape Data Encryption Set Data Encryption page (0x0010).
761 */
763 uint8_t page_code[2];
764 uint8_t page_length[2];
765 uint8_t byte4;
766#define TDE_SDE_SCOPE_MASK 0xe0
767#define TDE_SDE_SCOPE_ALL_IT_NEXUS 0x80
768#define TDE_SDE_SCOPE_LOCAL 0x40
769#define TDE_SDE_SCOPE_PUBLIC 0x00
770#define TDE_SDE_LOCK 0x01
771 uint8_t byte5;
772#define TDE_SDE_CEEM_MASK 0xc0
773#define TDE_SDE_CEEM_ENCRYPT 0xc0
774#define TDE_SDE_CEEM_EXTERNAL 0x80
775#define TDE_SDE_CEEM_NO_CHECK 0x40
776#define TDE_SDE_RDMC_MASK 0x30
777#define TDE_SDE_RDMC_DISABLED 0x30
778#define TDE_SDE_RDMC_ENABLED 0x20
779#define TDE_SDE_RDMC_DEFAULT 0x00
780#define TDE_SDE_SDK 0x08
781#define TDE_SDE_CKOD 0x04
782#define TDE_SDE_CKORP 0x02
783#define TDE_SDE_CKORL 0x01
785#define TDE_SDE_ENC_MODE_DISABLE 0x00
786#define TDE_SDE_ENC_MODE_EXTERNAL 0x01
787#define TDE_SDE_ENC_MODE_ENCRYPT 0x02
789#define TDE_SDE_DEC_MODE_DISABLE 0x00
790#define TDE_SDE_DEC_MODE_RAW 0x01
791#define TDE_SDE_DEC_MODE_DECRYPT 0x02
792#define TDE_SDE_DEC_MODE_MIXED 0x03
793 uint8_t algo_index;
795#define TDE_SDE_KEY_PLAINTEXT 0x00
796#define TDE_SDE_KEY_VENDOR_SPEC 0x01
797#define TDE_SDE_KEY_PUBLIC_WRAP 0x02
798#define TDE_SDE_KEY_ESP_SCSI 0x03
799 uint8_t kad_format;
800#define TDE_SDE_KAD_ASCII 0x02
801#define TDE_SDE_KAD_BINARY 0x01
802#define TDE_SDE_KAD_UNSPECIFIED 0x00
803 uint8_t reserved[7];
804 uint8_t lbe_key_length[2];
805 uint8_t lbe_key[];
806};
807
808/*
809 * Used for the Vendor Specific key format (0x01).
810 */
812 uint8_t t10_vendor_id[8];
813 uint8_t vendor_key[];
814};
815
816/*
817 * Used for the public key wrapped format (0x02).
818 */
820 uint8_t parameter_set[2];
821#define TDE_PARAM_SET_RSA2048 0x0000
822#define TDE_PARAM_SET_ECC521 0x0010
823 uint8_t label_length[2];
824 uint8_t label[];
825};
826
827/*
828 * Tape Data Encryption SA Encapsulation page (0x0011).
829 */
831 uint8_t page_code[2];
832 uint8_t data_desc[];
833};
834
835/*
836 * Tape Data Encryption Set Encryption Management Attributes page (0x0022).
837 */
839 uint8_t page_code[2];
840 uint8_t reserved[3];
841 uint8_t byte5;
842#define TDE_SEMA_CAOD 0x01
843 uint8_t page_length[2];
844 uint8_t attr_desc[];
845};
846
847/*
848 * Tape Data Encryption descriptor format.
849 * SSC4r03 Section 8.5.4.2.1 Table 197
850 */
853#define TDE_KEY_DESC_WK_KAD 0x04
854#define TDE_KEY_DESC_M_KAD 0x03
855#define TDE_KEY_DESC_NONCE_VALUE 0x02
856#define TDE_KEY_DESC_A_KAD 0x01
857#define TDE_KEY_DESC_U_KAD 0x00
858 uint8_t byte2;
859#define TDE_KEY_DESC_AUTH_MASK 0x07
860#define TDE_KEY_DESC_AUTH_FAILED 0x04
861#define TDE_KEY_DESC_AUTH_SUCCESS 0x03
862#define TDE_KEY_DESC_AUTH_NO_ATTEMPT 0x02
863#define TDE_KEY_DESC_AUTH_U_KAD 0x01
864 uint8_t key_desc_length[2];
865 uint8_t key_desc[];
866};
867
868/*
869 * Wrapped Key descriptor format.
870 * SSC4r03 Section 8.5.4.3.1 Table 200
871 */
874#define TDE_WRAP_KEY_DESC_LENGTH 0x04
875#define TDE_WRAP_KEY_DESC_IDENT 0x03
876#define TDE_WRAP_KEY_DESC_INFO 0x02
877#define TDE_WRAP_KEY_DESC_ENTITY_ID 0x01
878#define TDE_WRAP_KEY_DESC_DEVICE_ID 0x00
879 uint8_t reserved;
881 uint8_t wrapped_desc[];
882};
883
884/*
885 * Encryption management attributes descriptor format.
886 * SSC4r03 Section 8.5.4.4.1 Table 202
887 */
890#define TDE_EMAD_DESIRED_KEY_MGR_OP 0x0000
891#define TDE_EMAD_LOG_BLOCK_ENC_KEY_CRIT 0x0001
892#define TDE_EMAD_LOG_BLOCK_ENC_KEY_WRAP 0x0002
893 uint8_t reserved;
894 uint8_t byte2;
895#define TDE_EMAD_CRIT 0x80
896 uint8_t attr_length[2];
897 uint8_t attributes[];
898#define TDE_EMAD_DESIRED_KEY_CREATE 0x0001
899#define TDE_EMAD_DESIRED_KEY_RESOLVE 0x0002
900};
901
902/*
903 * Logical block encryption key selection criteria descriptor format.
904 * SSC4r03 Section 8.5.4.4.3.1 Table 206
905 */
908 /*
909 * The CRIT bit is the top bit of the first byte of the type.
910 */
911#define TDE_LBE_KEY_SEL_CRIT 0x80
912#define TDE_LBE_KEY_SEL_ALGO 0x0001
913#define TDE_LBE_KEY_SEL_ID 0x0002
916};
917
918/*
919 * Logical block encryption key wrapping attribute descriptor format.
920 * SSC4r03 Section 8.5.4.4.4.1 Table 209
921 */
924 /*
925 * The CRIT bit is the top bit of the first byte of the type.
926 */
927#define TDE_LBE_KEY_WRAP_CRIT 0x80
928#define TDE_LBE_KEY_WRAP_KEKS 0x0001
931};
932
933/*
934 * Opcodes
935 */
936#define REWIND 0x01
937#define FORMAT_MEDIUM 0x04
938#define READ_BLOCK_LIMITS 0x05
939#define SA_READ 0x08
940#define SA_WRITE 0x0A
941#define SET_CAPACITY 0x0B
942#define WRITE_FILEMARKS 0x10
943#define SPACE 0x11
944#define RESERVE_UNIT 0x16
945#define RELEASE_UNIT 0x17
946#define ERASE 0x19
947#define LOAD_UNLOAD 0x1B
948#define LOCATE 0x2B
949#define READ_POSITION 0x34
950#define REPORT_DENSITY_SUPPORT 0x44
951#define ALLOW_OVERWRITE 0x82
952#define LOCATE_16 0x92
953
954/*
955 * Tape specific density codes- only enough of them here to recognize
956 * some specific older units so we can choose 2FM@EOD or FIXED blocksize
957 * quirks.
958 */
959#define SCSI_DENSITY_HALFINCH_800 0x01
960#define SCSI_DENSITY_HALFINCH_1600 0x02
961#define SCSI_DENSITY_HALFINCH_6250 0x03
962#define SCSI_DENSITY_HALFINCH_6250C 0xC3 /* HP Compressed 6250 */
963#define SCSI_DENSITY_QIC_11_4TRK 0x04
964#define SCSI_DENSITY_QIC_11_9TRK 0x84 /* Vendor Unique Emulex */
965#define SCSI_DENSITY_QIC_24 0x05
966#define SCSI_DENSITY_HALFINCH_PE 0x06
967#define SCSI_DENSITY_QIC_120 0x0f
968#define SCSI_DENSITY_QIC_150 0x10
969#define SCSI_DENSITY_QIC_525_320 0x11
970#define SCSI_DENSITY_QIC_1320 0x12
971#define SCSI_DENSITY_QIC_2GB 0x22
972#define SCSI_DENSITY_QIC_4GB 0x26
973#define SCSI_DENSITY_QIC_3080 0x29
974
975__BEGIN_DECLS
976void scsi_read_block_limits(struct ccb_scsiio *, u_int32_t,
977 void (*cbfcnp)(struct cam_periph *, union ccb *),
978 u_int8_t, struct scsi_read_block_limits_data *,
979 u_int8_t , u_int32_t);
980
981void scsi_sa_read_write(struct ccb_scsiio *csio, u_int32_t retries,
982 void (*cbfcnp)(struct cam_periph *, union ccb *),
983 u_int8_t tag_action, int readop, int sli,
984 int fixed, u_int32_t length, u_int8_t *data_ptr,
985 u_int32_t dxfer_len, u_int8_t sense_len,
986 u_int32_t timeout);
987
988void scsi_rewind(struct ccb_scsiio *csio, u_int32_t retries,
989 void (*cbfcnp)(struct cam_periph *, union ccb *),
990 u_int8_t tag_action, int immediate, u_int8_t sense_len,
991 u_int32_t timeout);
992
993void scsi_space(struct ccb_scsiio *csio, u_int32_t retries,
994 void (*cbfcnp)(struct cam_periph *, union ccb *),
995 u_int8_t tag_action, scsi_space_code code,
996 u_int32_t count, u_int8_t sense_len, u_int32_t timeout);
997
998void scsi_load_unload(struct ccb_scsiio *csio, u_int32_t retries,
999 void (*cbfcnp)(struct cam_periph *, union ccb *),
1000 u_int8_t tag_action, int immediate, int eot,
1001 int reten, int load, u_int8_t sense_len,
1002 u_int32_t timeout);
1003
1004void scsi_write_filemarks(struct ccb_scsiio *csio, u_int32_t retries,
1005 void (*cbfcnp)(struct cam_periph *, union ccb *),
1006 u_int8_t tag_action, int immediate, int setmark,
1007 u_int32_t num_marks, u_int8_t sense_len,
1008 u_int32_t timeout);
1009
1010void scsi_reserve_release_unit(struct ccb_scsiio *csio, u_int32_t retries,
1011 void (*cbfcnp)(struct cam_periph *,
1012 union ccb *), u_int8_t tag_action,
1013 int third_party, int third_party_id,
1014 u_int8_t sense_len, u_int32_t timeout,
1015 int reserve);
1016
1017void scsi_erase(struct ccb_scsiio *csio, u_int32_t retries,
1018 void (*cbfcnp)(struct cam_periph *, union ccb *),
1019 u_int8_t tag_action, int immediate, int long_erase,
1020 u_int8_t sense_len, u_int32_t timeout);
1021
1023 u_int8_t dce, u_int8_t dde, u_int8_t red,
1024 u_int32_t comp_algorithm,
1025 u_int32_t decomp_algorithm);
1026
1027void scsi_read_position(struct ccb_scsiio *csio, u_int32_t retries,
1028 void (*cbfcnp)(struct cam_periph *, union ccb *),
1029 u_int8_t tag_action, int hardsoft,
1030 struct scsi_tape_position_data *sbp,
1031 u_int8_t sense_len, u_int32_t timeout);
1032void scsi_read_position_10(struct ccb_scsiio *csio, u_int32_t retries,
1033 void (*cbfcnp)(struct cam_periph *, union ccb *),
1034 u_int8_t tag_action, int service_action,
1035 u_int8_t *data_ptr, u_int32_t length,
1036 u_int32_t sense_len, u_int32_t timeout);
1037
1038void scsi_set_position(struct ccb_scsiio *csio, u_int32_t retries,
1039 void (*cbfcnp)(struct cam_periph *, union ccb *),
1040 u_int8_t tag_action, int hardsoft, u_int32_t blkno,
1041 u_int8_t sense_len, u_int32_t timeout);
1042
1043void scsi_locate_10(struct ccb_scsiio *csio, u_int32_t retries,
1044 void (*cbfcnp)(struct cam_periph *, union ccb *),
1045 u_int8_t tag_action, int immed, int cp, int hard,
1046 int64_t partition, u_int32_t block_address,
1047 int sense_len, u_int32_t timeout);
1048
1049void scsi_locate_16(struct ccb_scsiio *csio, u_int32_t retries,
1050 void (*cbfcnp)(struct cam_periph *, union ccb *),
1051 u_int8_t tag_action, int immed, int cp,
1052 u_int8_t dest_type, int bam, int64_t partition,
1053 u_int64_t logical_id, int sense_len,
1054 u_int32_t timeout);
1055
1056void scsi_report_density_support(struct ccb_scsiio *csio, u_int32_t retries,
1057 void (*cbfcnp)(struct cam_periph *,
1058 union ccb *),
1059 u_int8_t tag_action, int media,
1060 int medium_type, u_int8_t *data_ptr,
1061 u_int32_t length, u_int32_t sense_len,
1062 u_int32_t timeout);
1063
1064void scsi_set_capacity(struct ccb_scsiio *csio, u_int32_t retries,
1065 void (*cbfcnp)(struct cam_periph *, union ccb *),
1066 u_int8_t tag_action, int byte1, u_int32_t proportion,
1067 u_int32_t sense_len, u_int32_t timeout);
1068
1069void scsi_format_medium(struct ccb_scsiio *csio, u_int32_t retries,
1070 void (*cbfcnp)(struct cam_periph *, union ccb *),
1071 u_int8_t tag_action, int byte1, int byte2,
1072 u_int8_t *data_ptr, u_int32_t length,
1073 u_int32_t sense_len, u_int32_t timeout);
1074
1075void scsi_allow_overwrite(struct ccb_scsiio *csio, u_int32_t retries,
1076 void (*cbfcnp)(struct cam_periph *, union ccb *),
1077 u_int8_t tag_action, int allow_overwrite,
1078 int partition, u_int64_t logical_id,
1079 u_int32_t sense_len, u_int32_t timeout);
1080
1081__END_DECLS
1082
1083#endif /* _SCSI_SCSI_SA_H */
void scsi_read_position(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int hardsoft, struct scsi_tape_position_data *sbp, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6120
__BEGIN_DECLS void scsi_read_block_limits(struct ccb_scsiio *, u_int32_t, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t, struct scsi_read_block_limits_data *, u_int8_t, u_int32_t)
Definition: scsi_sa.c:5934
void scsi_allow_overwrite(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int allow_overwrite, int partition, u_int64_t logical_id, u_int32_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6354
void scsi_data_comp_page(struct scsi_data_compression_page *page, u_int8_t dce, u_int8_t dde, u_int8_t red, u_int32_t comp_algorithm, u_int32_t decomp_algorithm)
void scsi_space(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, scsi_space_code code, u_int32_t count, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6023
scsi_space_code
Definition: scsi_sa.h:89
@ SS_SEQFILEMARKS
Definition: scsi_sa.h:92
@ SS_BLOCKS
Definition: scsi_sa.h:90
@ SS_EOD
Definition: scsi_sa.h:93
@ SS_SEQSETMARKS
Definition: scsi_sa.h:95
@ SS_SETMARKS
Definition: scsi_sa.h:94
@ SS_FILEMARKS
Definition: scsi_sa.h:91
void scsi_rewind(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immediate, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6005
void scsi_read_position_10(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int service_action, u_int8_t *data_ptr, u_int32_t length, u_int32_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6140
void scsi_write_filemarks(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immediate, int setmark, u_int32_t num_marks, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6041
void scsi_locate_16(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immed, int cp, u_int8_t dest_type, int bam, int64_t partition, u_int64_t logical_id, int sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6228
void scsi_set_capacity(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int byte1, u_int32_t proportion, u_int32_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6295
void scsi_set_position(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int hardsoft, u_int32_t blkno, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6175
void scsi_load_unload(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immediate, int eot, int reten, int load, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:5980
void scsi_report_density_support(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int media, int medium_type, u_int8_t *data_ptr, u_int32_t length, u_int32_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6263
void scsi_reserve_release_unit(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int third_party, int third_party_id, u_int8_t sense_len, u_int32_t timeout, int reserve)
Definition: scsi_sa.c:6067
void scsi_format_medium(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int byte1, int byte2, u_int8_t *data_ptr, u_int32_t length, u_int32_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6323
void scsi_erase(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immediate, int long_erase, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6094
void scsi_locate_10(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int immed, int cp, int hard, int64_t partition, u_int32_t block_address, int sense_len, u_int32_t timeout)
Definition: scsi_sa.c:6196
void scsi_sa_read_write(struct ccb_scsiio *csio, u_int32_t retries, void(*cbfcnp)(struct cam_periph *, union ccb *), u_int8_t tag_action, int readop, int sli, int fixed, u_int32_t length, u_int8_t *data_ptr, u_int32_t dxfer_len, u_int8_t sense_len, u_int32_t timeout)
Definition: scsi_sa.c:5952
u_int8_t reserved1
Definition: scsi_sa.h:183
u_int8_t partition
Definition: scsi_sa.h:188
u_int8_t logical_id[8]
Definition: scsi_sa.h:189
u_int8_t allow_overwrite
Definition: scsi_sa.h:184
u_int8_t reserved2[3]
Definition: scsi_sa.h:190
u_int8_t control
Definition: scsi_sa.h:191
u_int8_t comp_algorithm[4]
Definition: scsi_sa.h:270
u_int8_t decomp_algorithm[4]
Definition: scsi_sa.h:271
u_int8_t bits_per_mm[3]
Definition: scsi_sa.h:467
u_int8_t density_name[8]
Definition: scsi_sa.h:472
u_int8_t primary_density_code
Definition: scsi_sa.h:458
u_int8_t length[2]
Definition: scsi_sa.h:465
u_int8_t tracks[2]
Definition: scsi_sa.h:469
u_int8_t description[20]
Definition: scsi_sa.h:473
u_int8_t capacity[4]
Definition: scsi_sa.h:470
u_int8_t media_width[2]
Definition: scsi_sa.h:468
u_int8_t byte2
Definition: scsi_sa.h:460
u_int8_t assigning_org[8]
Definition: scsi_sa.h:471
u_int8_t secondary_density_code
Definition: scsi_sa.h:459
u_int8_t length[2]
Definition: scsi_sa.h:452
u_int8_t reserved[2]
Definition: scsi_sa.h:453
u_int8_t descriptor[]
Definition: scsi_sa.h:454
u_int8_t sel_comp_alg
Definition: scsi_sa.h:246
u_int8_t wrdelay_time[2]
Definition: scsi_sa.h:227
u_int8_t wb_full_ratio
Definition: scsi_sa.h:225
u_int8_t extra_wp
Definition: scsi_sa.h:250
u_int8_t byte2
Definition: scsi_sa.h:223
u_int8_t byte8
Definition: scsi_sa.h:228
u_int8_t gap_size
Definition: scsi_sa.h:236
u_int8_t ew_bufsize[3]
Definition: scsi_sa.h:245
u_int8_t rb_empty_ratio
Definition: scsi_sa.h:226
u_int8_t pagecode
Definition: scsi_sa.h:221
u_int8_t active_partition
Definition: scsi_sa.h:224
u_int8_t pagelength
Definition: scsi_sa.h:222
u_int8_t byte10
Definition: scsi_sa.h:237
u_int8_t opcode
Definition: scsi_sa.h:138
u_int8_t reserved[3]
Definition: scsi_sa.h:143
u_int8_t control
Definition: scsi_sa.h:144
u_int8_t lun_imm_long
Definition: scsi_sa.h:139
u_int8_t byte2
Definition: scsi_sa.h:171
u_int8_t length[2]
Definition: scsi_sa.h:176
u_int8_t byte1
Definition: scsi_sa.h:168
u_int8_t opcode
Definition: scsi_sa.h:167
u_int8_t control
Definition: scsi_sa.h:177
u_int8_t reserved[2]
Definition: scsi_sa.h:72
u_int8_t eot_reten_load
Definition: scsi_sa.h:73
u_int8_t opcode
Definition: scsi_sa.h:69
u_int8_t immediate
Definition: scsi_sa.h:70
u_int8_t control
Definition: scsi_sa.h:77
u_int8_t logical_id[8]
Definition: scsi_sa.h:435
u_int8_t opcode
Definition: scsi_sa.h:421
u_int8_t byte2
Definition: scsi_sa.h:431
u_int8_t control
Definition: scsi_sa.h:437
u_int8_t reserved[3]
Definition: scsi_sa.h:436
u_int8_t byte1
Definition: scsi_sa.h:422
u_int8_t partition
Definition: scsi_sa.h:434
u_int8_t length[2]
Definition: scsi_sa.h:479
u_int8_t description[20]
Definition: scsi_sa.h:488
u_int8_t media_width[2]
Definition: scsi_sa.h:483
u_int8_t reserved2[2]
Definition: scsi_sa.h:485
u_int8_t reserved1
Definition: scsi_sa.h:478
u_int8_t medium_type
Definition: scsi_sa.h:477
u_int8_t medium_length[2]
Definition: scsi_sa.h:484
u_int8_t medium_type_name[8]
Definition: scsi_sa.h:487
u_int8_t assigning_org[8]
Definition: scsi_sa.h:486
u_int8_t num_density_codes
Definition: scsi_sa.h:481
u_int8_t primary_density_codes[9]
Definition: scsi_sa.h:482
u_int8_t unused[3]
Definition: scsi_sa.h:44
u_int8_t reserved[3]
Definition: scsi_sa.h:129
u_int8_t immediate
Definition: scsi_sa.h:83
u_int8_t control
Definition: scsi_sa.h:86
u_int8_t reserved[3]
Definition: scsi_sa.h:85
u_int8_t opcode
Definition: scsi_sa.h:82
u_int8_t sli_fixed
Definition: scsi_sa.h:60
u_int8_t opcode
Definition: scsi_sa.h:59
u_int8_t length[3]
Definition: scsi_sa.h:63
u_int8_t control
Definition: scsi_sa.h:64
u_int8_t byte1
Definition: scsi_sa.h:153
u_int8_t opcode
Definition: scsi_sa.h:152
u_int8_t cap_proportion[2]
Definition: scsi_sa.h:156
u_int8_t control
Definition: scsi_sa.h:157
u_int8_t reserved
Definition: scsi_sa.h:155
u_int8_t code
Definition: scsi_sa.h:101
u_int8_t opcode
Definition: scsi_sa.h:100
u_int8_t control
Definition: scsi_sa.h:104
u_int8_t count[3]
Definition: scsi_sa.h:103
uint8_t default_write_dens_bop_0
Definition: scsi_sa.h:338
uint8_t pending_write_dens_bop_0
Definition: scsi_sa.h:339
uint8_t ignore_data_checks
Definition: scsi_sa.h:321
uint8_t reserved2[21]
Definition: scsi_sa.h:340
u_int8_t blkaddr[4]
Definition: scsi_sa.h:413
u_int8_t byte1
Definition: scsi_sa.h:408
u_int8_t control
Definition: scsi_sa.h:417
u_int8_t reserved2
Definition: scsi_sa.h:415
u_int8_t reserved1
Definition: scsi_sa.h:412
u_int8_t opcode
Definition: scsi_sa.h:407
u_int8_t partition
Definition: scsi_sa.h:416
u_int8_t reserved[2]
Definition: scsi_sa.h:366
u_int8_t nbufblk[3]
Definition: scsi_sa.h:370
u_int8_t lastblk[4]
Definition: scsi_sa.h:368
u_int8_t firstblk[4]
Definition: scsi_sa.h:367
u_int8_t nbufbyte[4]
Definition: scsi_sa.h:371
u_int8_t bytes_in_buffer[8]
Definition: scsi_sa.h:403
u_int8_t first_object[8]
Definition: scsi_sa.h:401
u_int8_t logical_file_num[8]
Definition: scsi_sa.h:384
u_int8_t logical_object_num[8]
Definition: scsi_sa.h:383
u_int8_t length[2]
Definition: scsi_sa.h:351
u_int8_t reserved[5]
Definition: scsi_sa.h:350
u_int8_t page_length[2]
Definition: scsi_sa.h:500
u_int8_t mfg_serial_num[]
Definition: scsi_sa.h:501
u_int8_t num_marks[3]
Definition: scsi_sa.h:113
u_int8_t control
Definition: scsi_sa.h:114
uint8_t msdk_count[2]
Definition: scsi_sa.h:604
uint8_t desc_length[2]
Definition: scsi_sa.h:549
uint8_t max_unauth_key_bytes[2]
Definition: scsi_sa.h:579
uint8_t security_algo_code[4]
Definition: scsi_sa.h:607
uint8_t reserved2[2]
Definition: scsi_sa.h:606
uint8_t max_auth_key_bytes[2]
Definition: scsi_sa.h:580
uint8_t max_eedk_size[2]
Definition: scsi_sa.h:605
uint8_t lbe_key_size[2]
Definition: scsi_sa.h:581
struct tde_block_enc_alg_desc alg_descs[]
Definition: scsi_sa.h:626
uint8_t reserved[15]
Definition: scsi_sa.h:625
uint8_t page_code[2]
Definition: scsi_sa.h:614
uint8_t key_desc[]
Definition: scsi_sa.h:865
uint8_t key_desc_length[2]
Definition: scsi_sa.h:864
uint8_t key_desc_type
Definition: scsi_sa.h:852
uint8_t byte2
Definition: scsi_sa.h:858
uint8_t page_length[2]
Definition: scsi_sa.h:643
uint8_t enc_params_kad_format
Definition: scsi_sa.h:681
uint8_t asdk_count[2]
Definition: scsi_sa.h:682
uint8_t key_assoc_data_desc[]
Definition: scsi_sa.h:684
uint8_t key_instance_counter[4]
Definition: scsi_sa.h:670
uint8_t page_code[2]
Definition: scsi_sa.h:662
uint8_t page_length[2]
Definition: scsi_sa.h:663
uint8_t enc_mgmt_attr_type[2]
Definition: scsi_sa.h:889
uint8_t attributes[]
Definition: scsi_sa.h:897
uint8_t attr_length[2]
Definition: scsi_sa.h:896
uint8_t page_length[2]
Definition: scsi_sa.h:725
uint8_t enc_mgmt_attr_desc[]
Definition: scsi_sa.h:726
uint8_t page_codes[]
Definition: scsi_sa.h:530
uint8_t page_code[2]
Definition: scsi_sa.h:528
uint8_t page_length[2]
Definition: scsi_sa.h:529
uint8_t parameter_set[2]
Definition: scsi_sa.h:820
uint8_t t10_vendor_id[8]
Definition: scsi_sa.h:812
uint8_t vendor_key[]
Definition: scsi_sa.h:813
uint8_t public_key_format[4]
Definition: scsi_sa.h:745
uint8_t page_length[2]
Definition: scsi_sa.h:743
uint8_t page_code[2]
Definition: scsi_sa.h:742
uint8_t public_key_length[2]
Definition: scsi_sa.h:746
uint8_t public_key_type[4]
Definition: scsi_sa.h:744
uint8_t public_key[]
Definition: scsi_sa.h:747
uint8_t lbe_key_sel_crit[]
Definition: scsi_sa.h:915
uint8_t lbe_key_sel_crit_type[2]
Definition: scsi_sa.h:907
uint8_t lbe_key_sel_crit_length[2]
Definition: scsi_sa.h:914
uint8_t lbe_key_wrap_length[2]
Definition: scsi_sa.h:929
uint8_t lbe_key_wrap_type[2]
Definition: scsi_sa.h:923
uint8_t lbe_key_wrap_attr[]
Definition: scsi_sa.h:930
uint8_t page_codes[]
Definition: scsi_sa.h:539
uint8_t page_code[2]
Definition: scsi_sa.h:537
uint8_t page_length[2]
Definition: scsi_sa.h:538
uint8_t page_code[2]
Definition: scsi_sa.h:733
uint8_t random_number[32]
Definition: scsi_sa.h:735
uint8_t page_length[2]
Definition: scsi_sa.h:734
uint8_t page_code[2]
Definition: scsi_sa.h:831
uint8_t data_desc[]
Definition: scsi_sa.h:832
uint8_t page_length[2]
Definition: scsi_sa.h:764
uint8_t lbe_key_length[2]
Definition: scsi_sa.h:804
uint8_t reserved[7]
Definition: scsi_sa.h:803
uint8_t encryption_mode
Definition: scsi_sa.h:784
uint8_t decryption_mode
Definition: scsi_sa.h:788
uint8_t page_code[2]
Definition: scsi_sa.h:763
uint8_t lbe_key[]
Definition: scsi_sa.h:805
uint8_t lbe_key_format
Definition: scsi_sa.h:794
uint8_t wrapped_key_type
Definition: scsi_sa.h:873
uint8_t wrapped_desc[]
Definition: scsi_sa.h:881
uint8_t wrapped_desc_length[2]
Definition: scsi_sa.h:880
Definition: cam_ccb.h:1345