linux/drivers/firewire
Jarod Wilson 76f73ca1b2 firewire: fw-ohci: don't append to AT context when it's not active
I finally tracked down the issues with this JMicron PCI-e card in my
possession to a failure to comply with section 7.2.3.2 of the OHCI 1.1
specification (thanks to Kristian for the pointer to illustrate that it
is indeed a flaw in this card, not the driver). The controller should
simply flush the packets we've appended to its AT queue if a bus reset
occurs before they've been transmitted and we'll try again, but
something goes wrong and the controller winds up hung.

However, we can avoid the problem by simply checking if the
IntEvent.busReset register had been set before we try appending to the
AT context. When busReset is set, the AT context is completely halted
until busReset is cleared, so there's no point in appending AT packets
until the register is cleared. So at_context_queue_packet() now checks
for busReset being set, and bails with an RCODE_GENERATION packet ack,
which results in us trying to append the packet again after recognizing
the fact there has been a bus reset, and clearing busReset.

Signed-off-by: Jarod Wilson <jwilson@redhat.com>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
2008-04-18 17:55:35 +02:00
..
fw-card.c firewire: remove superfluous reference counting 2008-04-18 17:55:31 +02: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: refactor fw_unit reference counting 2008-04-18 17:55:32 +02:00
fw-iso.c firewire: Clean up comment style. 2007-05-10 18:24:13 +02:00
fw-ohci.c firewire: fw-ohci: don't append to AT context when it's not active 2008-04-18 17:55:35 +02:00
fw-ohci.h firewire: fw-ohci: log regAccessFail events 2008-04-18 17:55:34 +02:00
fw-sbp2.c firewire: fw-sbp2: set dual-phase cycle_limit 2008-04-18 17:55:33 +02:00
fw-topology.c firewire: warn on fatal condition in topology code 2008-03-14 00:56:59 +01:00
fw-topology.h firewire: a header cleanup 2007-10-17 00:00:09 +02:00
fw-transaction.c firewire: fix panic in handle_at_packet 2008-03-20 18:13:05 +01:00
fw-transaction.h firewire: remove superfluous reference counting 2008-04-18 17:55:31 +02:00
Kconfig firewire: debug interrupt events 2008-04-18 17:55:34 +02:00
Makefile firewire: prefix modules with firewire- instead of fw- 2007-05-27 23:21:01 +02:00