• Maxime Chevallier's avatar
    net: phy: Introduce ethernet link topology representation · 6916e461
    Maxime Chevallier authored
    Link topologies containing multiple network PHYs attached to the same
    net_device can be found when using a PHY as a media converter for use
    with an SFP connector, on which an SFP transceiver containing a PHY can
    be used.
    
    With the current model, the transceiver's PHY can't be used for
    operations such as cable testing, timestamping, macsec offload, etc.
    
    The reason being that most of the logic for these configuration, coming
    from either ethtool netlink or ioctls tend to use netdev->phydev, which
    in multi-phy systems will reference the PHY closest to the MAC.
    
    Introduce a numbering scheme allowing to enumerate PHY devices that
    belong to any netdev, which can in turn allow userspace to take more
    precise decisions with regard to each PHY's configuration.
    
    The numbering is maintained per-netdev, in a phy_device_list.
    The numbering works similarly to a netdevice's ifindex, with
    identifiers that are only recycled once INT_MAX has been reached.
    
    This prevents races that could occur between PHY listing and SFP
    transceiver removal/insertion.
    
    The identifiers are assigned at phy_attach time, as the numbering
    depends on the netdevice the phy is attached to. The PHY index can be
    re-used for PHYs that are persistent.
    Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6916e461
phy_link_topology.c 2.42 KB