1 /*- 2 * Copyright (c) 2000 Michael Smith 3 * Copyright (c) 2000 Scott Long 4 * Copyright (c) 2000 BSDi 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * $FreeBSD: src/sys/dev/aac/aac_ioctl.h,v 1.2.2.2 2001/09/19 19:09:11 scottl Exp $ 29 */ 30 31 /* 32 * Command queue statistics 33 */ 34 #define AACQ_FREE 0 35 #define AACQ_BIO 1 36 #define AACQ_READY 2 37 #define AACQ_BUSY 3 38 #define AACQ_COMPLETE 4 39 #define AACQ_COUNT 5 /* total number of queues */ 40 41 struct aac_qstat { 42 u_int32_t q_length; 43 u_int32_t q_max; 44 }; 45 46 /* 47 * Statistics request 48 */ 49 union aac_statrequest { 50 u_int32_t as_item; 51 struct aac_qstat as_qstat; 52 }; 53 54 #define AACIO_STATS _IOWR('T', 101, union aac_statrequest) 55 56 /* 57 * Ioctl commands likely to be submitted from a Linux management application. 58 * These bit encodings are actually descended from Windows NT. Ick. 59 */ 60 61 #define CTL_CODE(devType, func, meth, acc) (((devType) << 16) | ((acc) << 14) | ((func) << 2) | (meth)) 62 #define METHOD_BUFFERED 0 63 #define METHOD_IN_DIRECT 1 64 #define METHOD_OUT_DIRECT 2 65 #define METHOD_NEITHER 3 66 #define FILE_ANY_ACCESS 0 67 #define FILE_READ_ACCESS ( 0x0001 ) 68 #define FILE_WRITE_ACCESS ( 0x0002 ) 69 #define FILE_DEVICE_CONTROLLER 0x00000004 70 71 #define FSACTL_LNX_SENDFIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2050, \ 72 METHOD_BUFFERED, FILE_ANY_ACCESS) 73 #define FSACTL_LNX_GET_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 2084, \ 74 METHOD_BUFFERED, FILE_ANY_ACCESS) 75 #define FSACTL_LNX_OPENCLS_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, \ 76 2085, METHOD_BUFFERED, FILE_ANY_ACCESS) 77 #define FSACTL_LNX_OPEN_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2100, \ 78 METHOD_BUFFERED, FILE_ANY_ACCESS) 79 #define FSACTL_LNX_GET_NEXT_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2101, \ 80 METHOD_BUFFERED, FILE_ANY_ACCESS) 81 #define FSACTL_LNX_CLOSE_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, \ 82 2102, METHOD_BUFFERED, FILE_ANY_ACCESS) 83 #define FSACTL_LNX_CLOSE_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2104, \ 84 METHOD_BUFFERED, FILE_ANY_ACCESS) 85 #define FSACTL_LNX_OPEN_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2105, \ 86 METHOD_BUFFERED, FILE_ANY_ACCESS) 87 #define FSACTL_LNX_MINIPORT_REV_CHECK CTL_CODE(FILE_DEVICE_CONTROLLER, 2107, \ 88 METHOD_BUFFERED, FILE_ANY_ACCESS) 89 #define FSACTL_LNX_QUERY_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2113, \ 90 METHOD_BUFFERED, FILE_ANY_ACCESS) 91 #define FSACTL_LNX_GET_PCI_INFO CTL_CODE(FILE_DEVICE_CONTROLLER, 2119, \ 92 METHOD_BUFFERED, FILE_ANY_ACCESS) 93 #define FSACTL_LNX_FORCE_DELETE_DISK CTL_CODE(FILE_DEVICE_CONTROLLER, 2120, \ 94 METHOD_NEITHER, FILE_ANY_ACCESS) 95 #define FSACTL_LNX_AIF_THREAD CTL_CODE(FILE_DEVICE_CONTROLLER, 2127, \ 96 METHOD_NEITHER, FILE_ANY_ACCESS) 97 98 /* Why these don't follow the previous convention, I don't know */ 99 #define FSACTL_LNX_NULL_IO_TEST 0x43 100 #define FSACTL_LNX_SIM_IO_TEST 0x53 101 #define FSACTL_LNX_DOWNLOAD 0x83 102 #define FSACTL_LNX_GET_VAR 0x93 103 #define FSACTL_LNX_SET_VAR 0xa3 104 #define FSACTL_LNX_GET_FIBTIMES 0xb3 105 #define FSACTL_LNX_ZERO_FIBTIMES 0xc3 106 #define FSACTL_LNX_DELETE_DISK 0x163 107 #define FSACTL_LNX_QUERY_DISK 0x173 108 109 /* Ok, here it gets really lame */ 110 #define FSACTL_LNX_PROBE_CONTAINERS 2131 /* Just guessing */ 111 112 /* Do the native version of the ioctls. Since the BSD encoding scheme 113 * conflicts with the 'standard' AAC encoding scheme, the resulting numbers 114 * will be different. The '8' comes from the fact that the previous scheme 115 * used 12 bits for the number, with the the 12th bit being the only set 116 * bit above bit 8. Thus the value of 8, with the lower 8 bits holding the 117 * command number. 9 is used for the odd overflow case. 118 */ 119 #define FSACTL_SENDFIB _IO('8', 2) 120 #define FSACTL_GET_COMM_PERF_DATA _IO('8', 36) 121 #define FSACTL_OPENCLS_COMM_PERF_DATA _IO('8', 37) 122 #define FSACTL_OPEN_GET_ADAPTER_FIB _IO('8', 52) 123 #define FSACTL_GET_NEXT_ADAPTER_FIB _IO('8', 53) 124 #define FSACTL_CLOSE_GET_ADAPTER_FIB _IO('8', 54) 125 #define FSACTL_CLOSE_ADAPTER_CONFIG _IO('8', 56) 126 #define FSACTL_OPEN_ADAPTER_CONFIG _IO('8', 57) 127 #define FSACTL_MINIPORT_REV_CHECK _IO('8', 59) 128 #define FSACTL_QUERY_ADAPTER_CONFIG _IO('8', 65) 129 #define FSACTL_GET_PCI_INFO _IO('8', 71) 130 #define FSACTL_FORCE_DELETE_DISK _IO('8', 72) 131 #define FSACTL_AIF_THREAD _IO('8', 79) 132 133 #define FSACTL_NULL_IO_TEST _IO('8', 67) 134 #define FSACTL_SIM_IO_TEST _IO('8', 83) 135 #define FSACTL_DOWNLOAD _IO('8', 131) 136 #define FSACTL_GET_VAR _IO('8', 147) 137 #define FSACTL_SET_VAR _IO('8', 163) 138 #define FSACTL_GET_FIBTIMES _IO('8', 179) 139 #define FSACTL_ZERO_FIBTIMES _IO('8', 195) 140 #define FSACTL_DELETE_DISK _IO('8', 99) 141 #define FSACTL_QUERY_DISK _IO('9', 115) 142 143 #define FSACTL_PROBE_CONTAINERS _IO('9', 83) /* Just guessing */ 144 145 146 /* 147 * Support for faking the "miniport" version. 148 */ 149 struct aac_rev_check { 150 RevComponent callingComponent; 151 struct FsaRevision callingRevision; 152 }; 153 154 struct aac_rev_check_resp { 155 int possiblyCompatible; 156 struct FsaRevision adapterSWRevision; 157 }; 158 159 /* 160 * Context passed in by a consumer looking to collect an AIF. 161 */ 162 struct get_adapter_fib_ioctl { 163 u_int32_t AdapterFibContext; 164 int Wait; 165 caddr_t AifFib; 166 }; 167 168 struct aac_query_disk { 169 int32_t ContainerNumber; 170 int32_t Bus; 171 int32_t Target; 172 int32_t Lun; 173 u_int32_t Valid; 174 u_int32_t Locked; 175 u_int32_t Deleted; 176 int32_t Instance; 177 char diskDeviceName[10]; 178 u_int32_t UnMapped; 179 }; 180