net: dsa: introduce dsa_phylink_to_port()
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Wed, 10 Apr 2024 19:42:38 +0000 (20:42 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 12 Apr 2024 03:01:14 +0000 (20:01 -0700)
We convert from a phylink_config struct to a dsa_port struct in many
places, let's provide a helper for this.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://lore.kernel.org/r/E1rudqA-006K9B-85@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/net/dsa.h
net/dsa/port.c

index 7c0da9effe4e925275ec593114acc0752b2cf8ee..f228b479a5fd24eca2eccf19bfee1106f8de5e17 100644 (file)
@@ -327,6 +327,12 @@ struct dsa_port {
        };
 };
 
+static inline struct dsa_port *
+dsa_phylink_to_port(struct phylink_config *config)
+{
+       return container_of(config, struct dsa_port, pl_config);
+}
+
 /* TODO: ideally DSA ports would have a single dp->link_dp member,
  * and no dst->rtable nor this struct dsa_link would be needed,
  * but this would require some more complex tree walking,
index c42dac87671b136b5814f21c421adb26fb392db8..02bf1c306bdcaf81669cd7124e0d12b9e4216915 100644 (file)
@@ -1558,7 +1558,7 @@ static struct phylink_pcs *
 dsa_port_phylink_mac_select_pcs(struct phylink_config *config,
                                phy_interface_t interface)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct phylink_pcs *pcs = ERR_PTR(-EOPNOTSUPP);
        struct dsa_switch *ds = dp->ds;
 
@@ -1572,7 +1572,7 @@ static int dsa_port_phylink_mac_prepare(struct phylink_config *config,
                                        unsigned int mode,
                                        phy_interface_t interface)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct dsa_switch *ds = dp->ds;
        int err = 0;
 
@@ -1587,7 +1587,7 @@ static void dsa_port_phylink_mac_config(struct phylink_config *config,
                                        unsigned int mode,
                                        const struct phylink_link_state *state)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct dsa_switch *ds = dp->ds;
 
        if (!ds->ops->phylink_mac_config)
@@ -1600,7 +1600,7 @@ static int dsa_port_phylink_mac_finish(struct phylink_config *config,
                                       unsigned int mode,
                                       phy_interface_t interface)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct dsa_switch *ds = dp->ds;
        int err = 0;
 
@@ -1615,7 +1615,7 @@ static void dsa_port_phylink_mac_link_down(struct phylink_config *config,
                                           unsigned int mode,
                                           phy_interface_t interface)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct phy_device *phydev = NULL;
        struct dsa_switch *ds = dp->ds;
 
@@ -1638,7 +1638,7 @@ static void dsa_port_phylink_mac_link_up(struct phylink_config *config,
                                         int speed, int duplex,
                                         bool tx_pause, bool rx_pause)
 {
-       struct dsa_port *dp = container_of(config, struct dsa_port, pl_config);
+       struct dsa_port *dp = dsa_phylink_to_port(config);
        struct dsa_switch *ds = dp->ds;
 
        if (!ds->ops->phylink_mac_link_up) {