On 7/29/22 08:33, Maxime Chevallier wrote: > Some phy modes such as QSGMII multiplex several MAC<->PHY links on one > single physical interface. QSGMII used to be the only one supported, but > other modes such as QUSGMII also carry multiple links. > > This helper allows getting the number of links that are multiplexed > on a given interface. > > Signed-off-by: Maxime Chevallier <maxime.chevallier@xxxxxxxxxxx> > --- > V1->V2 : New patch > V2->V3 : Made PHY_INTERFACE_MODE_INTERNAL 1 port, and added the MAX > case. > > drivers/net/phy/phy-core.c | 52 ++++++++++++++++++++++++++++++++++++++ > include/linux/phy.h | 2 ++ > 2 files changed, 54 insertions(+) > > diff --git a/drivers/net/phy/phy-core.c b/drivers/net/phy/phy-core.c > index 1f2531a1a876..f8ec12d3d6ae 100644 > --- a/drivers/net/phy/phy-core.c > +++ b/drivers/net/phy/phy-core.c > @@ -74,6 +74,58 @@ const char *phy_duplex_to_str(unsigned int duplex) > } > EXPORT_SYMBOL_GPL(phy_duplex_to_str); > > +/** > + * phy_interface_num_ports - Return the number of links that can be carried by > + * a given MAC-PHY physical link. Returns 0 if this is > + * unknown, the number of links else. > + * > + * @interface: The interface mode we want to get the number of ports > + */ > +int phy_interface_num_ports(phy_interface_t interface) > +{ > + switch (interface) { > + case PHY_INTERFACE_MODE_NA: > + return 0; > + case PHY_INTERFACE_MODE_INTERNAL: Maybe this was covered in the previous iteration, but cannot the default case return 1, and all of the cases that need an explicit non-1 return value are handled? Enumeration all of those that do need to return 1 does not really scale. -- Florian