summaryrefslogtreecommitdiff
path: root/drivers/media/video/tm6000/tm6000-dvb.c
diff options
context:
space:
mode:
authorStefan Ringel <linuxtv@stefanringel.de>2011-11-28 22:46:19 +0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-11-29 03:30:41 +0400
commitde2a20baff364b8dd19371acc1dc0b138e0b08b9 (patch)
tree97c8b6b0b89118d8a2c03f6de76014ef43be11d6 /drivers/media/video/tm6000/tm6000-dvb.c
parent8159c184cf58ac78fc868d776fa2062d1162b6e5 (diff)
downloadlinux-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.c16
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) {