Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sym/sym_hipd.c
Show First 20 Lines • Show All 3,419 Lines • ▼ Show 20 Lines | sym_xpt_async_transfer_neg(hcb_p np, int target, u_int spi_valid) | ||||
int sts; | int sts; | ||||
tcb_p tp = &np->target[target]; | tcb_p tp = &np->target[target]; | ||||
sts = xpt_create_path(&path, NULL, cam_sim_path(np->sim), target, | sts = xpt_create_path(&path, NULL, cam_sim_path(np->sim), target, | ||||
CAM_LUN_WILDCARD); | CAM_LUN_WILDCARD); | ||||
if (sts != CAM_REQ_CMP) | if (sts != CAM_REQ_CMP) | ||||
return; | return; | ||||
bzero(&cts, sizeof(cts)); | xpt_setup_stack_ccb(&cts.ccb_h, sizeof(cts), path, 1); | ||||
imp: ordering bug. | |||||
#define cts__scsi (cts.proto_specific.scsi) | #define cts__scsi (cts.proto_specific.scsi) | ||||
#define cts__spi (cts.xport_specific.spi) | #define cts__spi (cts.xport_specific.spi) | ||||
cts.type = CTS_TYPE_CURRENT_SETTINGS; | cts.type = CTS_TYPE_CURRENT_SETTINGS; | ||||
cts.protocol = PROTO_SCSI; | cts.protocol = PROTO_SCSI; | ||||
cts.transport = XPORT_SPI; | cts.transport = XPORT_SPI; | ||||
cts.protocol_version = tp->tinfo.current.scsi_version; | cts.protocol_version = tp->tinfo.current.scsi_version; | ||||
cts.transport_version = tp->tinfo.current.spi_version; | cts.transport_version = tp->tinfo.current.spi_version; | ||||
cts__spi.valid = spi_valid; | cts__spi.valid = spi_valid; | ||||
if (spi_valid & CTS_SPI_VALID_SYNC_RATE) | if (spi_valid & CTS_SPI_VALID_SYNC_RATE) | ||||
cts__spi.sync_period = tp->tinfo.current.period; | cts__spi.sync_period = tp->tinfo.current.period; | ||||
if (spi_valid & CTS_SPI_VALID_SYNC_OFFSET) | if (spi_valid & CTS_SPI_VALID_SYNC_OFFSET) | ||||
cts__spi.sync_offset = tp->tinfo.current.offset; | cts__spi.sync_offset = tp->tinfo.current.offset; | ||||
if (spi_valid & CTS_SPI_VALID_BUS_WIDTH) | if (spi_valid & CTS_SPI_VALID_BUS_WIDTH) | ||||
cts__spi.bus_width = tp->tinfo.current.width; | cts__spi.bus_width = tp->tinfo.current.width; | ||||
if (spi_valid & CTS_SPI_VALID_PPR_OPTIONS) | if (spi_valid & CTS_SPI_VALID_PPR_OPTIONS) | ||||
cts__spi.ppr_options = tp->tinfo.current.options; | cts__spi.ppr_options = tp->tinfo.current.options; | ||||
#undef cts__spi | #undef cts__spi | ||||
#undef cts__scsi | #undef cts__scsi | ||||
xpt_setup_ccb(&cts.ccb_h, path, /*priority*/1); | |||||
xpt_async(AC_TRANSFER_NEG, path, &cts); | xpt_async(AC_TRANSFER_NEG, path, &cts); | ||||
Done Inline Actionshmmm, this one is a bug... imp: hmmm, this one is a bug...
| |||||
xpt_free_path(path); | xpt_free_path(path); | ||||
} | } | ||||
#define SYM_SPI_VALID_WDTR \ | #define SYM_SPI_VALID_WDTR \ | ||||
CTS_SPI_VALID_BUS_WIDTH | \ | CTS_SPI_VALID_BUS_WIDTH | \ | ||||
CTS_SPI_VALID_SYNC_RATE | \ | CTS_SPI_VALID_SYNC_RATE | \ | ||||
CTS_SPI_VALID_SYNC_OFFSET | CTS_SPI_VALID_SYNC_OFFSET | ||||
#define SYM_SPI_VALID_SDTR \ | #define SYM_SPI_VALID_SDTR \ | ||||
▲ Show 20 Lines • Show All 6,145 Lines • Show Last 20 Lines |
ordering bug.