summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/isp/isp.c')
-rw-r--r--sys/dev/isp/isp.c62
1 files changed, 49 insertions, 13 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index ac47b6a..920ec9c 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -1319,7 +1319,7 @@ isp_reset(ispsoftc_t *isp, int do_load_defaults)
}
} else {
if (ISP_CAP_SCCFW(isp)) {
- isp->isp_maxluns = 16384;
+ isp->isp_maxluns = 0; /* No limit -- 2/8 bytes */
} else {
isp->isp_maxluns = 16;
}
@@ -4380,7 +4380,9 @@ isp_start(XS_T *xs)
fcparam *fcp = FCPARAM(isp, XS_CHANNEL(xs));
if ((fcp->role & ISP_ROLE_INITIATOR) == 0) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d I am not an initiator", XS_CHANNEL(xs), target, XS_LUN(xs));
+ isp_prt(isp, ISP_LOG_WARN1,
+ "%d.%d.%jx I am not an initiator",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_SELTIMEOUT);
return (CMD_COMPLETE);
}
@@ -4400,18 +4402,24 @@ isp_start(XS_T *xs)
return (CMD_COMPLETE);
}
if (lp->state == FC_PORTDB_STATE_ZOMBIE) {
- isp_prt(isp, ISP_LOGDEBUG1, "%d.%d.%d target zombie", XS_CHANNEL(xs), target, XS_LUN(xs));
+ isp_prt(isp, ISP_LOGDEBUG1,
+ "%d.%d.%jx target zombie",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs));
return (CMD_RQLATER);
}
if (lp->state != FC_PORTDB_STATE_VALID) {
- isp_prt(isp, ISP_LOGDEBUG1, "%d.%d.%d bad db port state 0x%x", XS_CHANNEL(xs), target, XS_LUN(xs), lp->state);
+ isp_prt(isp, ISP_LOGDEBUG1,
+ "%d.%d.%jx bad db port state 0x%x",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs), lp->state);
XS_SETERR(xs, HBA_SELTIMEOUT);
return (CMD_COMPLETE);
}
} else {
sdparam *sdp = SDPARAM(isp, XS_CHANNEL(xs));
if ((sdp->role & ISP_ROLE_INITIATOR) == 0) {
- isp_prt(isp, ISP_LOGDEBUG1, "%d.%d.%d I am not an initiator", XS_CHANNEL(xs), target, XS_LUN(xs));
+ isp_prt(isp, ISP_LOGDEBUG1,
+ "%d.%d.%jx I am not an initiator",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_SELTIMEOUT);
return (CMD_COMPLETE);
}
@@ -4561,14 +4569,20 @@ isp_start(XS_T *xs)
t7->req_tidlo = lp->portid;
t7->req_tidhi = lp->portid >> 16;
t7->req_vpidx = ISP_GET_VPIDX(isp, XS_CHANNEL(xs));
- if (XS_LUN(xs) > 256) {
+#if __FreeBSD_version >= 1000700
+ be64enc(t7->req_lun, CAM_EXTLUN_BYTE_SWIZZLE(XS_LUN(xs)));
+#else
+ if (XS_LUN(xs) >= 256) {
t7->req_lun[0] = XS_LUN(xs) >> 8;
t7->req_lun[0] |= 0x40;
}
t7->req_lun[1] = XS_LUN(xs);
+#endif
if (FCPARAM(isp, XS_CHANNEL(xs))->fctape_enabled && (lp->prli_word3 & PRLI_WD3_RETRY)) {
if (FCP_NEXT_CRN(isp, &t7->req_crn, xs)) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d cannot generate next CRN", XS_CHANNEL(xs), target, XS_LUN(xs));
+ isp_prt(isp, ISP_LOG_WARN1,
+ "%d.%d.%jx cannot generate next CRN",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_BOTCH);
return (CMD_EAGAIN);
}
@@ -4585,7 +4599,9 @@ isp_start(XS_T *xs)
}
if (FCPARAM(isp, XS_CHANNEL(xs))->fctape_enabled && (lp->prli_word3 & PRLI_WD3_RETRY)) {
if (FCP_NEXT_CRN(isp, &t2->req_crn, xs)) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d cannot generate next CRN", XS_CHANNEL(xs), target, XS_LUN(xs));
+ isp_prt(isp, ISP_LOG_WARN1,
+ "%d.%d.%jx cannot generate next CRN",
+ XS_CHANNEL(xs), target, (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_BOTCH);
return (CMD_EAGAIN);
}
@@ -4594,11 +4610,19 @@ isp_start(XS_T *xs)
ispreqt2e_t *t2e = (ispreqt2e_t *)local;
t2e->req_target = lp->handle;
t2e->req_scclun = XS_LUN(xs);
+#if __FreeBSD_version < 1000700
+ if (XS_LUN(xs) >= 256)
+ t2e->req_scclun |= 0x4000;
+#endif
cdbp = t2e->req_cdb;
} else if (ISP_CAP_SCCFW(isp)) {
ispreqt2_t *t2 = (ispreqt2_t *)local;
t2->req_target = lp->handle;
t2->req_scclun = XS_LUN(xs);
+#if __FreeBSD_version < 1000700
+ if (XS_LUN(xs) >= 256)
+ t2->req_scclun |= 0x4000;
+#endif
cdbp = t2->req_cdb;
} else {
t2->req_target = lp->handle;
@@ -5386,12 +5410,14 @@ again:
continue;
}
if (req_status_flags & RQSTF_BUS_RESET) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d bus was reset", XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs));
+ isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%jx bus was reset",
+ XS_CHANNEL(xs), XS_TGT(xs), (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_BUSRESET);
ISP_SET_SENDMARKER(isp, XS_CHANNEL(xs), 1);
}
if (buddaboom) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d buddaboom", XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs));
+ isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%jx buddaboom",
+ XS_CHANNEL(xs), XS_TGT(xs), (uintmax_t)XS_LUN(xs));
XS_SETERR(xs, HBA_BOTCH);
}
@@ -5535,7 +5561,11 @@ again:
*XS_STSP(xs) = SCSI_QFULL;
XS_SETERR(xs, HBA_NOERROR);
} else if (XS_NOERR(xs)) {
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d badness at %s:%u", XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), __func__, __LINE__);
+ isp_prt(isp, ISP_LOG_WARN1,
+ "%d.%d.%jx badness at %s:%u",
+ XS_CHANNEL(xs), XS_TGT(xs),
+ (uintmax_t)XS_LUN(xs),
+ __func__, __LINE__);
XS_SETERR(xs, HBA_BOTCH);
}
XS_SET_RESID(xs, XS_XFRLEN(xs));
@@ -5947,7 +5977,11 @@ isp_parse_async_fc(ispsoftc_t *isp, uint16_t mbox)
continue;
}
j++;
- isp_prt(isp, ISP_LOG_WARN1, "%d.%d.%d bus reset set at %s:%u", XS_CHANNEL(xs), XS_TGT(xs), XS_LUN(xs), __func__, __LINE__);
+ isp_prt(isp, ISP_LOG_WARN1,
+ "%d.%d.%jx bus reset set at %s:%u",
+ XS_CHANNEL(xs), XS_TGT(xs),
+ (uintmax_t)XS_LUN(xs),
+ __func__, __LINE__);
XS_SETERR(xs, HBA_BUSRESET);
}
if (j) {
@@ -6426,7 +6460,9 @@ isp_parse_status(ispsoftc_t *isp, ispstatusreq_t *sp, XS_T *xs, long *rp)
break;
case RQCS_XACT_ERR2:
- isp_xs_prt(isp, xs, ISP_LOGERR, "HBA attempted queued transaction to target routine %d", XS_LUN(xs));
+ isp_xs_prt(isp, xs, ISP_LOGERR,
+ "HBA attempted queued transaction to target routine %jx",
+ (uintmax_t)XS_LUN(xs));
break;
case RQCS_XACT_ERR3:
OpenPOWER on IntegriCloud