diff options
author | Hannes Reinecke <hare@suse.de> | 2006-03-08 07:00:07 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-12 10:06:57 -0500 |
commit | 76744f429a178ad2df06b722e5e7bbbf1b5245ee (patch) | |
tree | 92406bc62b0316803746c57e2e461721bc454578 /drivers/scsi | |
parent | 986a25f96accc8272059ae8b3eb63055f58cadb0 (diff) |
[SCSI] aic79xx: Avoid renegotiation on inquiry
Because of some quirk in the SCSI spec the aic79xx driver chose to
force a renegotiation when sending an inquiry. This should better
be handled by the upper layers if required at all.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/aic7xxx/aic79xx_osm.c | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index 0fbd1ec58340..bcced0a417e6 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c | |||
@@ -1526,30 +1526,6 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev, | |||
1526 | if ((tstate->auto_negotiate & mask) != 0) { | 1526 | if ((tstate->auto_negotiate & mask) != 0) { |
1527 | scb->flags |= SCB_AUTO_NEGOTIATE; | 1527 | scb->flags |= SCB_AUTO_NEGOTIATE; |
1528 | scb->hscb->control |= MK_MESSAGE; | 1528 | scb->hscb->control |= MK_MESSAGE; |
1529 | } else if (cmd->cmnd[0] == INQUIRY | ||
1530 | && (tinfo->curr.offset != 0 | ||
1531 | || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT | ||
1532 | || tinfo->curr.ppr_options != 0) | ||
1533 | && (tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)==0) { | ||
1534 | /* | ||
1535 | * The SCSI spec requires inquiry | ||
1536 | * commands to complete without | ||
1537 | * reporting unit attention conditions. | ||
1538 | * Because of this, an inquiry command | ||
1539 | * that occurs just after a device is | ||
1540 | * reset will result in a data phase | ||
1541 | * with mismatched negotiated rates. | ||
1542 | * The core already forces a renegotiation | ||
1543 | * for reset events that are visible to | ||
1544 | * our controller or that we initiate, | ||
1545 | * but a third party device reset or a | ||
1546 | * hot-plug insertion can still cause this | ||
1547 | * issue. Therefore, we force a re-negotiation | ||
1548 | * for every inquiry command unless we | ||
1549 | * are async. | ||
1550 | */ | ||
1551 | scb->flags |= SCB_NEGOTIATE; | ||
1552 | scb->hscb->control |= MK_MESSAGE; | ||
1553 | } | 1529 | } |
1554 | 1530 | ||
1555 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { | 1531 | if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) { |