• Finn Thain's avatar
    scsi: mac_scsi: Increase PIO/PDMA transfer length threshold · 7398cee4
    Finn Thain authored
    Some targets introduce delays when handshaking the response to certain
    commands. For example, a disk may send a 96-byte response to an INQUIRY
    command (or a 24-byte response to a MODE SENSE command) too slowly.
    
    Apparently the first 12 or 14 bytes are handshaked okay but then the system
    bus error timeout is reached while transferring the next word.
    
    Since the scsi bus phase hasn't changed, the driver then sets the target
    borken flag to prevent further PDMA transfers. The driver also logs the
    warning, "switching to slow handshake".
    
    Raise the PDMA threshold to 512 bytes so that PIO transfers will be used
    for these commands. This default is sufficiently low that PDMA will still
    be used for READ and WRITE commands.
    
    The existing threshold (16 bytes) was chosen more or less at random.
    However, best performance requires the threshold to be as low as possible.
    Those systems that don't need the PIO workaround at all may benefit from
    mac_scsi.setup_use_pdma=1
    
    Cc: Michael Schmitz <schmitzmic@gmail.com>
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 3a0f64bf ("mac_scsi: Fix pseudo DMA implementation")
    Signed-off-by: default avatarFinn Thain <fthain@telegraphics.com.au>
    Tested-by: default avatarStan Johnson <userm57@yahoo.com>
    Tested-by: default avatarMichael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    7398cee4
mac_scsi.c 12.5 KB