102b636c6Sjdunham /* 202b636c6Sjdunham * CDDL HEADER START 302b636c6Sjdunham * 402b636c6Sjdunham * The contents of this file are subject to the terms of the 502b636c6Sjdunham * Common Development and Distribution License (the "License"). 602b636c6Sjdunham * You may not use this file except in compliance with the License. 702b636c6Sjdunham * 802b636c6Sjdunham * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 902b636c6Sjdunham * or http://www.opensolaris.org/os/licensing. 1002b636c6Sjdunham * See the License for the specific language governing permissions 1102b636c6Sjdunham * and limitations under the License. 1202b636c6Sjdunham * 1302b636c6Sjdunham * When distributing Covered Code, include this CDDL HEADER in each 1402b636c6Sjdunham * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 1502b636c6Sjdunham * If applicable, add the following below this CDDL HEADER, with the 1602b636c6Sjdunham * fields enclosed by brackets "[]" replaced with your own identifying 1702b636c6Sjdunham * information: Portions Copyright [yyyy] [name of copyright owner] 1802b636c6Sjdunham * 1902b636c6Sjdunham * CDDL HEADER END 2002b636c6Sjdunham */ 2102b636c6Sjdunham /* 22*716c1805SNattuvetty Bhavyan * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 2302b636c6Sjdunham */ 2402b636c6Sjdunham 2502b636c6Sjdunham #ifndef _SYS_SCSI_GENERIC_PERSIST_H 2602b636c6Sjdunham #define _SYS_SCSI_GENERIC_PERSIST_H 2702b636c6Sjdunham 2802b636c6Sjdunham #ifdef __cplusplus 2902b636c6Sjdunham extern "C" { 3002b636c6Sjdunham #endif 3102b636c6Sjdunham 3202b636c6Sjdunham /* 3302b636c6Sjdunham * SCSI Persistence Data 3402b636c6Sjdunham * 3502b636c6Sjdunham * Format of data returned as a result of PERSISTENCE RESERVER { IN | OUT } 3602b636c6Sjdunham */ 3702b636c6Sjdunham 3802b636c6Sjdunham /* 3902b636c6Sjdunham * SPC-3 revision 23, Section 6.11.1, Table 102 4002b636c6Sjdunham * Persistent Reservations 4102b636c6Sjdunham * Persistent Reserve In service actions 4202b636c6Sjdunham */ 4302b636c6Sjdunham #define PR_IN_READ_KEYS 0x0 /* Read all registered reservation keys */ 4402b636c6Sjdunham #define PR_IN_READ_RESERVATION 0x1 /* Reads th persistent reservations */ 4502b636c6Sjdunham #define PR_IN_REPORT_CAPABILITIES 0x2 /* Returns capability information */ 4602b636c6Sjdunham #define PR_IN_READ_FULL_STATUS 0x3 /* Reads complete information about all */ 4702b636c6Sjdunham /* registrations and the persistent */ 4802b636c6Sjdunham /* reservations, if any */ 4902b636c6Sjdunham /* 5002b636c6Sjdunham * SPC-3 revision 23, Section 6.11.3.3, Table 106 5102b636c6Sjdunham * Persistent reservation scope codes 5202b636c6Sjdunham */ 5302b636c6Sjdunham #define PR_LU_SCOPE 0x0 /* Persistent reservation applies to */ 5402b636c6Sjdunham /* full logical unit */ 5502b636c6Sjdunham /* 5602b636c6Sjdunham * SPC-3 revision 23, Section 6.11.3.4, Table 107 5702b636c6Sjdunham * Persistent Reservations 5802b636c6Sjdunham * Persistent reservation type codes 5902b636c6Sjdunham */ 6002b636c6Sjdunham #define PGR_TYPE_WR_EX 0x1 /* Write Exclusive */ 6102b636c6Sjdunham #define PGR_TYPE_EX_AC 0x3 /* Exclusive Access */ 6202b636c6Sjdunham #define PGR_TYPE_WR_EX_RO 0x5 /* Write Exclusive, Registrants Only */ 6302b636c6Sjdunham #define PGR_TYPE_EX_AC_RO 0x6 /* Exclusive Access, Registrants Only */ 6402b636c6Sjdunham #define PGR_TYPE_WR_EX_AR 0x7 /* Write Exclusive, All Registrants */ 6502b636c6Sjdunham #define PGR_TYPE_EX_AC_AR 0x8 /* Exclusive Access, All Registrants */ 6602b636c6Sjdunham 67*716c1805SNattuvetty Bhavyan /* 68*716c1805SNattuvetty Bhavyan * SPC-3 revision 23, Section 6.12.2, Table 113 69*716c1805SNattuvetty Bhavyan * Persistent Reservations 70*716c1805SNattuvetty Bhavyan * Persistent Reserve Out service action codes 71*716c1805SNattuvetty Bhavyan */ 72*716c1805SNattuvetty Bhavyan #define PR_OUT_REGISTER 0x0 /* Register/unregister a reservation */ 73*716c1805SNattuvetty Bhavyan /* key with the device server */ 74*716c1805SNattuvetty Bhavyan #define PR_OUT_RESERVE 0x1 /* Create a persistent reservation */ 75*716c1805SNattuvetty Bhavyan /* having a specified SCOPE & TYPE */ 76*716c1805SNattuvetty Bhavyan #define PR_OUT_RELEASE 0x2 /* Release the selected persistent */ 77*716c1805SNattuvetty Bhavyan /* reservation */ 78*716c1805SNattuvetty Bhavyan #define PR_OUT_CLEAR 0x3 /* Clears all reservation keys and */ 79*716c1805SNattuvetty Bhavyan /* all persistent reservations */ 80*716c1805SNattuvetty Bhavyan #define PR_OUT_PREEMPT 0x4 /* Preempts persistent reservations */ 81*716c1805SNattuvetty Bhavyan /* and/or removes reservations */ 82*716c1805SNattuvetty Bhavyan #define PR_OUT_PREEMPT_ABORT 0x5 /* Preempts persistent reservations */ 83*716c1805SNattuvetty Bhavyan /* and/or removes reservations, and */ 84*716c1805SNattuvetty Bhavyan /* aborts all tasks for all preempted */ 85*716c1805SNattuvetty Bhavyan /* I_T nexuses */ 86*716c1805SNattuvetty Bhavyan #define PR_OUT_REGISTER_AND_IGNORE_EXISTING_KEY 0x06 87*716c1805SNattuvetty Bhavyan /* Register a reservation key with */ 88*716c1805SNattuvetty Bhavyan /* the device server, or unregister a */ 89*716c1805SNattuvetty Bhavyan /* reservation key */ 90*716c1805SNattuvetty Bhavyan #define PR_OUT_REGISTER_MOVE 0x7 /* Register a reservation key for */ 91*716c1805SNattuvetty Bhavyan /* another I_T nexus with the device */ 92*716c1805SNattuvetty Bhavyan /* server and move a persistent */ 93*716c1805SNattuvetty Bhavyan /* reservation to the I_T nexus */ 94*716c1805SNattuvetty Bhavyan 95*716c1805SNattuvetty Bhavyan 9602b636c6Sjdunham /* 9702b636c6Sjdunham * Information obtained from: 9802b636c6Sjdunham * SPC-3, Revision 23 9902b636c6Sjdunham * Section 6.11.5 PERSISTENCE RESERVE IN 10002b636c6Sjdunham * Table 111 - full status descriptor format 10102b636c6Sjdunham */ 10202b636c6Sjdunham /* Table 289 - iSCSI Initiator Device TransportID format */ 10302b636c6Sjdunham 10402b636c6Sjdunham #define iSCSI_PROTOCOL_ID 0x5 /* Table 262 - iSCSI Protocol ID */ 10502b636c6Sjdunham #define WW_UID_DEVICE_NAME 0x0 /* Table 288 - iSCSI Transport IDs */ 10602b636c6Sjdunham 107*716c1805SNattuvetty Bhavyan /* 108*716c1805SNattuvetty Bhavyan * Definitions related SCSI Transport ID 109*716c1805SNattuvetty Bhavyan * SPC3 rev 23, Tables 284-287 110*716c1805SNattuvetty Bhavyan */ 111*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_SIZE 24 112*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_FC_PORT_NAME_SIZE 8 113*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_SPI_ADDRESS_LEN 2 114*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_SPI_REL_TGTPTID_LEN 2 115*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_SBP_PORT_NAME_LEN 8 116*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_SRP_PORT_NAME_LEN 16 117*716c1805SNattuvetty Bhavyan #define SCSI_TPTID_ISCSI_ISID_SEPERATOR ",i,0x" 11802b636c6Sjdunham 11902b636c6Sjdunham #if defined(_BIT_FIELDS_LTOH) 12002b636c6Sjdunham /* 12102b636c6Sjdunham * Information obtained from: 12202b636c6Sjdunham * SPC-3, Revision 23 12302b636c6Sjdunham * Section 6.11.1 PERSISTENCE RESERVE IN 12402b636c6Sjdunham * Table 101 - PERSISTENCE RESERVE IN command 12502b636c6Sjdunham */ 12602b636c6Sjdunham typedef struct scsi_cdb_prin { 12702b636c6Sjdunham uint8_t cmd; 12802b636c6Sjdunham uint8_t action : 5, 12902b636c6Sjdunham resbits : 3; 13002b636c6Sjdunham uint8_t resbytes[5]; 13102b636c6Sjdunham uint8_t alloc_len[2]; 13202b636c6Sjdunham uint8_t control; 13302b636c6Sjdunham } scsi_cdb_prin_t; 13402b636c6Sjdunham 13502b636c6Sjdunham /* 13602b636c6Sjdunham * Information obtained from: 13702b636c6Sjdunham * SPC-3, Revision 23 13802b636c6Sjdunham * Section 6.11.2 PERSISTENCE RESERVE IN 13902b636c6Sjdunham * Table 103/104/105 - parameter data for READS KEYS 14002b636c6Sjdunham */ 14102b636c6Sjdunham typedef struct scsi_prin_rsrvdesc { 14202b636c6Sjdunham uint8_t reservation_key[8]; 14302b636c6Sjdunham uint8_t obsolete1[4]; 14402b636c6Sjdunham uint8_t resbytes; 14502b636c6Sjdunham uint8_t type : 4, 14602b636c6Sjdunham scope : 4; 14702b636c6Sjdunham uint8_t obsolete2[2]; 14802b636c6Sjdunham } scsi_prin_rsrvdesc_t; 14902b636c6Sjdunham typedef struct scsi_prin_readrsrv { 15002b636c6Sjdunham uint8_t PRgeneration[4]; 15102b636c6Sjdunham uint8_t add_len[4]; 15268941780Sjdunham union { 15368941780Sjdunham uint64_t service_key[1]; 15468941780Sjdunham scsi_prin_rsrvdesc_t res_key_list[1]; 15568941780Sjdunham } key_list; 15602b636c6Sjdunham } scsi_prin_readrsrv_t; 15702b636c6Sjdunham 15802b636c6Sjdunham /* 15902b636c6Sjdunham * Information obtained from: 16002b636c6Sjdunham * SPC-3, Revision 23 16102b636c6Sjdunham * Section 6.11.4 PERSISTENCE RESERVE IN 16202b636c6Sjdunham * Table 108 - parameter data for REPORT CAPABILTIES 16302b636c6Sjdunham */ 16402b636c6Sjdunham typedef struct scsi_per_res_type { 16502b636c6Sjdunham uint8_t resbits1 : 1, 16602b636c6Sjdunham wr_ex : 1, 16702b636c6Sjdunham resbits2 : 1, 16802b636c6Sjdunham ex_ac : 1, 16902b636c6Sjdunham resbits3 : 1, 17002b636c6Sjdunham wr_ex_ro : 1, 17102b636c6Sjdunham ex_ac_ro : 1, 17202b636c6Sjdunham wr_ex_ar : 1; 17302b636c6Sjdunham uint8_t ex_ac_ar : 1, 17402b636c6Sjdunham resbits4 : 7; 17502b636c6Sjdunham } scsi_per_res_type_t; 17670c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States 17770c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States /* 17870c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States * Refer SPC-3, Revision 23 17970c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States * Section 6.11.4 REPORT CAPABILITIES service action 18070c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States */ 18102b636c6Sjdunham typedef struct scsi_prin_rpt_cap { 18202b636c6Sjdunham uint8_t length[2]; 18302b636c6Sjdunham uint8_t ptpl_c : 1, 18402b636c6Sjdunham resbits1 : 1, 18502b636c6Sjdunham atp_c : 1, 18602b636c6Sjdunham sip_c : 1, 18702b636c6Sjdunham crh : 1, 18802b636c6Sjdunham resbits2 : 3; 18902b636c6Sjdunham uint8_t ptpl_a : 1, 19002b636c6Sjdunham resbits3 : 6, 19102b636c6Sjdunham tmv : 1; 19202b636c6Sjdunham scsi_per_res_type_t pr_type; 19302b636c6Sjdunham uint8_t resbytes[2]; 19402b636c6Sjdunham } scsi_prin_rpt_cap_t; 19502b636c6Sjdunham 19602b636c6Sjdunham /* 1978fe96085Stim szeto * Refer SPC-3, Revision 23 1988fe96085Stim szeto * Section 7.5.4 TransportID identifiers 19902b636c6Sjdunham */ 20002b636c6Sjdunham typedef struct scsi_transport_id { 20102b636c6Sjdunham uint8_t protocol_id : 4, 20202b636c6Sjdunham resbits : 2, 20302b636c6Sjdunham format_code : 2; 2048fe96085Stim szeto uint8_t protocol_data[1]; 2058fe96085Stim szeto } scsi_transport_id_t; 2068fe96085Stim szeto 2078fe96085Stim szeto typedef struct scsi_fc_transport_id { 2088fe96085Stim szeto uint8_t protocol_id : 4, 2098fe96085Stim szeto resbits : 2, 2108fe96085Stim szeto format_code : 2; 2118fe96085Stim szeto uint8_t rsvbytes1[7]; 2128fe96085Stim szeto uint8_t port_name[8]; 2138fe96085Stim szeto uint8_t rsvbytes2[8]; 2148fe96085Stim szeto } scsi_fc_transport_id_t; 2158fe96085Stim szeto 2168fe96085Stim szeto typedef struct iscsi_transport_id { 2178fe96085Stim szeto uint8_t protocol_id : 4, 2188fe96085Stim szeto resbits : 2, 2198fe96085Stim szeto format_code : 2; 2208fe96085Stim szeto uint8_t rsvbyte1; 22102b636c6Sjdunham uint8_t add_len[2]; 22202b636c6Sjdunham char iscsi_name[1]; 2238fe96085Stim szeto } iscsi_transport_id_t; 2248fe96085Stim szeto 22570c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct scsi_srp_transport_id { 22670c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t protocol_id : 4, 22770c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States resbits : 2, 22870c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States format_code : 2; 22970c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t rsvbytes1[7]; 23070c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t srp_name[16]; 23170c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States } scsi_srp_transport_id_t; 23270c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States 2338fe96085Stim szeto /* 2348fe96085Stim szeto * Information obtained from: 2358fe96085Stim szeto * SPC-3, Revision 23 2368fe96085Stim szeto * Section 6.11.5 PERSISTENCE RESERVE IN 2378fe96085Stim szeto * Table 110/111 - parameter data for READ FULL STATUS 2388fe96085Stim szeto * Table 281 - TransportId format 2398fe96085Stim szeto */ 2408fe96085Stim szeto 24102b636c6Sjdunham typedef struct scsi_prin_status_t { 24202b636c6Sjdunham uint8_t reservation_key[8]; 24302b636c6Sjdunham uint8_t resbytes1[4]; 24402b636c6Sjdunham uint8_t r_holder : 1, 24502b636c6Sjdunham all_tg_pt : 1, 24602b636c6Sjdunham resbits : 6; 24702b636c6Sjdunham uint8_t type : 4, 24802b636c6Sjdunham scope : 4; 24902b636c6Sjdunham uint8_t resbytes2[4]; 25002b636c6Sjdunham uint8_t rel_tgt_port_id[2]; 25102b636c6Sjdunham uint8_t add_len[4]; 25202b636c6Sjdunham scsi_transport_id_t trans_id; 25302b636c6Sjdunham } scsi_prin_status_t; 25470c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States 25502b636c6Sjdunham typedef struct scsi_prin_full_status { 25602b636c6Sjdunham uint8_t PRgeneration[4]; 25702b636c6Sjdunham uint8_t add_len[4]; 25802b636c6Sjdunham scsi_prin_status_t full_desc[1]; 25902b636c6Sjdunham } scsi_prin_full_status_t; 26002b636c6Sjdunham 26102b636c6Sjdunham /* 26202b636c6Sjdunham * Information obtained from: 26302b636c6Sjdunham * SPC-3, Revision 23 26402b636c6Sjdunham * Section 6.12.1 PERSISTENCE RESERVE OUT 26502b636c6Sjdunham * Table 112 - PERSISTENCE RESERVE OUT command 26602b636c6Sjdunham */ 26702b636c6Sjdunham typedef struct scsi_cdb_prout { 26802b636c6Sjdunham uint8_t cmd; 26902b636c6Sjdunham uint8_t action : 5, 27002b636c6Sjdunham resbits : 3; 27102b636c6Sjdunham uint8_t type : 4, 27202b636c6Sjdunham scope : 4; 27302b636c6Sjdunham uint8_t resbytes[2]; 27402b636c6Sjdunham uint8_t param_len[4]; 27502b636c6Sjdunham uint8_t control; 27602b636c6Sjdunham } scsi_cdb_prout_t; 27702b636c6Sjdunham 27802b636c6Sjdunham /* 27902b636c6Sjdunham * Information obtained from: 28002b636c6Sjdunham * SPC-3, Revision 23 28102b636c6Sjdunham * Section 6.12.3 PERSISTENCE RESERVE OUT 28202b636c6Sjdunham * Table 114 - PERSISTENCE RESERVE OUT parameter list 28302b636c6Sjdunham */ 28402b636c6Sjdunham typedef struct scsi_prout_plist { 28502b636c6Sjdunham uint8_t reservation_key[8]; 28602b636c6Sjdunham uint8_t service_key[8]; 28702b636c6Sjdunham uint8_t obsolete1[4]; 28802b636c6Sjdunham uint8_t aptpl : 1, 28902b636c6Sjdunham resbits1 : 1, 29002b636c6Sjdunham all_tg_pt : 1, 29102b636c6Sjdunham spec_i_pt : 1, 29202b636c6Sjdunham resbits2 : 4; 29302b636c6Sjdunham uint8_t resbytes1; 29402b636c6Sjdunham uint8_t obsolete2[2]; 29502b636c6Sjdunham uint8_t apd[1]; 29602b636c6Sjdunham } scsi_prout_plist_t; 29702b636c6Sjdunham 2988fe96085Stim szeto /* 2998fe96085Stim szeto * Information obtained from: 3008fe96085Stim szeto * SPC-3, Revision 23 3018fe96085Stim szeto * Section 6.12.4 PERSISTENCE RESERVE OUT command with REGISTER AND MOVE 3028fe96085Stim szeto * Table 117 - REGISTER and MOVE service action parameter list 3038fe96085Stim szeto */ 3048fe96085Stim szeto typedef struct scsi_prout_reg_move_plist { 3058fe96085Stim szeto uint8_t reservation_key[8]; 3068fe96085Stim szeto uint8_t service_key[8]; 3078fe96085Stim szeto uint8_t resbytes1; 3088fe96085Stim szeto uint8_t aptpl : 1, 3098fe96085Stim szeto unreg : 1, 3108fe96085Stim szeto resbits1 : 6; 3118fe96085Stim szeto uint8_t rel_tgt_port_id[2]; 3128fe96085Stim szeto uint8_t tptid_len[4]; 3138fe96085Stim szeto uint8_t tptid[1]; 3148fe96085Stim szeto } scsi_prout_reg_move_plist_t; 3158fe96085Stim szeto 31602b636c6Sjdunham #elif defined(_BIT_FIELDS_HTOL) 31702b636c6Sjdunham /* 31802b636c6Sjdunham * Information obtained from: 31902b636c6Sjdunham * SPC-3, Revision 23 32002b636c6Sjdunham * Section 6.11.1 PERSISTENCE RESERVE IN 32102b636c6Sjdunham * Table 101 - PERSISTENCE RESERVE IN command 32202b636c6Sjdunham */ 32302b636c6Sjdunham typedef struct scsi_cdb_prin { 32402b636c6Sjdunham uint8_t cmd; 32502b636c6Sjdunham uint8_t resbits : 3, 32602b636c6Sjdunham action : 5; 32702b636c6Sjdunham uint8_t resbytes[5]; 32802b636c6Sjdunham uint8_t alloc_len[2]; 32902b636c6Sjdunham uint8_t control; 33002b636c6Sjdunham } scsi_cdb_prin_t; 33102b636c6Sjdunham 33202b636c6Sjdunham /* 33302b636c6Sjdunham * Information obtained from: 33402b636c6Sjdunham * SPC-3, Revision 23 33502b636c6Sjdunham * Section 6.11.2 PERSISTENCE RESERVE IN 33602b636c6Sjdunham * Table 103/104/105 - parameter data for READS KEYS 33702b636c6Sjdunham */ 33802b636c6Sjdunham typedef struct scsi_prin_rsrvdesc { 33902b636c6Sjdunham uint8_t reservation_key[8]; 34002b636c6Sjdunham uint8_t obsolete1[4]; 34102b636c6Sjdunham uint8_t resbytes; 34202b636c6Sjdunham uint8_t scope : 4, 34302b636c6Sjdunham type : 4; 34468941780Sjdunham uint8_t obsolete2[2]; 34502b636c6Sjdunham } scsi_prin_rsrvdesc_t; 34602b636c6Sjdunham typedef struct scsi_prin_readrsrv { 34702b636c6Sjdunham uint8_t PRgeneration[4]; 34802b636c6Sjdunham uint8_t add_len[4]; 34968941780Sjdunham union { 35068941780Sjdunham uint64_t service_key[1]; 35168941780Sjdunham scsi_prin_rsrvdesc_t res_key_list[1]; 35268941780Sjdunham } key_list; 35302b636c6Sjdunham } scsi_prin_readrsrv_t; 35402b636c6Sjdunham 35502b636c6Sjdunham /* 35602b636c6Sjdunham * Information obtained from: 35702b636c6Sjdunham * SPC-3, Revision 23 35802b636c6Sjdunham * Section 6.11.4 PERSISTENCE RESERVE IN 35902b636c6Sjdunham * Table 108 - parameter data for REPORT CAPABILTIES 36002b636c6Sjdunham */ 36102b636c6Sjdunham typedef struct scsi_per_res_type { 36202b636c6Sjdunham uint8_t wr_ex_ar : 1, 36302b636c6Sjdunham ex_ac_ro : 1, 36402b636c6Sjdunham wr_ex_ro : 1, 36502b636c6Sjdunham resbits3 : 1, 36602b636c6Sjdunham ex_ac : 1, 36702b636c6Sjdunham resbits2 : 1, 36802b636c6Sjdunham wr_ex : 1, 36902b636c6Sjdunham resbits1 : 1; 37002b636c6Sjdunham uint8_t resbits4 : 7, 37102b636c6Sjdunham ex_ac_ar : 1; 37202b636c6Sjdunham } scsi_per_res_type_t; 37370c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States /* 37470c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States * Refer SPC-3, Revision 23 37570c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States * Section 6.11.4 REPORT CAPABILITIES service action 37670c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States */ 37702b636c6Sjdunham typedef struct scsi_prin_rpt_cap { 37802b636c6Sjdunham uint8_t length[2]; 37902b636c6Sjdunham uint8_t resbits2 : 3, 38002b636c6Sjdunham crh : 1, 38102b636c6Sjdunham sip_c : 1, 38202b636c6Sjdunham atp_c : 1, 38302b636c6Sjdunham resbits1 : 1, 38402b636c6Sjdunham ptpl_c : 1; 38502b636c6Sjdunham uint8_t tmv : 1, 38602b636c6Sjdunham resbits3 : 6, 38702b636c6Sjdunham ptpl_a : 1; 38802b636c6Sjdunham scsi_per_res_type_t pr_type; 38902b636c6Sjdunham uint8_t resbytes[2]; 39002b636c6Sjdunham } scsi_prin_rpt_cap_t; 39102b636c6Sjdunham 39202b636c6Sjdunham /* 3938fe96085Stim szeto * Refer SPC-3, Revision 23 3948fe96085Stim szeto * Section 7.5.4 TransportID identifiers 39502b636c6Sjdunham */ 39602b636c6Sjdunham typedef struct scsi_transport_id { 39702b636c6Sjdunham uint8_t format_code : 2, 39802b636c6Sjdunham resbits : 2, 39902b636c6Sjdunham protocol_id : 4; 4008fe96085Stim szeto uint8_t protocol_data[1]; 4018fe96085Stim szeto } scsi_transport_id_t; 4028fe96085Stim szeto 4038fe96085Stim szeto typedef struct scsi_fc_transport_id { 4048fe96085Stim szeto uint8_t format_code : 2, 4058fe96085Stim szeto resbits : 2, 4068fe96085Stim szeto protocol_id : 4; 4078fe96085Stim szeto uint8_t rsvbytes1[7]; 4088fe96085Stim szeto uint8_t port_name[8]; 4098fe96085Stim szeto uint8_t rsvbytes2[8]; 4108fe96085Stim szeto } scsi_fc_transport_id_t; 4118fe96085Stim szeto 4128fe96085Stim szeto typedef struct iscsi_transport_id { 4138fe96085Stim szeto uint8_t format_code : 2, 4148fe96085Stim szeto resbits : 2, 4158fe96085Stim szeto protocol_id : 4; 4168fe96085Stim szeto uint8_t rsvbyte1; 41702b636c6Sjdunham uint8_t add_len[2]; 41802b636c6Sjdunham char iscsi_name[1]; 4198fe96085Stim szeto } iscsi_transport_id_t; 4208fe96085Stim szeto 42170c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States 42270c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States typedef struct scsi_srp_transport_id { 42370c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t format_code : 2, 42470c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States resbits : 2, 42570c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States protocol_id : 4; 42670c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t rsvbytes1[7]; 42770c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States uint8_t srp_name[16]; 42870c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States } scsi_srp_transport_id_t; 42970c284caSPeter Cudhea - Sun Microsystems - Burlington, MA United States 4308fe96085Stim szeto /* 4318fe96085Stim szeto * Information obtained from: 4328fe96085Stim szeto * SPC-3, Revision 23 4338fe96085Stim szeto * Section 6.11.5 PERSISTENCE RESERVE IN 4348fe96085Stim szeto * Table 110/111 - parameter data for READ FULL STATUS 4358fe96085Stim szeto * Table 281 - TransportId format 4368fe96085Stim szeto */ 4378fe96085Stim szeto 43802b636c6Sjdunham typedef struct scsi_prin_status_t { 43902b636c6Sjdunham uint8_t reservation_key[8]; 44002b636c6Sjdunham uint8_t resbytes1[4]; 44102b636c6Sjdunham uint8_t resbits : 6, 44202b636c6Sjdunham all_tg_pt : 1, 44302b636c6Sjdunham r_holder : 1; 44402b636c6Sjdunham uint8_t scope : 4, 44502b636c6Sjdunham type : 4; 44602b636c6Sjdunham uint8_t resbytes2[4]; 44702b636c6Sjdunham uint8_t rel_tgt_port_id[2]; 44802b636c6Sjdunham uint8_t add_len[4]; 44902b636c6Sjdunham scsi_transport_id_t trans_id; 45002b636c6Sjdunham } scsi_prin_status_t; 45102b636c6Sjdunham typedef struct scsi_prin_full_status { 45202b636c6Sjdunham uint8_t PRgeneration[4]; 45302b636c6Sjdunham uint8_t add_len[4]; 45402b636c6Sjdunham scsi_prin_status_t full_desc[1]; 45502b636c6Sjdunham } scsi_prin_full_status_t; 45602b636c6Sjdunham 45702b636c6Sjdunham /* 45802b636c6Sjdunham * Information obtained from: 45902b636c6Sjdunham * SPC-3, Revision 23 46002b636c6Sjdunham * Section 6.12.1 PERSISTENCE RESERVE OUT 46102b636c6Sjdunham * Table 112 - PERSISTENCE RESERVE OUT command 46202b636c6Sjdunham */ 46302b636c6Sjdunham typedef struct scsi_cdb_prout { 46402b636c6Sjdunham uint8_t cmd; 46502b636c6Sjdunham uint8_t resbits : 3, 46602b636c6Sjdunham action : 5; 46702b636c6Sjdunham uint8_t scope : 4, 46802b636c6Sjdunham type : 4; 46902b636c6Sjdunham uint8_t resbytes[2]; 47002b636c6Sjdunham uint8_t param_len[4]; 47102b636c6Sjdunham uint8_t control; 47202b636c6Sjdunham } scsi_cdb_prout_t; 47302b636c6Sjdunham 47402b636c6Sjdunham /* 47502b636c6Sjdunham * Information obtained from: 47602b636c6Sjdunham * SPC-3, Revision 23 47702b636c6Sjdunham * Section 6.12.3 PERSISTENCE RESERVE OUT 47802b636c6Sjdunham * Table 114 - PERSISTENCE RESERVE OUT parameter list 47902b636c6Sjdunham */ 48002b636c6Sjdunham typedef struct scsi_prout_plist { 48102b636c6Sjdunham uint8_t reservation_key[8]; 48202b636c6Sjdunham uint8_t service_key[8]; 48302b636c6Sjdunham uint8_t obsolete1[4]; 48402b636c6Sjdunham uint8_t resbits1 : 4, 48502b636c6Sjdunham spec_i_pt : 1, 48602b636c6Sjdunham all_tg_pt : 1, 48702b636c6Sjdunham resbits2 : 1, 48802b636c6Sjdunham aptpl : 1; 48902b636c6Sjdunham uint8_t resbytes1; 49002b636c6Sjdunham uint8_t obsolete2[2]; 49102b636c6Sjdunham uint8_t apd[1]; 49202b636c6Sjdunham } scsi_prout_plist_t; 49302b636c6Sjdunham 4948fe96085Stim szeto /* 4958fe96085Stim szeto * Information obtained from: 4968fe96085Stim szeto * SPC-3, Revision 23 4978fe96085Stim szeto * Section 6.12.4 PERSISTENCE RESERVE OUT command with REGISTER AND MOVE 4988fe96085Stim szeto * Table 117 - REGISTER and MOVE service action parameter list 4998fe96085Stim szeto */ 5008fe96085Stim szeto typedef struct scsi_prout_reg_move_plist { 5018fe96085Stim szeto uint8_t reservation_key[8]; 5028fe96085Stim szeto uint8_t service_key[8]; 5038fe96085Stim szeto uint8_t resbytes1; 5048fe96085Stim szeto uint8_t resbits1 : 6, 5058fe96085Stim szeto unreg : 1, 5068fe96085Stim szeto aptpl : 1; 5078fe96085Stim szeto uint8_t rel_tgt_port_id[2]; 5088fe96085Stim szeto uint8_t tptid_len[4]; 5098fe96085Stim szeto uint8_t tptid[1]; 5108fe96085Stim szeto } scsi_prout_reg_move_plist_t; 5118fe96085Stim szeto 51202b636c6Sjdunham #else 51302b636c6Sjdunham #error One of _BIT_FIELDS_LTOH or _BIT_FIELDS_HTOL must be defined 51402b636c6Sjdunham #endif /* _BIT_FIELDS_LTOH */ 51502b636c6Sjdunham #ifdef __cplusplus 51602b636c6Sjdunham } 51702b636c6Sjdunham #endif 51802b636c6Sjdunham 51902b636c6Sjdunham #endif /* _SYS_SCSI_GENERIC_PERSIST_H */ 520