• Alvin Šipraga's avatar
    net: dsa: realtek: rtl8365mb: handle PHY interface modes correctly · a48b6e44
    Alvin Šipraga authored
    Realtek switches in the rtl8365mb family always have at least one port
    with a so-called external interface, supporting PHY interface modes such
    as RGMII or SGMII. The purpose of this patch is to improve the driver's
    handling of these ports.
    
    A new struct rtl8365mb_chip_info is introduced together with a static
    array of such structs. An instance of this struct is added for each
    supported switch, distinguished by its chip ID and version. Embedded in
    each chip_info struct is an array of struct rtl8365mb_extint, describing
    the external interfaces available. This is more specific than the old
    rtl8365mb_extint_port_map, which was only valid for switches with up to
    6 ports.
    
    The struct rtl8365mb_extint also contains a bitmask of supported PHY
    interface modes, which allows the driver to distinguish which ports
    support RGMII. This corrects a previous mistake in the driver whereby it
    was assumed that any port with an external interface supports RGMII.
    This is not actually the case: for example, the RTL8367S has two
    external interfaces, only the second of which supports RGMII. The first
    supports only SGMII and HSGMII. This new design will make it easier to
    add support for other interface modes.
    
    Finally, rtl8365mb_phylink_get_caps() is fixed up to return supported
    capabilities based on the external interface properties described above.
    This addresses Vladimir's point in the linked thread that the
    capabilities are not actually a function of the DSA port type: Although
    most typical applications will treat the ports with internal PHY as user
    ports, there is no actual hardware limitation preventing one from using
    them as a CPU port. Equally, ports with external interface(s) may well
    be treated as user ports, even though it is typical to use those ports
    as CPU ports.
    
    Link: https://lore.kernel.org/netdev/20220510192301.5djdt3ghoavxulhl@bang-olufsen.dk/Signed-off-by: default avatarAlvin Šipraga <alsi@bang-olufsen.dk>
    Acked-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Acked-by: default avatarLuiz Angelo Daros de Luca <luizluca@gmail.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    a48b6e44
rtl8365mb.c 63.9 KB