[media] tm6000: bugfix at bulk transfer
authorStefan Ringel <linuxtv@stefanringel.de>
Mon, 28 Nov 2011 18:46:19 +0000 (15:46 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 28 Nov 2011 23:30:41 +0000 (21:30 -0200)
Signed-off-by: Stefan Ringel <linuxtv@stefanringel.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tm6000/tm6000-dvb.c

index 5e6c129a4bebd2564f18779be0051573fa9b9242..db6a561bca3ebd4b763c7e4546cf66ca753ba667 100644 (file)
@@ -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) {