* 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.