]> err.no Git - linux-2.6/commitdiff
[SCSI] aic79xx: Avoid renegotiation on inquiry
authorHannes Reinecke <hare@suse.de>
Wed, 8 Mar 2006 12:00:07 +0000 (13:00 +0100)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>
Sun, 12 Mar 2006 15:06:57 +0000 (09:06 -0600)
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>
drivers/scsi/aic7xxx/aic79xx_osm.c

index 0fbd1ec583400d7a9559e273c0a748563caf17ca..bcced0a417e690967c0630b01b5c997e08e46106 100644 (file)
@@ -1526,30 +1526,6 @@ ahd_linux_run_command(struct ahd_softc *ahd, struct ahd_linux_device *dev,
        if ((tstate->auto_negotiate & mask) != 0) {
                scb->flags |= SCB_AUTO_NEGOTIATE;
                scb->hscb->control |= MK_MESSAGE;
-               } else if (cmd->cmnd[0] == INQUIRY
-                       && (tinfo->curr.offset != 0
-                        || tinfo->curr.width != MSG_EXT_WDTR_BUS_8_BIT
-                        || tinfo->curr.ppr_options != 0)
-                       && (tinfo->curr.ppr_options & MSG_EXT_PPR_IU_REQ)==0) {
-                       /*
-                        * The SCSI spec requires inquiry
-                        * commands to complete without
-                        * reporting unit attention conditions.
-                        * Because of this, an inquiry command
-                        * that occurs just after a device is
-                        * reset will result in a data phase
-                        * with mismatched negotiated rates.
-                        * The core already forces a renegotiation
-                        * for reset events that are visible to
-                        * our controller or that we initiate,
-                        * but a third party device reset or a
-                        * hot-plug insertion can still cause this
-                        * issue.  Therefore, we force a re-negotiation
-                        * for every inquiry command unless we
-                        * are async.
-                        */
-                       scb->flags |= SCB_NEGOTIATE;
-                       scb->hscb->control |= MK_MESSAGE;
        }
 
        if ((dev->flags & (AHD_DEV_Q_TAGGED|AHD_DEV_Q_BASIC)) != 0) {