net: dsa: dsa_loop: add phylink capabilities
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Mon, 9 Oct 2023 10:39:50 +0000 (11:39 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Oct 2023 09:06:05 +0000 (10:06 +0100)
Add phylink capabilities for dsa_loop, which I believe being a software
construct means that it supports essentially all interface types and
all speeds.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/dsa_loop.c

index 5b139f2206b6ef17053141b05951f5c9acfa008d..c70ed67cc18882e829f8ef1673bf3b6680a9c53f 100644 (file)
@@ -277,6 +277,14 @@ static int dsa_loop_port_max_mtu(struct dsa_switch *ds, int port)
        return ETH_MAX_MTU;
 }
 
+static void dsa_loop_phylink_get_caps(struct dsa_switch *dsa, int port,
+                                     struct phylink_config *config)
+{
+       bitmap_fill(config->supported_interfaces, PHY_INTERFACE_MODE_MAX);
+       __clear_bit(PHY_INTERFACE_MODE_NA, config->supported_interfaces);
+       config->mac_capabilities = ~0;
+}
+
 static const struct dsa_switch_ops dsa_loop_driver = {
        .get_tag_protocol       = dsa_loop_get_protocol,
        .setup                  = dsa_loop_setup,
@@ -295,6 +303,7 @@ static const struct dsa_switch_ops dsa_loop_driver = {
        .port_vlan_del          = dsa_loop_port_vlan_del,
        .port_change_mtu        = dsa_loop_port_change_mtu,
        .port_max_mtu           = dsa_loop_port_max_mtu,
+       .phylink_get_caps       = dsa_loop_phylink_get_caps,
 };
 
 static int dsa_loop_drv_probe(struct mdio_device *mdiodev)