Commit 78dec56d6a56322e1b728d51f3a7def416d36b34
1 parent
82b662dc41
Exists in
master
and in
4 other branches
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 |