Browse Source

V4L/DVB (9688): gspca: Reset the bulk URB status before resubmitting at irq level.

Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Jean-Francois Moine 16 years ago
parent
commit
880ae24d35
1 changed files with 7 additions and 2 deletions
  1. 7 2
      drivers/media/video/gspca/gspca.c

+ 7 - 2
drivers/media/video/gspca/gspca.c

@@ -173,7 +173,6 @@ static void fill_frame(struct gspca_dev *gspca_dev,
 	}
 
 	/* resubmit the URB */
-	urb->status = 0;
 	st = usb_submit_urb(urb, GFP_ATOMIC);
 	if (st < 0)
 		PDEBUG(D_ERR|D_PACK, "usb_submit_urb() ret %d", st);
@@ -208,7 +207,13 @@ static void bulk_irq(struct urb *urb
 	PDEBUG(D_PACK, "bulk irq");
 	if (!gspca_dev->streaming)
 		return;
-	if (urb->status != 0 && urb->status != -ECONNRESET) {
+	switch (urb->status) {
+	case 0:
+		break;
+	case -ECONNRESET:
+		urb->status = 0;
+		break;
+	default:
 #ifdef CONFIG_PM
 		if (!gspca_dev->frozen)
 #endif