android_kernel_xiaomi_sm8350/drivers/firewire
Jarod Wilson 51f9dbef5b firewire: fw-sbp2: set single-phase retry_limit
Per the SBP-2 specification, all SBP-2 target devices must have a BUSY_TIMEOUT
register. Per the 1394-1995 specification, the retry_limt portion of the
register should be set to 0x0 initially, and set on the target by a logged in
initiator (i.e., a Linux host w/firewire controller(s)).

Well, as it turns out, lots of devices these days have actually moved on to
starting to implement SBP-3 compliance, which says that retry_limit should
default to 0xf instead (yes, SBP-3 stomps directly on 1394-1995, oops).

Prior to this change, the firewire driver stack didn't touch retry_limit, and
any SBP-3 compliant device worked fine, while SBP-2 compliant ones were unable
to retransmit when the host returned an ack_busy_X, which resulted in stalled
out I/O, eventually causing the SCSI layer to give up and offline the device.

The simple fix is for us to set retry_limit to 0xf in the register for all
devices (which actually matches what the old ieee1394 stack did).

Prior to this change, a hard disk behind an SBP-2 Prolific PL-3507 bridge chip
would routinely encounter buffer I/O errors and wind up offlined by the SCSI
layer. With this change, I've encountered zero I/O failures moving tens of GB
of data around.

Signed-off-by: Jarod Wilson <jwilson@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
2008-03-14 00:56:59 +01:00
..
fw-card.c firewire: fix crash in automatic module unloading 2008-03-02 12:35:46 +01:00
fw-cdev.c firewire: fix NULL pointer deref. and resource leak 2008-02-21 19:05:56 +01:00
fw-device.c firewire: fix crash in automatic module unloading 2008-03-02 12:35:46 +01:00
fw-device.h firewire: fix crash in automatic module unloading 2008-03-02 12:35:46 +01:00
fw-iso.c
fw-ohci.c firewire: fw-ohci: Apple UniNorth 1st generation support 2008-03-14 00:56:59 +01:00
fw-ohci.h firewire: fw-ohci: check for misconfigured bus (phyID == 63) 2007-10-17 00:00:08 +02:00
fw-sbp2.c firewire: fw-sbp2: set single-phase retry_limit 2008-03-14 00:56:59 +01:00
fw-topology.c firewire: potentially invalid pointers used in fw_card_bm_work 2008-03-02 12:35:46 +01:00
fw-topology.h firewire: a header cleanup 2007-10-17 00:00:09 +02:00
fw-transaction.c firewire: endianess annotations 2008-03-14 00:56:58 +01:00
fw-transaction.h firewire: endianess annotations 2008-03-14 00:56:58 +01:00
Kconfig
Makefile