Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Dec 2006 07:21:55 GMT
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 110928 for review
Message-ID:  <200612030721.kB37Ltpr005059@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=110928

Change 110928 by mjacob@newisp on 2006/12/03 07:21:23

	Fix XPT_GET_TRANSPORT_SETTINGS to zero validity and flags-
	this was causing us to not negotiate sync at all, or at
	random.

Affected files ...

.. //depot/projects/newisp/dev/isp/isp_freebsd.c#30 edit

Differences ...

==== //depot/projects/newisp/dev/isp/isp_freebsd.c#30 (text+ko) ====

@@ -2741,8 +2741,9 @@
 				*dptr &= ~DPARM_SYNC;
 			}
 			isp_prt(isp, ISP_LOGDEBUG0,
-			    "SET bus %d targ %d to flags %x off %x per %x",
-			    bus, tgt, sdp->isp_devparam[tgt].goal_flags,
+			    "SET (%d.%d.%d) to flags %x off %x per %x",
+			    bus, tgt, cts->ccb_h.target_lun,
+			    sdp->isp_devparam[tgt].goal_flags,
 			    sdp->isp_devparam[tgt].goal_offset,
 			    sdp->isp_devparam[tgt].goal_period);
 			sdp->isp_devparam[tgt].dev_update = 1;
@@ -2809,20 +2810,22 @@
 			cts->transport = XPORT_SPI;
 			cts->transport_version = 2;
 
-			scsi->flags &= ~CTS_SCSI_FLAGS_TAG_ENB;
-			spi->flags &= ~CTS_SPI_FLAGS_DISC_ENB;
+			spi->valid = 0;
+			scsi->valid = 0;
+			spi->flags = 0;
+			scsi->flags = 0;
 			if (dval & DPARM_DISC) {
 				spi->flags |= CTS_SPI_FLAGS_DISC_ENB;
 			}
-			if (dval & DPARM_TQING) {
-				scsi->flags |= CTS_SCSI_FLAGS_TAG_ENB;
-			}
 			if ((dval & DPARM_SYNC) && oval && pval) {
 				spi->sync_offset = oval;
 				spi->sync_period = pval;
-				spi->valid |= CTS_SPI_VALID_SYNC_OFFSET;
-				spi->valid |= CTS_SPI_VALID_SYNC_RATE;
+			} else {
+				spi->sync_offset = 0;
+				spi->sync_period = 0;
 			}
+			spi->valid |= CTS_SPI_VALID_SYNC_OFFSET;
+			spi->valid |= CTS_SPI_VALID_SYNC_RATE;
 			spi->valid |= CTS_SPI_VALID_BUS_WIDTH;
 			if (dval & DPARM_WIDE) {
 				spi->bus_width = MSG_EXT_WDTR_BUS_16_BIT;
@@ -2831,14 +2834,15 @@
 			}
 			if (cts->ccb_h.target_lun != CAM_LUN_WILDCARD) {
 				scsi->valid = CTS_SCSI_VALID_TQ;
+				if (dval & DPARM_TQING) {
+					scsi->flags |= CTS_SCSI_FLAGS_TAG_ENB;
+				}
 				spi->valid |= CTS_SPI_VALID_DISC;
-			} else {
-				scsi->valid = 0;
 			}
 			isp_prt(isp, ISP_LOGDEBUG0,
-			    "GET %s bus %d targ %d to flags %x off %x per %x",
+			    "GET %s (%d.%d.%d) to flags %x off %x per %x",
 			    IS_CURRENT_SETTINGS(cts)? "ACTIVE" : "NVRAM",
-			    bus, tgt, dval, oval, pval);
+			    bus, tgt, cts->ccb_h.target_lun, dval, oval, pval);
 		}
 		ISPLOCK_2_CAMLOCK(isp);
 		ccb->ccb_h.status = CAM_REQ_CMP;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612030721.kB37Ltpr005059>