Commit 78dec56d6a56322e1b728d51f3a7def416d36b34

Authored by Stefan Richter
1 parent 82b662dc41

firewire: ohci: flush AT contexts after bus reset - addendum

Add comments
  - on why bus_reset_tasklet flushes AT queues,
  - that commit 76f73ca1b291 can possibly be reverted now.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Acked-by: Jarod Wilson <jarod@redhat.com>

Showing 1 changed file with 7 additions and 0 deletions Side-by-side Diff

drivers/firewire/ohci.c
... ... @@ -1336,6 +1336,8 @@
1336 1336 * some controllers (like a JMicron JMB381 PCI-e) misbehave and wind
1337 1337 * up stalling out. So we just bail out in software and try again
1338 1338 * later, and everyone is happy.
  1339 + * FIXME: Test of IntEvent.busReset may no longer be necessary since we
  1340 + * flush AT queues in bus_reset_tasklet.
1339 1341 * FIXME: Document how the locking works.
1340 1342 */
1341 1343 if (ohci->generation != packet->generation ||
... ... @@ -1750,6 +1752,11 @@
1750 1752  
1751 1753 spin_unlock_irqrestore(&ohci->lock, flags);
1752 1754  
  1755 + /*
  1756 + * Per OHCI 1.2 draft, clause 7.2.3.3, hardware may leave unsent
  1757 + * packets in the AT queues and software needs to drain them.
  1758 + * Some OHCI 1.1 controllers (JMicron) apparently require this too.
  1759 + */
1753 1760 at_context_flush(&ohci->at_request_ctx);
1754 1761 at_context_flush(&ohci->at_response_ctx);
1755 1762