On Thu, Mar 22, 2018 at 07:21:36PM +0530, harinikatakamli...@gmail.com wrote:
> From: Harini Katakam <hari...@xilinx.com>
> 
> Replace the while loop in MDIO read/write functions with a timeout.
> In addition, add a check for MDIO bus busy before initiating a new
> operation as well to make sure there is no ongoing MDIO operation.
> 
> Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.da...@xilinx.com>
> Signed-off-by: Harini Katakam <hari...@xilinx.com>
> ---
>  drivers/net/ethernet/cadence/macb_main.c | 54 
> ++++++++++++++++++++++++++++++--
>  1 file changed, 52 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/cadence/macb_main.c 
> b/drivers/net/ethernet/cadence/macb_main.c
> index d09bd43..f4030c1 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -321,6 +321,21 @@ static int macb_mdio_read(struct mii_bus *bus, int 
> mii_id, int regnum)
>  {
>       struct macb *bp = bus->priv;
>       int value;
> +     ulong timeout;
> +
> +     timeout = jiffies + msecs_to_jiffies(1000);
> +     /* wait for end of transfer */
> +     do {
> +             if (MACB_BFEXT(IDLE, macb_readl(bp, NSR)))
> +                     break;
> +
> +             cpu_relax();
> +     } while (!time_after_eq(jiffies, timeout));
> +
> +     if (time_after_eq(jiffies, timeout)) {
> +             netdev_err(bp->dev, "wait for end of transfer timed out\n");
> +             return -ETIMEDOUT;
> +     }

Hi Harini

It looks like you have repeated the same code 4 times. Please move it
into a helper function.

     Andrew

Reply via email to