diff options
author | Stefan Ringel <linuxtv@stefanringel.de> | 2011-11-28 22:46:19 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-11-29 03:30:41 +0400 |
commit | de2a20baff364b8dd19371acc1dc0b138e0b08b9 (patch) | |
tree | 97c8b6b0b89118d8a2c03f6de76014ef43be11d6 /drivers/media/video/tm6000/tm6000-dvb.c | |
parent | 8159c184cf58ac78fc868d776fa2062d1162b6e5 (diff) | |
download | linux-de2a20baff364b8dd19371acc1dc0b138e0b08b9.tar.xz |
[media] tm6000: bugfix at bulk transfer
Signed-off-by: Stefan Ringel <linuxtv@stefanringel.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/tm6000/tm6000-dvb.c')
-rw-r--r-- | drivers/media/video/tm6000/tm6000-dvb.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/media/video/tm6000/tm6000-dvb.c b/drivers/media/video/tm6000/tm6000-dvb.c index 5e6c129a4beb..db6a561bca3e 100644 --- a/drivers/media/video/tm6000/tm6000-dvb.c +++ b/drivers/media/video/tm6000/tm6000-dvb.c @@ -89,9 +89,19 @@ static void tm6000_urb_received(struct urb *urb) int ret; struct tm6000_core *dev = urb->context; - if (urb->status != 0) + switch (urb->status) { + case 0: + case -ETIMEDOUT: + break; + case -ENOENT: + case -ECONNRESET: + case -ESHUTDOWN: + return; + default: print_err_status(dev, 0, urb->status); - else if (urb->actual_length > 0) + } + + if (urb->actual_length > 0) dvb_dmx_swfilter(&dev->dvb->demux, urb->transfer_buffer, urb->actual_length); @@ -151,7 +161,7 @@ static int tm6000_start_stream(struct tm6000_core *dev) printk(KERN_ERR "tm6000: pipe resetted\n"); /* mutex_lock(&tm6000_driver.open_close_mutex); */ - ret = usb_submit_urb(dvb->bulk_urb, GFP_KERNEL); + ret = usb_submit_urb(dvb->bulk_urb, GFP_ATOMIC); /* mutex_unlock(&tm6000_driver.open_close_mutex); */ if (ret) { |