summaryrefslogtreecommitdiff
path: root/sys/dev/advansys/advlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/advansys/advlib.c')
-rw-r--r--sys/dev/advansys/advlib.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/dev/advansys/advlib.c b/sys/dev/advansys/advlib.c
index 565b8c2bc594..04c15a4940d1 100644
--- a/sys/dev/advansys/advlib.c
+++ b/sys/dev/advansys/advlib.c
@@ -1135,11 +1135,26 @@ adv_set_syncrate(struct adv_softc *adv, struct cam_path *path,
* new transfer parameters.
*/
struct ccb_trans_settings neg;
-
+ memset(&neg, 0, sizeof (neg));
+#ifdef CAM_NEW_TRAN_CODE
+ struct ccb_trans_settings_spi *spi =
+ &neg.xport_specific.spi;
+
+ neg.protocol = PROTO_SCSI;
+ neg.protocol_version = SCSI_REV_2;
+ neg.transport = XPORT_SPI;
+ neg.transport_version = 2;
+
+ spi->sync_offset = offset;
+ spi->sync_period = period;
+ spi->valid |= CTS_SPI_VALID_SYNC_OFFSET;
+ spi->valid |= CTS_SPI_VALID_SYNC_RATE;
+#else
neg.sync_period = period;
neg.sync_offset = offset;
neg.valid = CCB_TRANS_SYNC_RATE_VALID
| CCB_TRANS_SYNC_OFFSET_VALID;
+#endif
xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
xpt_async(AC_TRANSFER_NEG, path, &neg);
}