Hi Jonathan,

A quick read through on the first review...

On Mon, Jun 08, 2020 at 07:39:53PM +0100, Jonathan McDowell wrote:
> +static int
> +qca8k_phylink_mac_link_state(struct dsa_switch *ds, int port,
> +                          struct phylink_link_state *state)
> +{
> +     struct qca8k_priv *priv = ds->priv;
> +     u32 reg;
> +
> +     reg = qca8k_read(priv, QCA8K_REG_PORT_STATUS(port));
> +
> +     state->link = (reg & QCA8K_PORT_STATUS_LINK_UP);
> +     state->an_complete = state->link;
> +     state->an_enabled = (reg & QCA8K_PORT_STATUS_LINK_AUTO);

I much prefer to use !!(reg & ...) since these are single-bit
bitfields.

> +     state->duplex = (reg & QCA8K_PORT_STATUS_DUPLEX) ? DUPLEX_FULL :
> +                                                        DUPLEX_HALF;
> +
> +     switch (reg & QCA8K_PORT_STATUS_SPEED) {
> +     case QCA8K_PORT_STATUS_SPEED_10:
> +             state->speed = SPEED_10;
> +             break;
> +     case QCA8K_PORT_STATUS_SPEED_100:
> +             state->speed = SPEED_100;
> +             break;
> +     case QCA8K_PORT_STATUS_SPEED_1000:
> +             state->speed = SPEED_1000;
> +             break;
> +     default:
> +             state->speed = SPEED_UNKNOWN;
> +             break;
> +     }
>  
> -     /* Set duplex mode */
> -     if (phy->duplex == DUPLEX_FULL)
> -             reg |= QCA8K_PORT_STATUS_DUPLEX;
> +     state->pause = MLO_PAUSE_NONE;
> +     if (reg & QCA8K_PORT_STATUS_RXFLOW)
> +             state->pause |= MLO_PAUSE_RX;
> +     if (reg & QCA8K_PORT_STATUS_TXFLOW)
> +             state->pause |= MLO_PAUSE_TX;
> +     if (reg & QCA8K_PORT_STATUS_FLOW_AUTO)
> +             state->pause |= MLO_PAUSE_AN;

There is no need to report back MLO_PAUSE_AN.

>From the quick read of this, nothing else obviously stood out.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTC for 0.8m (est. 1762m) line in suburbia: sync at 13.1Mbps down 503kbps up

Reply via email to