bas_gigaset: use tasklet_hi_schedule for timing critical tasklets
authorTilman Schmidt <tilman@imap.cc>
Sun, 5 Apr 2009 06:39:33 +0000 (06:39 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Apr 2009 00:07:56 +0000 (17:07 -0700)
The tasklets for isochronous data transfer need to run within 8 msec
to avoid over/underruns, so schedule them with high priority to fix
reported issues with occasional over/underruns.

Signed-off-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/isdn/gigaset/bas-gigaset.c

index 831ddce..781c404 100644 (file)
@@ -821,7 +821,7 @@ static void read_iso_callback(struct urb *urb)
                /* pass URB to tasklet */
                ubc->isoindone = urb;
                ubc->isoinstatus = status;
-               tasklet_schedule(&ubc->rcvd_tasklet);
+               tasklet_hi_schedule(&ubc->rcvd_tasklet);
        } else {
                /* tasklet still busy, drop data and resubmit URB */
                ubc->loststatus = status;
@@ -888,7 +888,7 @@ static void write_iso_callback(struct urb *urb)
        ubc->isooutovfl = ubc->isooutdone;
        ubc->isooutdone = ucx;
        spin_unlock_irqrestore(&ubc->isooutlock, flags);
-       tasklet_schedule(&ubc->sent_tasklet);
+       tasklet_hi_schedule(&ubc->sent_tasklet);
 }
 
 /* starturbs