Deleted Added
full compact
1d0
< /* $FreeBSD: head/sys/dev/isp/isp.c 151834 2005-10-29 02:46:59Z mjacob $ */
6,7c5
< * Copyright (c) 1997, 1998, 1999, 2000, 2001 by Matthew Jacob
< * Feral Software
---
> * Copyright (c) 1997-2006 by Matthew Jacob
45a44,45
> #include <sys/cdefs.h>
> __FBSDID("$FreeBSD: head/sys/dev/isp/isp.c 154704 2006-01-23 06:23:37Z mjacob $");
98c98
< "Loop ID %d, AL_PA 0x%x, Port ID 0x%x, Loop State 0x%x, Topology '%s'";
---
> "Loop ID %d, Port ID 0x%x, Loop State 0x%x, Topology '%s'";
167a168
> MEMZERO(&mbs, sizeof (mbs));
254a256,261
> case ISP_HA_FC_2322:
> btype = "2322";
> break;
> case ISP_HA_FC_2422:
> btype = "2422";
> break;
679a687,695
> if (IS_2322(isp) || IS_24XX(isp)) {
> if (isp->isp_loaded_fw) {
> mbs.param[2] = 1;
> } else {
> mbs.param[2] = 0;
> }
> mbs.obits |= 2;
> }
>
749,751c765,766
< if (ISP_READ(isp, BIU2100_CSR) & BIU2100_PCI64) {
< isp_prt(isp, ISP_LOGCONFIG,
< "Installed in 64-Bit PCI slot");
---
> if (IS_2KLOGIN(isp)) {
> isp_prt(isp, ISP_LOGCONFIG, "2K Logins Supported");
871a887
> MEMZERO(&mbs, sizeof (mbs));
1050a1067
> MEMZERO(&mbs, sizeof (mbs));
1260c1277
< * We end up with a Loop ID of 255 for F-Port topologies
---
> * We end up with these Loop IDs for F-Port topologies
1262c1279
< if (icbp->icb_hardaddr != 255) {
---
> if (icbp->icb_hardaddr != 0xff || icbp->icb_hardaddr != 0x800) {
1356a1374,1375
> MEMZERO(&mbs, sizeof (mbs));
>
1358c1377
< * For 22XX > 2.1.26 && 23XX, set someoptions.
---
> * For 22XX > 2.1.26 && 23XX, set some options.
1459a1479
> MEMZERO(&mbs, sizeof (mbs));
1500a1521
> MEMZERO(&mbs, sizeof (mbs));
1502c1523,1528
< mbs.param[1] = id << 8;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = id;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = id << 8;
> }
1530a1557
> MEMZERO(&mbs, sizeof (mbs));
1532,1534c1559,1568
< mbs.param[1] = loopid << 8;
< if (nodename)
< mbs.param[1] |= 1;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = loopid;
> if (nodename)
> mbs.param[10] = 1;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = loopid << 8;
> if (nodename)
> mbs.param[1] |= 1;
> }
1649a1684
> MEMZERO(&mbs, sizeof (mbs));
1664c1699,1703
< fcp->isp_portid = fcp->isp_alpa = mbs.param[2] & 0xff;
---
> /*
> * XXX: We can get the AL_PA (low 8 bits) from here.
> * XXX: Where do we get the upper 16 bits?
> */
> fcp->isp_portid = mbs.param[2] & 0xff;
1755c1794
< isp_prt(isp, ISP_LOGCONFIG, topology, fcp->isp_loopid, fcp->isp_alpa,
---
> isp_prt(isp, ISP_LOGCONFIG, topology, fcp->isp_loopid,
1968a2008
> MEMZERO(&mbs, sizeof (mbs));
1970c2010,2015
< mbs.param[1] = lp->loopid << 8;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = lp->loopid;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = lp->loopid << 8;
> }
1990a2036
> MEMZERO(&mbs, sizeof (mbs));
1992c2038,2043
< mbs.param[1] = loopid << 8;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = loopid;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = loopid << 8;
> }
2106a2158
> MEMZERO(&mbs, sizeof (mbs));
2108,2110c2160,2165
< mbs.param[1] = lp->loopid << 8;
< mbs.param[2] = 0;
< mbs.param[3] = 0;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = lp->loopid;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = lp->loopid << 8;
> }
2490a2546
> MEMZERO(&mbs, sizeof (mbs));
2640a2697
> MEMZERO(&mbs, sizeof (mbs));
2717a2775
> MEMZERO(&mbs, sizeof (mbs));
2772a2831
> MEMZERO(&mbs, sizeof (mbs));
2835a2895
> MEMZERO(&mbs, sizeof (mbs));
2936a2997
> MEMZERO(&mbs, sizeof (mbs));
3276d3336
< reqp->req_target = target | (XS_CHANNEL(xs) << 7);
3277a3338
> reqp->req_target = target | (XS_CHANNEL(xs) << 7);
3279a3341,3346
> } else if (IS_2KLOGIN(isp)) {
> ((ispreqt2e_t *)reqp)->req_target = target;
> ((ispreqt2e_t *)reqp)->req_scclun = XS_LUN(xs);
> } else if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN) {
> ((ispreqt2_t *)reqp)->req_target = target;
> ((ispreqt2_t *)reqp)->req_scclun = XS_LUN(xs);
3281,3284c3348,3349
< if (FCPARAM(isp)->isp_fwattr & ISP_FW_ATTR_SCCLUN)
< ((ispreqt2_t *)reqp)->req_scclun = XS_LUN(xs);
< else
< ((ispreqt2_t *)reqp)->req_lun_trn = XS_LUN(xs);
---
> ((ispreqt2_t *)reqp)->req_target = target;
> ((ispreqt2_t *)reqp)->req_lun_trn = XS_LUN(xs);
3335a3401,3402
> MEMZERO(&mbs, sizeof (mbs));
>
3372c3439,3448
< mbs.param[1] = (tgt << 8) | (bus << 15);
---
> if (IS_SCSI(isp)) {
> mbs.param[1] = (tgt << 8) | (bus << 15);
> } else {
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = tgt;
> mbs.obits |= (1 << 10);
> } else {
> mbs.param[1] = (tgt << 8);
> }
> }
3396c3472,3476
< mbs.param[1] = tgt << 8;
---
> if (IS_2KLOGIN(isp)) {
> mbs.param[1] = tgt;
> } else {
> mbs.param[1] = tgt << 8;
> }
3544c3624
< for (i = 1; i < MAX_MAILBOX; i++) {
---
> for (i = 1; i < MAX_MAILBOX(isp); i++) {
4148,4149d4227
< FCPARAM(isp)->isp_lipseq =
< ISP_READ(isp, OUTMAILBOX1);
4303c4381
< for (nh = 0, i = 1; i < MAX_MAILBOX; i++) {
---
> for (nh = 0, i = 1; i < MAX_MAILBOX(isp); i++) {
4718a4797
> MEMZERO(&mbs, sizeof (mbs));
4813d4891
<
4822a4901
> MEMZERO(&mbs, sizeof (mbs));
4843,4846c4922,4925
< #define HIBYT(x) ((x) >> 0x8)
< #define LOBYT(x) ((x) & 0xff)
< #define ISPOPMAP(a, b) (((a) << 8) | (b))
< static const u_int16_t mbpscsi[] = {
---
> #define HIWRD(x) ((x) >> 16)
> #define LOWRD(x) ((x) & 0xffff)
> #define ISPOPMAP(a, b) (((a) << 16) | (b))
> static const u_int32_t mbpscsi[] = {
5042c5121
< static const u_int16_t mbpfc[] = {
---
> static const u_int32_t mbpfc[] = {
5315c5394
< const u_int16_t *mcp;
---
> const u_int32_t *mcp;
5323,5325c5402,5406
< ibits = HIBYT(mcp[opcode]) & NMBOX_BMASK(isp);
< obits = LOBYT(mcp[opcode]) & NMBOX_BMASK(isp);
< for (box = 0; box < MAX_MAILBOX; box++) {
---
> ibits = HIWRD(mcp[opcode]) & NMBOX_BMASK(isp);
> obits = LOWRD(mcp[opcode]) & NMBOX_BMASK(isp);
> ibits |= mbp->ibits;
> obits |= mbp->obits;
> for (box = 0; box < MAX_MAILBOX(isp); box++) {
5354c5435
< const u_int16_t *mcp;
---
> const u_int32_t *mcp;
5370,5371c5451,5452
< ibits = HIBYT(mcp[opcode]) & NMBOX_BMASK(isp);
< obits = LOBYT(mcp[opcode]) & NMBOX_BMASK(isp);
---
> ibits = HIWRD(mcp[opcode]) & NMBOX_BMASK(isp);
> obits = LOWRD(mcp[opcode]) & NMBOX_BMASK(isp);
5372a5454,5456
> ibits |= mbp->ibits;
> obits |= mbp->obits;
>
5384c5468
< for (box = 0; box < MAX_MAILBOX; box++) {
---
> for (box = 0; box < MAX_MAILBOX(isp); box++) {
5421c5505
< for (box = 0; box < MAX_MAILBOX; box++) {
---
> for (box = 0; box < MAX_MAILBOX(isp); box++) {
5500a5585
> MEMZERO(&mbs, sizeof (mbs));
5537a5623
> MEMZERO(&mbs, sizeof (mbs));
5652a5739
> MEMZERO(&mbs, sizeof (mbs));
6469a6557
> MEMZERO(&mbs, sizeof (mbs));
6613a6702
> MEMZERO(&mbs, sizeof (mbs));