1 /* 2 * scsi.h 3 * 4 * General scsi and linux scsi specific defines and structs. 5 * 6 * Copyright (C) IBM Corp. 2003 7 * 8 * This program is free software; you can redistribute it and/or modify it 9 * under the terms of the GNU General Public License as published by the 10 * Free Software Foundation version 2 of the License. 11 */ 12 13 #pragma once 14 15 #include <scsi/scsi.h> 16 17 struct scsi_ioctl_command { 18 unsigned int inlen; /* excluding scsi command length */ 19 unsigned int outlen; 20 unsigned char data[1]; 21 /* on input, scsi command starts here then opt. data */ 22 }; 23 24 /* 25 * Default 5 second timeout 26 */ 27 #define DEF_TIMEOUT 5000 28 29 #define SENSE_BUFF_LEN 32 30 31 /* 32 * The request buffer size passed to the SCSI INQUIRY commands, use 254, 33 * as this is a nice value for some devices, especially some of the usb 34 * mass storage devices. 35 */ 36 #define SCSI_INQ_BUFF_LEN 254 37 38 /* 39 * SCSI INQUIRY vendor and model (really product) lengths. 40 */ 41 #define VENDOR_LENGTH 8 42 #define MODEL_LENGTH 16 43 44 #define INQUIRY_CMD 0x12 45 #define INQUIRY_CMDLEN 6 46 47 /* 48 * INQUIRY VPD page 0x83 identifier descriptor related values. Reference the 49 * SCSI Primary Commands specification for details. 50 */ 51 52 /* 53 * id type values of id descriptors. These are assumed to fit in 4 bits. 54 */ 55 #define SCSI_ID_VENDOR_SPECIFIC 0 56 #define SCSI_ID_T10_VENDOR 1 57 #define SCSI_ID_EUI_64 2 58 #define SCSI_ID_NAA 3 59 #define SCSI_ID_RELPORT 4 60 #define SCSI_ID_TGTGROUP 5 61 #define SCSI_ID_LUNGROUP 6 62 #define SCSI_ID_MD5 7 63 #define SCSI_ID_NAME 8 64 65 /* 66 * Supported NAA values. These fit in 4 bits, so the "don't care" value 67 * cannot conflict with real values. 68 */ 69 #define SCSI_ID_NAA_DONT_CARE 0xff 70 #define SCSI_ID_NAA_IEEE_REG 5 71 #define SCSI_ID_NAA_IEEE_REG_EXTENDED 6 72 73 /* 74 * Supported Code Set values. 75 */ 76 #define SCSI_ID_BINARY 1 77 #define SCSI_ID_ASCII 2 78 79 struct scsi_id_search_values { 80 u_char id_type; 81 u_char naa_type; 82 u_char code_set; 83 }; 84 85 /* 86 * Following are the "true" SCSI status codes. Linux has traditionally 87 * used a 1 bit right and masked version of these. So now CHECK_CONDITION 88 * and friends (in <scsi/scsi.h>) are deprecated. 89 */ 90 #define SCSI_CHECK_CONDITION 0x2 91 #define SCSI_CONDITION_MET 0x4 92 #define SCSI_BUSY 0x8 93 #define SCSI_IMMEDIATE 0x10 94 #define SCSI_IMMEDIATE_CONDITION_MET 0x14 95 #define SCSI_RESERVATION_CONFLICT 0x18 96 #define SCSI_COMMAND_TERMINATED 0x22 97 #define SCSI_TASK_SET_FULL 0x28 98 #define SCSI_ACA_ACTIVE 0x30 99 #define SCSI_TASK_ABORTED 0x40 100