1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 #ifndef _STMF_DEFINES_H 26 #define _STMF_DEFINES_H 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 #define BIT_0 0x1 33 #define BIT_1 0x2 34 #define BIT_2 0x4 35 #define BIT_3 0x8 36 #define BIT_4 0x10 37 #define BIT_5 0x20 38 #define BIT_6 0x40 39 #define BIT_7 0x80 40 #define BIT_8 0x100 41 #define BIT_9 0x200 42 #define BIT_10 0x400 43 #define BIT_11 0x800 44 #define BIT_12 0x1000 45 #define BIT_13 0x2000 46 #define BIT_14 0x4000 47 #define BIT_15 0x8000 48 #define BIT_16 0x10000 49 #define BIT_17 0x20000 50 #define BIT_18 0x40000 51 #define BIT_19 0x80000 52 #define BIT_20 0x100000 53 #define BIT_21 0x200000 54 #define BIT_22 0x400000 55 #define BIT_23 0x800000 56 #define BIT_24 0x1000000 57 #define BIT_25 0x2000000 58 #define BIT_26 0x4000000 59 #define BIT_27 0x8000000 60 #define BIT_28 0x10000000 61 #define BIT_29 0x20000000 62 #define BIT_30 0x40000000 63 #define BIT_31 0x80000000 64 65 /* 66 * stmf status definitions 67 */ 68 typedef uint64_t stmf_status_t; 69 #define STMF_SUCCESS ((uint64_t)0) 70 #define STMF_FAILURE ((uint64_t)0x1000000000000000) 71 #define STMF_TARGET_FAILURE ((uint64_t)0x2000000000000000) 72 #define STMF_LU_FAILURE ((uint64_t)0x3000000000000000) 73 #define STMF_FSC(x) (((uint64_t)(x)) << 32) 74 #define STMF_GET_FSC(x) ((((uint64_t)(x)) >> 32) & 0xFFFFFF) 75 #define STMF_RETRY_BIT ((uint64_t)0x0080000000000000) 76 #define STMF_BUSY (STMF_FAILURE | STMF_RETRY_BIT | STMF_FSC(0)) 77 #define STMF_NOT_FOUND (STMF_FAILURE | STMF_FSC(1)) 78 #define STMF_INVALID_ARG (STMF_FAILURE | STMF_FSC(2)) 79 #define STMF_LUN_TAKEN (STMF_FAILURE | STMF_FSC(3)) 80 #define STMF_ABORTED (STMF_FAILURE | STMF_FSC(5)) 81 #define STMF_ABORT_SUCCESS (STMF_FAILURE | STMF_FSC(6)) 82 #define STMF_ALLOC_FAILURE (STMF_FAILURE | STMF_FSC(7)) 83 #define STMF_ALREADY (STMF_FAILURE | STMF_FSC(8)) 84 #define STMF_TIMEOUT (STMF_FAILURE | STMF_FSC(9)) 85 #define STMF_NOT_SUPPORTED (STMF_FAILURE | STMF_FSC(10)) 86 #define STMF_BADSTATE (STMF_FAILURE | STMF_FSC(11)) 87 88 #define GET_BYTE_OFFSET(ptr, off) (((uint8_t *)(ptr)) + (off)) 89 #define GET_STRUCT_SIZE(s) ((sizeof (s) + 7) & 0xfffffff8) 90 #define READ_SCSI16(addr, type) ((((type)(((uint8_t *)(addr))[0])) \ 91 << 8) |\ 92 ((type)(((uint8_t *)(addr))[1]))) 93 #define READ_SCSI21(addr, type) ((((type)(((uint8_t *)(addr))[0] & \ 94 0x1F)) << 16)\ 95 | (READ_SCSI16(addr+1, type))) 96 #define READ_SCSI32(addr, type) (((READ_SCSI16(addr, type)) << 16) |\ 97 (READ_SCSI16((addr+2), type))) 98 #define READ_SCSI64(addr, type) (((READ_SCSI32(addr, type)) << 32) |\ 99 (READ_SCSI32((addr+4), type))) 100 #define PTR2INT(p, t) ((t)((ulong_t)(p))) 101 #define INT2PTR(i, t) ((t)((ulong_t)(i))) 102 103 /* 104 * CDB definitions that don't exist in commands.h 105 */ 106 #define SCMD_SYNCHRONIZE_CACHE_G4 0x91 107 108 /* 109 * Common key, asc, ascq for stmf_scsilib_send_status 110 */ 111 #define STMF_SAA_MEDIUM_NOT_PRESENT 0X023A00 112 #define STMF_SAA_LU_NO_ACCESS_TRANSITION 0X02040A 113 #define STMF_SAA_LU_NO_ACCESS_STANDBY 0X02040B 114 #define STMF_SAA_LU_NO_ACCESS_UNAVAIL 0X02040C 115 #define STMF_SAA_WRITE_ERROR 0x030C00 116 #define STMF_SAA_READ_ERROR 0x031100 117 #define STMF_SAA_OPERATION_IN_PROGRESS 0x050016 118 #define STMF_SAA_INVALID_FIELD_IN_CMD_IU 0x050E03 119 #define STMF_SAA_PARAM_LIST_LENGTH_ERROR 0x051A00 120 #define STMF_SAA_INVALID_OPCODE 0x052000 121 #define STMF_SAA_INVALID_LU 0x052009 122 #define STMF_SAA_LBA_OUT_OF_RANGE 0x052100 123 #define STMF_SAA_INVALID_FIELD_IN_CDB 0x052400 124 #define STMF_SAA_INVALID_FIELD_IN_PARAM_LIST 0x052600 125 #define STMF_SAA_INVALID_RELEASE_OF_PR 0x052604 126 #define STMF_SAA_MEDIUM_REMOVAL_PREVENTED 0x055302 127 #define STMF_SAA_INSUFFICIENT_REG_RESOURCES 0x055504 128 #define STMF_SAA_POR 0x062900 129 #define STMF_SAA_MODE_PARAMETERS_CHANGED 0x062A01 130 #define STMF_SAA_ASYMMETRIC_ACCESS_CHANGED 0x062A06 131 #define STMF_SAA_CAPACITY_DATA_HAS_CHANGED 0x062A09 132 #define STMF_SAA_REPORT_LUN_DATA_HAS_CHANGED 0x063F0E 133 #define STMF_SAA_WRITE_PROTECTED 0X072700 134 135 struct stmf_lu_provider; 136 struct stmf_lu; 137 struct stmf_port_provider; 138 struct stmf_local_port; 139 struct stmf_scsi_session; 140 struct scsi_task; 141 struct scsi_devid_desc; 142 struct stmf_data_buf; 143 struct stmf_lun_map; 144 struct scsi_devid_desc; 145 146 #ifdef __cplusplus 147 } 148 #endif 149 150 #endif /* _STMF_DEFINES_H */ 151