Skip to content

Commit

Permalink
[SCSI] SPI transport class, don't negotiate options not supported
Browse files Browse the repository at this point in the history
At the moment, the transport class blindly tries to set things like
QAS and IU, even if the drive won't support them.  It's best not to
annoy the devices like this and instead only set what the drive says
is actually supported.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Bottomley authored and James Bottomley committed Jul 11, 2005
1 parent 2a40342 commit eb1dd68
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions drivers/scsi/scsi_transport_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -795,7 +795,8 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)
}

/* test width */
if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) {
if (i->f->set_width && spi_max_width(starget) &&
scsi_device_wide(sdev)) {
i->f->set_width(starget, 1);

if (spi_dv_device_compare_inquiry(sreq, buffer,
Expand All @@ -811,14 +812,14 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)
return;

/* device can't handle synchronous */
if (!sdev->ppr && !sdev->sdtr)
if (!scsi_device_sync(sdev) && !scsi_device_dt(sdev))
return;

/* see if the device has an echo buffer. If it does we can
* do the SPI pattern write tests */

len = 0;
if (sdev->ppr)
if (scsi_device_dt(sdev))
len = spi_dv_device_get_echo_buffer(sreq, buffer);

retry:
Expand All @@ -828,9 +829,11 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)
DV_SET(period, spi_min_period(starget));
/* try QAS requests; this should be harmless to set if the
* target supports it */
DV_SET(qas, 1);
if (scsi_device_qas(sdev))
DV_SET(qas, 1);
/* Also try IU transfers */
DV_SET(iu, 1);
if (scsi_device_ius(sdev))
DV_SET(iu, 1);
if (spi_min_period(starget) < 9) {
/* This u320 (or u640). Ignore the coupled parameters
* like DT and IU, but set the optional ones */
Expand Down

0 comments on commit eb1dd68

Please sign in to comment.