Subject: Re: [PATCH net-next 3/3] net: phylink: pcs: add 802.3 clause 45 helpers

From: Andrew Lunn <[email-masked]>
Date: Sat, 14 Mar 2020 22:48:00 +0100

On Sat, Mar 14, 2020 at 10:31:34AM +0000, Russell King wrote:
> Implement helpers for PCS accessed via the MII bus using 802.3 clause
> 45 cycles for 10GBASE-R. Only link up/down is supported, 10G full
> duplex is assumed.
> 
> Signed-off-by: Russell King <[email-masked]>
> ---
>  drivers/net/phy/phylink.c | 30 ++++++++++++++++++++++++++++++
>  include/linux/phylink.h   |  2 ++
>  2 files changed, 32 insertions(+)
> 
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 7ca427c46d9f..bff570f59d5c 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -2247,4 +2247,34 @@ void phylink_mii_c22_pcs_an_restart(struct mdio_device *pcs)
>  }
>  EXPORT_SYMBOL_GPL(phylink_mii_c22_pcs_an_restart);
>  
> +#define C45_ADDR(d,a)	(MII_ADDR_C45 | (d) << 16 | (a))

Hi Russell

That seems like a macro that should be made global.

dsa/mv88e6xxx/serdes.c: int reg_c45 = MII_ADDR_C45 | device << 16 | reg;
dsa/mv88e6xxx/serdes.c: int reg_c45 = MII_ADDR_C45 | device << 16 | reg;
ethernet/intel/ixgbe/ixgbe_main.c:                      regnum |= (devad << 16) | MII_ADDR_C45;
ethernet/intel/ixgbe/ixgbe_main.c:                      regnum |= (devad << 16) | MII_ADDR_C45;
phy/phylink.c:          devad = MII_ADDR_C45 | devad << 16 | reg;
phy/phylink.c:          devad = MII_ADDR_C45 | devad << 16 | reg;
phy/phylink.c:          devad = MII_ADDR_C45 | devad << 16 | reg;
phy/phylink.c:          devad = MII_ADDR_C45 | devad << 16 | reg;
phy/phy-core.c:         u32 addr = MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff);
phy/phy-core.c:         u32 addr = MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff);
phy/phy_device.c:       reg_addr = MII_ADDR_C45 | dev_addr << 16 | MDIO_DEVS2;
phy/phy_device.c:       reg_addr = MII_ADDR_C45 | dev_addr << 16 | MDIO_DEVS1;
phy/phy_device.c:               reg_addr = MII_ADDR_C45 | i << 16 | MII_PHYSID1;
phy/phy_device.c:               reg_addr = MII_ADDR_C45 | i << 16 | MII_PHYSID2;
phy/phy.c:                      devad = MII_ADDR_C45 | devad << 16 | mii_data->reg_num;
phy/phy.c:                      devad = MII_ADDR_C45 | devad << 16 | mii_data->reg_num;
phy/bcm87xx.c:          u32 regnum = MII_ADDR_C45 | (devid << 16) | reg;

I'm not suggesting you convert all these cases, just make the macro
available and we can make more use of it later.

Thanks
	Andrew