It looks that "if (try_count < 20) continue" jumps to end of the do ... while(0) loop and goes out. --hd. On Fri, 2015-01-16 at 11:57 +0100, Hans Verkuil wrote: > On 01/05/2015 11:38 PM, Haim Daniel wrote: > > In case a command is timed out, current flow sets the retry_flag > > and does nothing. > > Really? That's not how I read the code: it retries up to 20 times before > bailing out. > > Perhaps you missed the "if (try_count < 20) continue;" line? > > Regards, > > Hans > > > > > Signed-off-by: Haim Daniel <haim.daniel@xxxxxxxxx> > > --- > > drivers/media/usb/pvrusb2/pvrusb2-encoder.c | 15 +-------------- > > 1 file changed, 1 insertion(+), 14 deletions(-) > > > > diff --git a/drivers/media/usb/pvrusb2/pvrusb2-encoder.c b/drivers/media/usb/pvrusb2/pvrusb2-encoder.c > > index f7702ae..02028aa 100644 > > --- a/drivers/media/usb/pvrusb2/pvrusb2-encoder.c > > +++ b/drivers/media/usb/pvrusb2/pvrusb2-encoder.c > > @@ -145,8 +145,6 @@ static int pvr2_encoder_cmd(void *ctxt, > > u32 *argp) > > { > > unsigned int poll_count; > > - unsigned int try_count = 0; > > - int retry_flag; > > int ret = 0; > > unsigned int idx; > > /* These sizes look to be limited by the FX2 firmware implementation */ > > @@ -213,8 +211,6 @@ static int pvr2_encoder_cmd(void *ctxt, > > break; > > } > > > > - retry_flag = 0; > > - try_count++; > > ret = 0; > > wrData[0] = 0; > > wrData[1] = cmd; > > @@ -245,11 +241,9 @@ static int pvr2_encoder_cmd(void *ctxt, > > } > > if (rdData[0] && (poll_count < 1000)) continue; > > if (!rdData[0]) { > > - retry_flag = !0; > > pvr2_trace( > > PVR2_TRACE_ERROR_LEGS, > > - "Encoder timed out waiting for us" > > - "; arranging to retry"); > > + "Encoder timed out waiting for us"); > > } else { > > pvr2_trace( > > PVR2_TRACE_ERROR_LEGS, > > @@ -269,13 +263,6 @@ static int pvr2_encoder_cmd(void *ctxt, > > ret = -EBUSY; > > break; > > } > > - if (retry_flag) { > > - if (try_count < 20) continue; > > - pvr2_trace( > > - PVR2_TRACE_ERROR_LEGS, > > - "Too many retries..."); > > - ret = -EBUSY; > > - } > > if (ret) { > > del_timer_sync(&hdw->encoder_run_timer); > > hdw->state_encoder_ok = 0; > > > -- 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