summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/ispmbox.h
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2001-08-31 21:39:04 +0000
committermjacob <mjacob@FreeBSD.org>2001-08-31 21:39:04 +0000
commitfd92a9e5a88c72601bed951956c726ffce48be98 (patch)
tree27923f611af7ff56dad91ea26a66018b0045b5ae /sys/dev/isp/ispmbox.h
parent12dc4e43ee1c81ec03ac79c3104932042f37713d (diff)
downloadFreeBSD-src-fd92a9e5a88c72601bed951956c726ffce48be98.zip
FreeBSD-src-fd92a9e5a88c72601bed951956c726ffce48be98.tar.gz
Add 2 Gigabit Fibre Channel support (2300 && 2312 cards). This required
some reworking (and consequent cleanup) of the interrupt service code. Also begin to start a cleanup of target mode support that will (eventually) not require more inforamtion routed with the ATIO to come back with the CTIO other than tag. MFC after: 4 weeks
Diffstat (limited to 'sys/dev/isp/ispmbox.h')
-rw-r--r--sys/dev/isp/ispmbox.h45
1 files changed, 36 insertions, 9 deletions
diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h
index a69a272..5c4b632 100644
--- a/sys/dev/isp/ispmbox.h
+++ b/sys/dev/isp/ispmbox.h
@@ -219,16 +219,16 @@ typedef struct {
*/
#define WRITE_REQUEST_QUEUE_IN_POINTER(isp, value) \
- ISP_WRITE(isp, INMAILBOX4, value)
+ ISP_WRITE(isp, isp->isp_rqstinrp, value)
-#define READ_REQUEST_QUEUE_OUT_POINTER(isp) \
- ISP_READ(isp, OUTMAILBOX4)
+#define READ_REQUEST_QUEUE_OUT_POINTER(isp) \
+ ISP_READ(isp, isp->isp_rqstoutrp)
-#define WRITE_RESPONSE_QUEUE_IN_POINTER(isp, value) \
- ISP_WRITE(isp, INMAILBOX5, value)
+#define READ_RESPONSE_QUEUE_IN_POINTER(isp) \
+ ISP_READ(isp, isp->isp_respinrp)
-#define READ_RESPONSE_QUEUE_OUT_POINTER(isp) \
- ISP_READ(isp, OUTMAILBOX5)
+#define WRITE_RESPONSE_QUEUE_OUT_POINTER(isp, value) \
+ ISP_WRITE(isp, isp->isp_respoutrp, value)
/*
* Command Structure Definitions
@@ -240,7 +240,8 @@ typedef struct {
} ispds_t;
typedef struct {
- u_int64_t ds_base;
+ u_int32_t ds_base;
+ u_int32_t ds_basehi;
u_int32_t ds_count;
} ispds64_t;
@@ -353,7 +354,7 @@ typedef struct {
#define ISP_SBUSIFY_ISPREQ(a, b)
#endif
-#define ISP_RQDSEG_T2 3
+#define ISP_RQDSEG_T2 3
typedef struct {
isphdr_t req_header;
u_int32_t req_handle;
@@ -369,6 +370,22 @@ typedef struct {
ispds_t req_dataseg[ISP_RQDSEG_T2];
} ispreqt2_t;
+#define ISP_RQDSEG_T3 2
+typedef struct {
+ isphdr_t req_header;
+ u_int32_t req_handle;
+ u_int8_t req_lun_trn;
+ u_int8_t req_target;
+ u_int16_t req_scclun;
+ u_int16_t req_flags;
+ u_int16_t _res2;
+ u_int16_t req_time;
+ u_int16_t req_seg_count;
+ u_int32_t req_cdb[4];
+ u_int32_t req_totalcnt;
+ ispds64_t req_dataseg[ISP_RQDSEG_T3];
+} ispreqt3_t;
+
/* req_flag values */
#define REQFLAG_NODISCON 0x0001
#define REQFLAG_HTAG 0x0002
@@ -410,6 +427,12 @@ typedef struct {
ispds_t req_dataseg[ISP_CDSEG];
} ispcontreq_t;
+#define ISP_CDSEG64 5
+typedef struct {
+ isphdr_t req_header;
+ ispds64_t req_dataseg[ISP_CDSEG64];
+} ispcontreq64_t;
+
typedef struct {
isphdr_t req_header;
u_int32_t req_handle;
@@ -630,6 +653,10 @@ typedef struct isp_icb {
#define ICBXOPT_RIO_16BIT_DELAY 3
#define ICBXOPT_RIO_32BIT_DELAY 4
+/* These 3 only apply to the 2300 */
+#define ICBXOPT_RATE_ONEGB (0 << 14)
+#define ICBXOPT_RATE_TWOGB (1 << 14)
+#define ICBXOPT_RATE_AUTO (2 << 14)
#define ICB_MIN_FRMLEN 256
OpenPOWER on IntegriCloud