summaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp.c
diff options
context:
space:
mode:
authorMatt Jacob <mjacob@FreeBSD.org>2001-10-01 03:45:54 +0000
committerMatt Jacob <mjacob@FreeBSD.org>2001-10-01 03:45:54 +0000
commitc507669af483018013cd06e6a299d2396c320a5a (patch)
tree030d89e1310f250cf16d899a50d6d66aa13c18a1 /sys/dev/isp/isp.c
parent378f44862a390039fc3e53b6edb0a627af63d23b (diff)
Notes
Diffstat (limited to 'sys/dev/isp/isp.c')
-rw-r--r--sys/dev/isp/isp.c36
1 files changed, 28 insertions, 8 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index 81aeb6d10c4e..2d76c4c41404 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -1206,23 +1206,29 @@ isp_fibre_init(struct ispsoftc *isp)
*/
switch(isp->isp_confopts & ISP_CFG_PORT_PREF) {
case ISP_CFG_NPORT:
- icbp->icb_xfwoptions = ICBXOPT_PTP_2_LOOP;
+ icbp->icb_xfwoptions |= ICBXOPT_PTP_2_LOOP;
break;
case ISP_CFG_NPORT_ONLY:
- icbp->icb_xfwoptions = ICBXOPT_PTP_ONLY;
+ icbp->icb_xfwoptions |= ICBXOPT_PTP_ONLY;
break;
case ISP_CFG_LPORT_ONLY:
- icbp->icb_xfwoptions = ICBXOPT_LOOP_ONLY;
+ icbp->icb_xfwoptions |= ICBXOPT_LOOP_ONLY;
break;
default:
- icbp->icb_xfwoptions = ICBXOPT_LOOP_2_PTP;
+ icbp->icb_xfwoptions |= ICBXOPT_LOOP_2_PTP;
break;
}
if (IS_2300(isp)) {
if (isp->isp_revision < 2) {
icbp->icb_fwoptions &= ~ICBOPT_FAST_POST;
}
- icbp->icb_xfwoptions |= ICBXOPT_RATE_AUTO;
+ if (isp->isp_confopts & ISP_CFG_ONEGB) {
+ icbp->icb_xfwoptions |= ICBXOPT_RATE_ONEGB;
+ } else if (isp->isp_confopts & ISP_CFG_TWOGB) {
+ icbp->icb_xfwoptions |= ICBXOPT_RATE_TWOGB;
+ } else {
+ icbp->icb_xfwoptions |= ICBXOPT_RATE_AUTO;
+ }
}
}
@@ -1583,6 +1589,20 @@ not_on_fabric:
fcp->portdb[FL_PORT_ID].valid = 0;
}
+ fcp->isp_gbspeed = 1;
+ if (IS_2300(isp)) {
+ mbs.param[0] = MBOX_GET_SET_DATA_RATE;
+ mbs.param[1] = MBGSD_GET_RATE;
+ /* mbs.param[2] undefined if we're just getting rate */
+ isp_mboxcmd(isp, &mbs, MBLOGALL);
+ if (mbs.param[0] == MBOX_COMMAND_COMPLETE) {
+ if (mbs.param[1] == MBGSD_TWOGB) {
+ isp_prt(isp, ISP_LOGINFO, "2Gb link speed/s");
+ fcp->isp_gbspeed = 2;
+ }
+ }
+ }
+
isp_prt(isp, ISP_LOGINFO, topology, fcp->isp_loopid, fcp->isp_alpa,
fcp->isp_portid, fcp->isp_loopstate, toponames[fcp->isp_topo]);
@@ -4243,7 +4263,7 @@ static u_int16_t mbpfc[] = {
ISPOPMAP(0x00, 0x00), /* 0x25: */
ISPOPMAP(0x00, 0x00), /* 0x26: */
ISPOPMAP(0x00, 0x00), /* 0x27: */
- ISPOPMAP(0x01, 0x3), /* 0x28: MBOX_GET_FIRMWARE_OPTIONS */
+ ISPOPMAP(0x01, 0x03), /* 0x28: MBOX_GET_FIRMWARE_OPTIONS */
ISPOPMAP(0x03, 0x07), /* 0x29: MBOX_GET_PORT_QUEUE_PARAMS */
ISPOPMAP(0x00, 0x00), /* 0x2a: */
ISPOPMAP(0x00, 0x00), /* 0x2b: */
@@ -4296,7 +4316,7 @@ static u_int16_t mbpfc[] = {
ISPOPMAP(0x00, 0x00), /* 0x5a: */
ISPOPMAP(0x00, 0x00), /* 0x5b: */
ISPOPMAP(0x00, 0x00), /* 0x5c: */
- ISPOPMAP(0x00, 0x00), /* 0x5d: */
+ ISPOPMAP(0x07, 0x03), /* 0x5d: MBOX_GET_SET_DATA_RATE */
ISPOPMAP(0x00, 0x00), /* 0x5e: */
ISPOPMAP(0x00, 0x00), /* 0x5f: */
ISPOPMAP(0xfd, 0x31), /* 0x60: MBOX_INIT_FIRMWARE */
@@ -4427,7 +4447,7 @@ static char *fc_mbcmd_names[] = {
NULL,
NULL,
NULL,
- NULL,
+ "GET/SET DATA RATE",
NULL,
NULL,
"INIT FIRMWARE",