1 /* SPDX-License-Identifier: GPL-2.0 */ << 2 #ifndef CCISS_IOCTLH 1 #ifndef CCISS_IOCTLH 3 #define CCISS_IOCTLH 2 #define CCISS_IOCTLH 4 3 5 #include <uapi/linux/cciss_ioctl.h> !! 4 #include <linux/types.h> >> 5 #include <linux/ioctl.h> 6 6 >> 7 #define CCISS_IOC_MAGIC 'B' >> 8 >> 9 >> 10 typedef struct _cciss_pci_info_struct >> 11 { >> 12 unsigned char bus; >> 13 unsigned char dev_fn; >> 14 unsigned short domain; >> 15 __u32 board_id; >> 16 } cciss_pci_info_struct; >> 17 >> 18 typedef struct _cciss_coalint_struct >> 19 { >> 20 __u32 delay; >> 21 __u32 count; >> 22 } cciss_coalint_struct; >> 23 >> 24 typedef char NodeName_type[16]; >> 25 >> 26 typedef __u32 Heartbeat_type; >> 27 >> 28 #define CISS_PARSCSIU2 0x0001 >> 29 #define CISS_PARCSCIU3 0x0002 >> 30 #define CISS_FIBRE1G 0x0100 >> 31 #define CISS_FIBRE2G 0x0200 >> 32 typedef __u32 BusTypes_type; >> 33 >> 34 typedef char FirmwareVer_type[4]; >> 35 typedef __u32 DriverVer_type; >> 36 >> 37 #define MAX_KMALLOC_SIZE 128000 >> 38 >> 39 #ifndef CCISS_CMD_H >> 40 // This defines are duplicated in cciss_cmd.h in the driver directory >> 41 >> 42 //general boundary defintions >> 43 #define SENSEINFOBYTES 32//note that this value may vary between host implementations >> 44 >> 45 //Command Status value >> 46 #define CMD_SUCCESS 0x0000 >> 47 #define CMD_TARGET_STATUS 0x0001 >> 48 #define CMD_DATA_UNDERRUN 0x0002 >> 49 #define CMD_DATA_OVERRUN 0x0003 >> 50 #define CMD_INVALID 0x0004 >> 51 #define CMD_PROTOCOL_ERR 0x0005 >> 52 #define CMD_HARDWARE_ERR 0x0006 >> 53 #define CMD_CONNECTION_LOST 0x0007 >> 54 #define CMD_ABORTED 0x0008 >> 55 #define CMD_ABORT_FAILED 0x0009 >> 56 #define CMD_UNSOLICITED_ABORT 0x000A >> 57 #define CMD_TIMEOUT 0x000B >> 58 #define CMD_UNABORTABLE 0x000C >> 59 >> 60 //transfer direction >> 61 #define XFER_NONE 0x00 >> 62 #define XFER_WRITE 0x01 >> 63 #define XFER_READ 0x02 >> 64 #define XFER_RSVD 0x03 >> 65 >> 66 //task attribute >> 67 #define ATTR_UNTAGGED 0x00 >> 68 #define ATTR_SIMPLE 0x04 >> 69 #define ATTR_HEADOFQUEUE 0x05 >> 70 #define ATTR_ORDERED 0x06 >> 71 #define ATTR_ACA 0x07 >> 72 >> 73 //cdb type >> 74 #define TYPE_CMD 0x00 >> 75 #define TYPE_MSG 0x01 >> 76 >> 77 // Type defs used in the following structs >> 78 #define BYTE __u8 >> 79 #define WORD __u16 >> 80 #define HWORD __u16 >> 81 #define DWORD __u32 >> 82 >> 83 #define CISS_MAX_LUN 1024 >> 84 >> 85 #define LEVEL2LUN 1 // index into Target(x) structure, due to byte swapping >> 86 #define LEVEL3LUN 0 >> 87 >> 88 #pragma pack(1) >> 89 >> 90 //Command List Structure >> 91 typedef union _SCSI3Addr_struct { >> 92 struct { >> 93 BYTE Dev; >> 94 BYTE Bus:6; >> 95 BYTE Mode:2; // b00 >> 96 } PeripDev; >> 97 struct { >> 98 BYTE DevLSB; >> 99 BYTE DevMSB:6; >> 100 BYTE Mode:2; // b01 >> 101 } LogDev; >> 102 struct { >> 103 BYTE Dev:5; >> 104 BYTE Bus:3; >> 105 BYTE Targ:6; >> 106 BYTE Mode:2; // b10 >> 107 } LogUnit; >> 108 } SCSI3Addr_struct; >> 109 >> 110 typedef struct _PhysDevAddr_struct { >> 111 DWORD TargetId:24; >> 112 DWORD Bus:6; >> 113 DWORD Mode:2; >> 114 SCSI3Addr_struct Target[2]; //2 level target device addr >> 115 } PhysDevAddr_struct; >> 116 >> 117 typedef struct _LogDevAddr_struct { >> 118 DWORD VolId:30; >> 119 DWORD Mode:2; >> 120 BYTE reserved[4]; >> 121 } LogDevAddr_struct; >> 122 >> 123 typedef union _LUNAddr_struct { >> 124 BYTE LunAddrBytes[8]; >> 125 SCSI3Addr_struct SCSI3Lun[4]; >> 126 PhysDevAddr_struct PhysDev; >> 127 LogDevAddr_struct LogDev; >> 128 } LUNAddr_struct; >> 129 >> 130 typedef struct _RequestBlock_struct { >> 131 BYTE CDBLen; >> 132 struct { >> 133 BYTE Type:3; >> 134 BYTE Attribute:3; >> 135 BYTE Direction:2; >> 136 } Type; >> 137 HWORD Timeout; >> 138 BYTE CDB[16]; >> 139 } RequestBlock_struct; >> 140 >> 141 typedef union _MoreErrInfo_struct{ >> 142 struct { >> 143 BYTE Reserved[3]; >> 144 BYTE Type; >> 145 DWORD ErrorInfo; >> 146 }Common_Info; >> 147 struct{ >> 148 BYTE Reserved[2]; >> 149 BYTE offense_size;//size of offending entry >> 150 BYTE offense_num; //byte # of offense 0-base >> 151 DWORD offense_value; >> 152 }Invalid_Cmd; >> 153 }MoreErrInfo_struct; >> 154 typedef struct _ErrorInfo_struct { >> 155 BYTE ScsiStatus; >> 156 BYTE SenseLen; >> 157 HWORD CommandStatus; >> 158 DWORD ResidualCnt; >> 159 MoreErrInfo_struct MoreErrInfo; >> 160 BYTE SenseInfo[SENSEINFOBYTES]; >> 161 } ErrorInfo_struct; >> 162 >> 163 #pragma pack() >> 164 #endif /* CCISS_CMD_H */ >> 165 >> 166 typedef struct _IOCTL_Command_struct { >> 167 LUNAddr_struct LUN_info; >> 168 RequestBlock_struct Request; >> 169 ErrorInfo_struct error_info; >> 170 WORD buf_size; /* size in bytes of the buf */ >> 171 BYTE __user *buf; >> 172 } IOCTL_Command_struct; >> 173 >> 174 typedef struct _BIG_IOCTL_Command_struct { >> 175 LUNAddr_struct LUN_info; >> 176 RequestBlock_struct Request; >> 177 ErrorInfo_struct error_info; >> 178 DWORD malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */ >> 179 DWORD buf_size; /* size in bytes of the buf */ >> 180 /* < malloc_size * MAXSGENTRIES */ >> 181 BYTE __user *buf; >> 182 } BIG_IOCTL_Command_struct; >> 183 >> 184 typedef struct _LogvolInfo_struct{ >> 185 __u32 LunID; >> 186 int num_opens; /* number of opens on the logical volume */ >> 187 int num_parts; /* number of partitions configured on logvol */ >> 188 } LogvolInfo_struct; >> 189 >> 190 #define CCISS_GETPCIINFO _IOR(CCISS_IOC_MAGIC, 1, cciss_pci_info_struct) >> 191 >> 192 #define CCISS_GETINTINFO _IOR(CCISS_IOC_MAGIC, 2, cciss_coalint_struct) >> 193 #define CCISS_SETINTINFO _IOW(CCISS_IOC_MAGIC, 3, cciss_coalint_struct) >> 194 >> 195 #define CCISS_GETNODENAME _IOR(CCISS_IOC_MAGIC, 4, NodeName_type) >> 196 #define CCISS_SETNODENAME _IOW(CCISS_IOC_MAGIC, 5, NodeName_type) >> 197 >> 198 #define CCISS_GETHEARTBEAT _IOR(CCISS_IOC_MAGIC, 6, Heartbeat_type) >> 199 #define CCISS_GETBUSTYPES _IOR(CCISS_IOC_MAGIC, 7, BusTypes_type) >> 200 #define CCISS_GETFIRMVER _IOR(CCISS_IOC_MAGIC, 8, FirmwareVer_type) >> 201 #define CCISS_GETDRIVVER _IOR(CCISS_IOC_MAGIC, 9, DriverVer_type) >> 202 #define CCISS_REVALIDVOLS _IO(CCISS_IOC_MAGIC, 10) >> 203 #define CCISS_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 11, IOCTL_Command_struct) >> 204 #define CCISS_DEREGDISK _IO(CCISS_IOC_MAGIC, 12) >> 205 >> 206 /* no longer used... use REGNEWD instead */ >> 207 #define CCISS_REGNEWDISK _IOW(CCISS_IOC_MAGIC, 13, int) >> 208 >> 209 #define CCISS_REGNEWD _IO(CCISS_IOC_MAGIC, 14) >> 210 #define CCISS_RESCANDISK _IO(CCISS_IOC_MAGIC, 16) >> 211 #define CCISS_GETLUNINFO _IOR(CCISS_IOC_MAGIC, 17, LogvolInfo_struct) >> 212 #define CCISS_BIG_PASSTHRU _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL_Command_struct) >> 213 >> 214 #ifdef __KERNEL__ 7 #ifdef CONFIG_COMPAT 215 #ifdef CONFIG_COMPAT 8 216 9 /* 32 bit compatible ioctl structs */ 217 /* 32 bit compatible ioctl structs */ 10 typedef struct _IOCTL32_Command_struct { 218 typedef struct _IOCTL32_Command_struct { 11 LUNAddr_struct LUN_info; 219 LUNAddr_struct LUN_info; 12 RequestBlock_struct Request; 220 RequestBlock_struct Request; 13 ErrorInfo_struct error_info; 221 ErrorInfo_struct error_info; 14 WORD buf_size; /* size 222 WORD buf_size; /* size in bytes of the buf */ 15 __u32 buf; /* 32 bit poin 223 __u32 buf; /* 32 bit pointer to data buffer */ 16 } IOCTL32_Command_struct; 224 } IOCTL32_Command_struct; 17 225 18 typedef struct _BIG_IOCTL32_Command_struct { 226 typedef struct _BIG_IOCTL32_Command_struct { 19 LUNAddr_struct LUN_info; 227 LUNAddr_struct LUN_info; 20 RequestBlock_struct Request; 228 RequestBlock_struct Request; 21 ErrorInfo_struct error_info; 229 ErrorInfo_struct error_info; 22 DWORD malloc_size; /* < M 230 DWORD malloc_size; /* < MAX_KMALLOC_SIZE in cciss.c */ 23 DWORD buf_size; /* siz 231 DWORD buf_size; /* size in bytes of the buf */ 24 /* < m 232 /* < malloc_size * MAXSGENTRIES */ 25 __u32 buf; /* 32 bit poin 233 __u32 buf; /* 32 bit pointer to data buffer */ 26 } BIG_IOCTL32_Command_struct; 234 } BIG_IOCTL32_Command_struct; 27 235 28 #define CCISS_PASSTHRU32 _IOWR(CCISS_IOC_MAG 236 #define CCISS_PASSTHRU32 _IOWR(CCISS_IOC_MAGIC, 11, IOCTL32_Command_struct) 29 #define CCISS_BIG_PASSTHRU32 _IOWR(CCISS_IOC_M 237 #define CCISS_BIG_PASSTHRU32 _IOWR(CCISS_IOC_MAGIC, 18, BIG_IOCTL32_Command_struct) 30 238 31 #endif /* CONFIG_COMPAT */ 239 #endif /* CONFIG_COMPAT */ >> 240 #endif /* __KERNEL__ */ 32 #endif 241 #endif 33 242
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.