• Russell King (Oracle)'s avatar
    net: phylink: use the PHY's possible_interfaces if populated · 7a1f9a17
    Russell King (Oracle) authored
    Some PHYs such as Aquantia, Broadcom 84881, and Marvell 88X33x0 can
    switch between a set of interface types depending on the negotiated
    media speed, or can use rate adaption for some or all of these
    interface types.
    
    We currently assume that these are Clause 45 PHYs that are configured
    not to use a specific set of interface modes, which has worked so far,
    but is just a work-around. In this workaround, we validate using all
    interfaces that the MAC supports, which can lead to extra modes being
    advertised that can not be supported.
    
    To properly address this, switch to using the newly introduced PHY
    possible_interfaces bitmap which indicates which interface modes will
    be used by the PHY as configured. We calculate the union of the PHY's
    possible interfaces and MACs supported interfaces, checking that is
    non-empty. If the PHY is on a SFP, we further reduce the set by those
    which can be used on a SFP module, again checking that is non-empty.
    Finally, we validate the subset of interfaces, taking account of
    whether rate matching will be used for each individual interface mode.
    
    This becomes independent of whether the PHY is clause 22 or clause 45.
    
    It is encouraged that all PHYs that switch interface modes or use
    rate matching should populate phydev->possible_interfaces.
    Tested-by: default avatarLuo Jie <quic_luoj@quicinc.com>
    Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/E1r6VIV-00DDMF-Pi@rmk-PC.armlinux.org.ukSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7a1f9a17
phylink.c 106 KB