diff options
| author | Matt Jacob <mjacob@FreeBSD.org> | 2001-10-01 03:45:54 +0000 |
|---|---|---|
| committer | Matt Jacob <mjacob@FreeBSD.org> | 2001-10-01 03:45:54 +0000 |
| commit | c507669af483018013cd06e6a299d2396c320a5a (patch) | |
| tree | 030d89e1310f250cf16d899a50d6d66aa13c18a1 /sys/dev/isp/isp.c | |
| parent | 378f44862a390039fc3e53b6edb0a627af63d23b (diff) | |
Notes
Diffstat (limited to 'sys/dev/isp/isp.c')
| -rw-r--r-- | sys/dev/isp/isp.c | 36 |
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", |
