All of lore.kernel.org
 help / color / mirror / Atom feed
* patch: s2255drv: urb completion routine fixes
@ 2009-04-30 15:29 Dean A.
  0 siblings, 0 replies; only message in thread
From: Dean A. @ 2009-04-30 15:29 UTC (permalink / raw)
  To: linux-media, video4linux-list, mchehab

From: Dean Anderson <dean@sensoray.com>

Error count in read pipe completion corrected.
URB not resubmitted if shutting down.
URB not freed in completion routine if new urb_submit_fails.
(URB is freed on shutdown).

Signed-off-by: Dean Anderson <dean@sensoray.com>

--- v4l-dvb-83712d149893/linux/drivers/media/video/s2255drv.c.orig	2009-04-30 07:34:34.000000000 -0700
+++ v4l-dvb-83712d149893/linux/drivers/media/video/s2255drv.c	2009-04-30 07:27:10.000000000 -0700
@@ -2240,8 +2240,10 @@ static void read_pipe_completion(struct 
 		return;
 	}
 	status = purb->status;
-	if (status != 0) {
-		dprintk(2, "read_pipe_completion: err\n");
+	/* if shutting down, do not resubmit, exit immediately */
+	if (status == -ESHUTDOWN) {
+		dprintk(2, "read_pipe_completion: err shutdown\n");
+		pipe_info->err_count++;
 		return;
 	}
 
@@ -2250,9 +2252,13 @@ static void read_pipe_completion(struct 
 		return;
 	}
 
-	s2255_read_video_callback(dev, pipe_info);
+	if (status == 0)
+		s2255_read_video_callback(dev, pipe_info);
+	else {
+		pipe_info->err_count++;
+		dprintk(1, "s2255drv: failed URB %d\n", status);
+	}
 
-	pipe_info->err_count = 0;
 	pipe = usb_rcvbulkpipe(dev->udev, dev->read_endpoint);
 	/* reuse urb */
 	usb_fill_bulk_urb(pipe_info->stream_urb, dev->udev,
@@ -2264,7 +2270,6 @@ static void read_pipe_completion(struct 
 	if (pipe_info->state != 0) {
 		if (usb_submit_urb(pipe_info->stream_urb, GFP_KERNEL)) {
 			dev_err(&dev->udev->dev, "error submitting urb\n");
-			usb_free_urb(pipe_info->stream_urb);
 		}
 	} else {
 		dprintk(2, "read pipe complete state 0\n");


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-04-30 15:29 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-30 15:29 patch: s2255drv: urb completion routine fixes Dean A.

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.