path: root/sys/sys/aac_ioctl.h
diff options
authorMike Smith <msmith@FreeBSD.org>2000-12-27 13:14:56 +0000
committerMike Smith <msmith@FreeBSD.org>2000-12-27 13:14:56 +0000
commit0b94a66e3f8a898cdf6481c428f6cedca31c3958 (patch)
treeec62607fcbabe6e3a1c785966ff8fda5084b071f /sys/sys/aac_ioctl.h
parent826737698c2b14f965eba2841619566ab3e08b0b (diff)
Major bugfix and minor update. This should resolve the current issues
with the driver locking up under load. - Restructure so that we use a static pool of commands/FIBs, rather than allocating them in clusters. The cluster allocation just made things more complicated, and allowed us to waste more memory in peak load situations. - Make queueing macros more like my other drivers. This adds queue stats for free. Add some debugging to take advantage of this. - Reimplement the periodic timeout scan. Kick the interrupt handler and the start routine every scan as well, just to be safe. Track busy commands properly. - Bring resource cleanup into line with resource allocation. We should now clean up correctly after a failed probe/unload/etc. - Try to start new commands when old ones are completed. We weren't doing this before, which could lead to deadlock when the controller was full. - Don't try to build a new command if we have found a deferred command. This could cause us to lose the deferred command. - Use diskerr() to report I/O errors. - Don't bail if the AdapterInfo structure is the wrong size. Some variation seems to be normal. We need to improve our handing of 2.x firmware sets. - Improve some comments in an attempt to try to make things clearer. - Restructure to avoid some warnings.
Notes: svn path=/head/; revision=70393
Diffstat (limited to 'sys/sys/aac_ioctl.h')
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/sys/aac_ioctl.h b/sys/sys/aac_ioctl.h
index 354c0aa5cddc..084e6e4db4a4 100644
--- a/sys/sys/aac_ioctl.h
+++ b/sys/sys/aac_ioctl.h
@@ -28,6 +28,31 @@
* $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)