aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ieee1394
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-12-16 14:53:13 -0500
committerStefan Richter <stefanr@s5r6.in-berlin.de>2008-01-30 16:22:21 -0500
commit85c5798b09e9248f29edbc42f10b99842661e85c (patch)
tree061993f037fc6122fae5efe5729613e15f9eba76 /drivers/ieee1394
parent4e6343a10b6afb5b036db35c4a0f0aa1333232e1 (diff)
ieee1394: ohci1394: don't schedule IT tasklets on IR events
Bug noted by Pieter Palmers: Isochronous transmit tasklets were scheduled on isochronous receive events, in addition to the proper isochronous receive tasklets. http://marc.info/?l=linux1394-devel&m=119783196222802 Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/ieee1394')
-rw-r--r--drivers/ieee1394/ohci1394.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c
index 372c5c16eb31..969de2a2d633 100644
--- a/drivers/ieee1394/ohci1394.c
+++ b/drivers/ieee1394/ohci1394.c
@@ -2126,10 +2126,14 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci,
2126 list_for_each_entry(t, &ohci->iso_tasklet_list, link) { 2126 list_for_each_entry(t, &ohci->iso_tasklet_list, link) {
2127 mask = 1 << t->context; 2127 mask = 1 << t->context;
2128 2128
2129 if (t->type == OHCI_ISO_TRANSMIT && tx_event & mask) 2129 if (t->type == OHCI_ISO_TRANSMIT) {
2130 tasklet_schedule(&t->tasklet); 2130 if (tx_event & mask)
2131 else if (rx_event & mask) 2131 tasklet_schedule(&t->tasklet);
2132 tasklet_schedule(&t->tasklet); 2132 } else {
2133 /* OHCI_ISO_RECEIVE or OHCI_ISO_MULTICHANNEL_RECEIVE */
2134 if (rx_event & mask)
2135 tasklet_schedule(&t->tasklet);
2136 }
2133 } 2137 }
2134 2138
2135 spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags); 2139 spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags);