summaryrefslogtreecommitdiffstats
path: root/sys/dev/aac/aac_ioctl.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/aac/aac_ioctl.h')
-rw-r--r--sys/dev/aac/aac_ioctl.h179
1 files changed, 179 insertions, 0 deletions
diff --git a/sys/dev/aac/aac_ioctl.h b/sys/dev/aac/aac_ioctl.h
new file mode 100644
index 0000000..1b798eb
--- /dev/null
+++ b/sys/dev/aac/aac_ioctl.h
@@ -0,0 +1,179 @@
+/*-
+ * Copyright (c) 2000 Michael Smith
+ * Copyright (c) 2000 Scott Long
+ * Copyright (c) 2000 BSDi
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * Command queue statistics
+ */
+#define AACQ_FREE 0
+#define AACQ_BIO 1
+#define AACQ_READY 2
+#define AACQ_BUSY 3
+#define AACQ_COMPLETE 4
+#define AACQ_COUNT 5 /* total number of queues */
+
+struct aac_qstat {
+ u_int32_t q_length;
+ u_int32_t q_max;
+};
+
+/*
+ * Statistics request
+ */
+union aac_statrequest {
+ u_int32_t as_item;
+ struct aac_qstat as_qstat;
+};
+
+#define AACIO_STATS _IOWR('T', 101, union aac_statrequest)
+
+/*
+ * Ioctl commands likely to be submitted from a Linux management application.
+ * These bit encodings are actually descended from Windows NT. Ick.
+ */
+
+#define CTL_CODE(devType, func, meth, acc) (((devType) << 16) | ((acc) << 14) | ((func) << 2) | (meth))
+#define METHOD_BUFFERED 0
+#define METHOD_IN_DIRECT 1
+#define METHOD_OUT_DIRECT 2
+#define METHOD_NEITHER 3
+#define FILE_ANY_ACCESS 0
+#define FILE_READ_ACCESS ( 0x0001 )
+#define FILE_WRITE_ACCESS ( 0x0002 )
+#define FILE_DEVICE_CONTROLLER 0x00000004
+
+#define FSACTL_LNX_SENDFIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2050, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_GET_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, 2084, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_OPENCLS_COMM_PERF_DATA CTL_CODE(FILE_DEVICE_CONTROLLER, \
+ 2085, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_OPEN_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2100, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_GET_NEXT_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, 2101, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_CLOSE_GET_ADAPTER_FIB CTL_CODE(FILE_DEVICE_CONTROLLER, \
+ 2102, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_CLOSE_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2104, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_OPEN_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2105, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_MINIPORT_REV_CHECK CTL_CODE(FILE_DEVICE_CONTROLLER, 2107, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_QUERY_ADAPTER_CONFIG CTL_CODE(FILE_DEVICE_CONTROLLER, 2113, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_GET_PCI_INFO CTL_CODE(FILE_DEVICE_CONTROLLER, 2119, \
+ METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define FSACTL_LNX_FORCE_DELETE_DISK CTL_CODE(FILE_DEVICE_CONTROLLER, 2120, \
+ METHOD_NEITHER, FILE_ANY_ACCESS)
+#define FSACTL_LNX_AIF_THREAD CTL_CODE(FILE_DEVICE_CONTROLLER, 2127, \
+ METHOD_NEITHER, FILE_ANY_ACCESS)
+
+/* Why these don't follow the previous convention, I don't know */
+#define FSACTL_LNX_NULL_IO_TEST 0x43
+#define FSACTL_LNX_SIM_IO_TEST 0x53
+#define FSACTL_LNX_DOWNLOAD 0x83
+#define FSACTL_LNX_GET_VAR 0x93
+#define FSACTL_LNX_SET_VAR 0xa3
+#define FSACTL_LNX_GET_FIBTIMES 0xb3
+#define FSACTL_LNX_ZERO_FIBTIMES 0xc3
+#define FSACTL_LNX_DELETE_DISK 0x163
+#define FSACTL_LNX_QUERY_DISK 0x173
+
+/* Ok, here it gets really lame */
+#define FSACTL_LNX_PROBE_CONTAINERS 2131 /* Just guessing */
+
+/* Do the native version of the ioctls. Since the BSD encoding scheme
+ * conflicts with the 'standard' AAC encoding scheme, the resulting numbers
+ * will be different. The '8' comes from the fact that the previous scheme
+ * used 12 bits for the number, with the the 12th bit being the only set
+ * bit above bit 8. Thus the value of 8, with the lower 8 bits holding the
+ * command number. 9 is used for the odd overflow case.
+ */
+#define FSACTL_SENDFIB _IO('8', 2)
+#define FSACTL_GET_COMM_PERF_DATA _IO('8', 36)
+#define FSACTL_OPENCLS_COMM_PERF_DATA _IO('8', 37)
+#define FSACTL_OPEN_GET_ADAPTER_FIB _IO('8', 52)
+#define FSACTL_GET_NEXT_ADAPTER_FIB _IO('8', 53)
+#define FSACTL_CLOSE_GET_ADAPTER_FIB _IO('8', 54)
+#define FSACTL_CLOSE_ADAPTER_CONFIG _IO('8', 56)
+#define FSACTL_OPEN_ADAPTER_CONFIG _IO('8', 57)
+#define FSACTL_MINIPORT_REV_CHECK _IO('8', 59)
+#define FSACTL_QUERY_ADAPTER_CONFIG _IO('8', 65)
+#define FSACTL_GET_PCI_INFO _IO('8', 71)
+#define FSACTL_FORCE_DELETE_DISK _IO('8', 72)
+#define FSACTL_AIF_THREAD _IO('8', 79)
+
+#define FSACTL_NULL_IO_TEST _IO('8', 67)
+#define FSACTL_SIM_IO_TEST _IO('8', 83)
+#define FSACTL_DOWNLOAD _IO('8', 131)
+#define FSACTL_GET_VAR _IO('8', 147)
+#define FSACTL_SET_VAR _IO('8', 163)
+#define FSACTL_GET_FIBTIMES _IO('8', 179)
+#define FSACTL_ZERO_FIBTIMES _IO('8', 195)
+#define FSACTL_DELETE_DISK _IO('8', 99)
+#define FSACTL_QUERY_DISK _IO('9', 115)
+
+#define FSACTL_PROBE_CONTAINERS _IO('9', 83) /* Just guessing */
+
+
+/*
+ * Support for faking the "miniport" version.
+ */
+struct aac_rev_check {
+ RevComponent callingComponent;
+ struct FsaRevision callingRevision;
+};
+
+struct aac_rev_check_resp {
+ int possiblyCompatible;
+ struct FsaRevision adapterSWRevision;
+};
+
+/*
+ * Context passed in by a consumer looking to collect an AIF.
+ */
+struct get_adapter_fib_ioctl {
+ u_int32_t AdapterFibContext;
+ int Wait;
+ caddr_t AifFib;
+};
+
+struct aac_query_disk {
+ int32_t ContainerNumber;
+ int32_t Bus;
+ int32_t Target;
+ int32_t Lun;
+ u_int32_t Valid;
+ u_int32_t Locked;
+ u_int32_t Deleted;
+ int32_t Instance;
+ char diskDeviceName[10];
+ u_int32_t UnMapped;
+};
OpenPOWER on IntegriCloud