Re: [PATCH net-next v6 02/25] net: dsa: qca8k: use iopoll macro for qca8k_busy_wait

Ansuel Smith
2021-05-14T23:07:08Z

On Fri, May 14, 2021 at 11:52:25PM +0100, Russell King (Oracle) wrote:
> On Fri, May 14, 2021 at 10:59:52PM +0200, Ansuel Smith wrote:
> > Use iopoll macro instead of while loop.
> >
> > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > Reviewed-by: Andrew Lunn <andrew@lunn.ch>
>
> This doesn't look quite right to me.
>
> > static int
> > qca8k_busy_wait(struct qca8k_priv *priv, u32 reg, u32 mask)
> > {
> > - unsigned long timeout;
> > -
> > - timeout = jiffies + msecs_to_jiffies(20);
> > + u32 val;
>
> val is unsigned here.
>
> > + /* Check if qca8k_read has failed for a different reason
> > + * before returning -ETIMEDOUT
> > + */
> > + if (ret < 0 && val < 0)
>
> but here you are checking it for a negative number - this will always be
> false, making the conditional code unreachable. Either the test is wrong,
> or the type of val is wrong. Please resolve.
>

I know this is wrong and I will fix.
Anyway I tested this and I checked if with u32 a negative value was
actually provided and to my surprise the value was correctly returned.
Any idea why?

> --
> RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
> FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!