aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp_inline.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/isp/isp_inline.h')
-rw-r--r--sys/dev/isp/isp_inline.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/dev/isp/isp_inline.h b/sys/dev/isp/isp_inline.h
index 0bb42d96230c..bc61e7818ad5 100644
--- a/sys/dev/isp/isp_inline.h
+++ b/sys/dev/isp/isp_inline.h
@@ -209,7 +209,7 @@ isp_fc_runstate(struct ispsoftc *isp, int tval)
fcparam *fcp;
int *tptr;
- if (IS_SCSI(isp))
+ if (IS_SCSI(isp) || isp->isp_role == ISP_ROLE_NONE)
return (0);
tptr = tval? &tval : NULL;
@@ -269,6 +269,8 @@ isp_get_response(struct ispsoftc *, ispstatusreq_t *, ispstatusreq_t *);
static INLINE void
isp_get_response_x(struct ispsoftc *, ispstatus_cont_t *, ispstatus_cont_t *);
static INLINE void
+isp_get_rio2(struct ispsoftc *, isp_rio2_t *, isp_rio2_t *);
+static INLINE void
isp_put_icb(struct ispsoftc *, isp_icb_t *, isp_icb_t *);
static INLINE void
isp_get_pdb(struct ispsoftc *, isp_pdb_t *, isp_pdb_t *);
@@ -556,6 +558,22 @@ isp_get_response_x(struct ispsoftc *isp, ispstatus_cont_t *cpsrc,
}
static INLINE void
+isp_get_rio2(struct ispsoftc *isp, isp_rio2_t *r2src, isp_rio2_t *r2dst)
+{
+ int i;
+ isp_copy_in_hdr(isp, &r2src->req_header, &r2dst->req_header);
+ if (r2dst->req_header.rqs_seqno > 30)
+ r2dst->req_header.rqs_seqno = 30;
+ for (i = 0; i < r2dst->req_header.rqs_seqno; i++) {
+ ISP_IOXGET_16(isp, &r2src->req_handles[i],
+ r2dst->req_handles[i]);
+ }
+ while (i < 30) {
+ r2dst->req_handles[i++] = 0;
+ }
+}
+
+static INLINE void
isp_put_icb(struct ispsoftc *isp, isp_icb_t *Is, isp_icb_t *Id)
{
int i;