On 01/19/2012 03:31 PM, Mauro Carvalho Chehab wrote:
[PATCH] dvb-usb: Don't abort stop on -EAGAIN/-EINTR

Note: this patch is not complete. if the DVB demux device is opened on
block mode, it should instead be returning -EAGAIN.

Signed-off-by: Mauro Carvalho Chehab<mche...@redhat.com>

diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c 
b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
index ddf282f..215ce75 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
@@ -30,7 +30,9 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed 
*dvbdmxfeed, int onoff)
                usb_urb_kill(&adap->fe_adap[adap->active_fe].stream);

                if (adap->props.fe[adap->active_fe].streaming_ctrl != NULL) {
-                       ret = 
adap->props.fe[adap->active_fe].streaming_ctrl(adap, 0);
+                       do {
+                               ret = 
adap->props.fe[adap->active_fe].streaming_ctrl(adap, 0);
+                       } while ((ret == -EAGAIN) || (ret == -EINTR));
                        if (ret<  0) {
                                err("error while stopping stream.");
                                return ret;


That fixes it. But it loops do {...} while around 100 times every I stop zap. Over 100 times is rather much...

And I think -EINTR is the only code to look, -EAGAIN is maybe for I2C and can be switched to native -EINTR also.

regards
Antti
--
http://palosaari.fi/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to