summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2002-06-16 05:02:25 +0000
committermjacob <mjacob@FreeBSD.org>2002-06-16 05:02:25 +0000
commit60207e6800b5d09d7b681153ab2615fd60c2568b (patch)
treeff9a569a1a078749d215637fe2fee2bd1f2671e1 /sys/dev/isp
parent23fbeb53d69971694c1f74953ecf9f36c03e690e (diff)
downloadFreeBSD-src-60207e6800b5d09d7b681153ab2615fd60c2568b.zip
FreeBSD-src-60207e6800b5d09d7b681153ab2615fd60c2568b.tar.gz
Extend private adjunct to ATIO to have both tag lun, and extended state
(so we can, when things get lost, find out who currently is processing on behalf of this open exchange. Invariably, when things are lost and wedged, it's CAM). Keep an atio resource counter locally. MFC after: 1 week
Diffstat (limited to 'sys/dev/isp')
-rw-r--r--sys/dev/isp/isp_freebsd.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h
index 28002720..903df0f 100644
--- a/sys/dev/isp/isp_freebsd.h
+++ b/sys/dev/isp/isp_freebsd.h
@@ -80,8 +80,16 @@ typedef struct {
u_int32_t orig_datalen;
u_int32_t bytes_xfered;
u_int32_t last_xframt;
- u_int32_t tag;
+ u_int32_t tag : 16,
+ lun : 13, /* not enough */
+ state : 3;
} atio_private_data_t;
+#define ATPD_STATE_FREE 0
+#define ATPD_STATE_ATIO 1
+#define ATPD_STATE_CAM 2
+#define ATPD_STATE_CTIO 3
+#define ATPD_STATE_LAST_CTIO 4
+#define ATPD_STATE_PDON 5
typedef struct tstate {
struct tstate *next;
@@ -91,6 +99,7 @@ typedef struct tstate {
lun_id_t lun;
int bus;
u_int32_t hold;
+ int atio_count;
} tstate_t;
#define LUN_HASH_SIZE 32
OpenPOWER on IntegriCloud