MFC overflow bug fixes and disable ISP_DAC_SUPPORTED for now

Approved by: re
This commit is contained in:
mjacob 2006-02-04 23:53:08 +00:00
parent f8325a658c
commit fcfd54426b
3 changed files with 17 additions and 15 deletions

View File

@ -1688,6 +1688,12 @@ isp_fclink_test(struct ispsoftc *isp, int usdelay)
return (-1);
}
fcp->isp_loopid = mbs.param[1];
if (fcp->isp_loopid == 0xffff) { /* happens with 2k login f/w */
fcp->isp_loopid = MAX_FC_TARG-1;
} else if (fcp->isp_loopid >= MAX_FC_TARG) {
isp_prt(isp, ISP_LOGWARN, "bad initiator loopid (0x%x)", fcp->isp_loopid);
fcp->isp_loopid = MAX_FC_TARG-1;
}
if (IS_2200(isp) || IS_23XX(isp)) {
int topo = (int) mbs.param[6];
if (topo < TOPO_NL_PORT || topo > TOPO_PTP_STUB)
@ -1697,10 +1703,9 @@ isp_fclink_test(struct ispsoftc *isp, int usdelay)
fcp->isp_topo = TOPO_NL_PORT;
}
/*
* XXX: We can get the AL_PA (low 8 bits) from here.
* XXX: Where do we get the upper 16 bits?
* Get the port id.
*/
fcp->isp_portid = mbs.param[2] & 0xff;
fcp->isp_portid = mbs.param[2] | (mbs.param[3] << 16);
/*
* Check to see if we're on a fabric by trying to see if we
@ -2064,6 +2069,10 @@ isp_pdb_sync(struct ispsoftc *isp)
*/
if (mbs.param[1] != 0) {
loopid = mbs.param[1];
if (loopid >= MAX_FC_TARG) {
loopid = MAX_FC_TARG;
break;
}
isp_prt(isp, ISP_LOGINFO, retained,
loopid, (int) (lp - fcp->portdb),
lp->portid);

View File

@ -61,9 +61,8 @@
#include "opt_ddb.h"
#include "opt_isp.h"
#ifdef PAE
#define ISP_DAC_SUPPORTED 1
#endif
/* disabled until done correctly */
/* #define ISP_DAC_SUPPORTED 1 */
/*
* Efficiency- get rid of SBus code && tests unless we need them.

View File

@ -46,12 +46,6 @@ __FBSDID("$FreeBSD$");
#include <sys/rman.h>
#include <sys/malloc.h>
#ifdef ISP_TARGET_MODE
#ifdef PAE
#error "PAE and ISP_TARGET_MODE not supported yet"
#endif
#endif
#include <dev/isp/isp_freebsd.h>
static u_int16_t isp_pci_rd_reg(struct ispsoftc *, int);
@ -1129,8 +1123,8 @@ isp_pci_mbxdma(struct ispsoftc *isp)
u_int32_t len;
int i, error, ns;
bus_size_t slim; /* segment size */
bus_size_t llim; /* low limit of unavailable dma */
bus_size_t hlim; /* low limit of unavailable dma */
bus_addr_t llim; /* low limit of unavailable dma */
bus_addr_t hlim; /* high limit of unavailable dma */
struct imush im;
/*
@ -1681,7 +1675,7 @@ tdma_mkfc(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
static void dma2(void *, bus_dma_segment_t *, int, int);
#ifdef PAE
#if defined(ISP_DAC_SUPPORTED) && (ISP_64BIT_CORRECTLY_DONE)
#define LOWD(x) ((uint32_t) x)
#define HIWD(x) ((uint32_t) (x >> 32))