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<mchehab@xxxxxxxxxx> 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html