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.dan...@gmail.com>
> > ---
> >  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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to