All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] net: dsa: allow phylink_mac_ops in DSA drivers
@ 2024-04-08 11:19 Russell King (Oracle)
  2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-08 11:19 UTC (permalink / raw)
  To: Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Florian Fainelli, Jakub Kicinski,
	netdev, Paolo Abeni

Hi,

This series showcases my idea of moving the phylink_mac_ops into DSA
drivers, using mv88e6xxx as an example. Since I'm only changing one
driver, providing the mac_ops has to be optional and the existing shims
need to be kept for unconverted drivers.

The first patch introduces a new helper that converts from the
phylink_config structure that phylink uses to communicate with MAC
drivers to the dsa_port structure. From this, DSA drivers can get
the dsa_switch structure and thus their implementation specific
data structure, and they can also retrieve the port index.

The second patch adds the support to the core DSA layer to allow
DSA drivers to provide phylink_mac_ops.

The third patch converts mv88e6xxx to use this.

I initially made this change after adding yet more phylink to DSA
driver shims for my work with phylink-based EEE support, and decided
that it was getting silly to keep implementing more and more shims.
There are cases where shims don't work well - we had already tripped
over a case a few years ago when the phylink mac_select_pcs operation
was introduced. Phylink tested for the presence of this in the ops
structure, but with DSA shims, this doesn't necessarily mean that
the sub-driver supports this method. The only way to find that out
is to call the method with dummy values and check the return code.

The same thing was partly true when adding EEE support, and I ended
up with this in phylink to determine whether the MAC supported EEE:

+static bool phylink_mac_supports_eee(struct phylink *pl)
+{
+       return pl->mac_ops->mac_disable_tx_lpi &&
+              pl->mac_ops->mac_enable_tx_lpi &&
+              pl->config->lpi_capabilities;
+}

because merely testing for the presence of the operations is
insufficient when shims are involved - and it wasn't possible to call
these functions in the way that mac_select_pcs could be called.

So, I think it's time to get away from this shimming model and instead
have drivers directly interface to the various subsystems.

This converts mv88e6xxx. I have similar patches for other DSA drivers
that will be sent once this has been reviewed.

v2: fix up patch 2 to call the mac_link_down() method as pointed out
by Vladimir

 drivers/net/dsa/mv88e6xxx/chip.c | 63 +++++++++++++++++++++++++---------------
 include/net/dsa.h                | 11 +++++++
 net/dsa/port.c                   | 41 +++++++++++++++++++-------
 3 files changed, 80 insertions(+), 35 deletions(-)

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port()
  2024-04-08 11:19 [PATCH net-next 0/3] net: dsa: allow phylink_mac_ops in DSA drivers Russell King (Oracle)
@ 2024-04-08 11:19 ` Russell King (Oracle)
  2024-04-08 23:41   ` Andrew Lunn
  2024-04-08 23:50   ` Florian Fainelli
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
  2024-04-08 11:19 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations Russell King (Oracle)
  2 siblings, 2 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-08 11:19 UTC (permalink / raw)
  To: Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Florian Fainelli, Jakub Kicinski,
	netdev, Paolo Abeni

We convert from a phylink_config struct to a dsa_port struct in many
places, let's provide a helper for this.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 include/net/dsa.h |  6 ++++++
 net/dsa/port.c    | 12 ++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index 7c0da9effe4e..f228b479a5fd 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -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,
diff --git a/net/dsa/port.c b/net/dsa/port.c
index c42dac87671b..02bf1c306bdc 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -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) {
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-08 11:19 [PATCH net-next 0/3] net: dsa: allow phylink_mac_ops in DSA drivers Russell King (Oracle)
  2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
@ 2024-04-08 11:19 ` Russell King (Oracle)
  2024-04-08 23:45   ` Andrew Lunn
                     ` (3 more replies)
  2024-04-08 11:19 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations Russell King (Oracle)
  2 siblings, 4 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-08 11:19 UTC (permalink / raw)
  To: Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Florian Fainelli, Jakub Kicinski,
	netdev, Paolo Abeni

Rather than having a shim for each and every phylink MAC operation,
allow DSA switch drivers to provide their own ops structure.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 include/net/dsa.h |  5 +++++
 net/dsa/port.c    | 29 ++++++++++++++++++++++++-----
 2 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index f228b479a5fd..7edfd8de8882 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -457,6 +457,11 @@ struct dsa_switch {
 	 */
 	const struct dsa_switch_ops	*ops;
 
+	/*
+	 * Allow a DSA switch driver to override the phylink MAC ops
+	 */
+	const struct phylink_mac_ops	*phylink_mac_ops;
+
 	/*
 	 * User mii_bus and devices for the individual ports.
 	 */
diff --git a/net/dsa/port.c b/net/dsa/port.c
index 02bf1c306bdc..bfacf41344df 100644
--- a/net/dsa/port.c
+++ b/net/dsa/port.c
@@ -1662,6 +1662,7 @@ static const struct phylink_mac_ops dsa_port_phylink_mac_ops = {
 
 int dsa_port_phylink_create(struct dsa_port *dp)
 {
+	const struct phylink_mac_ops *mac_ops;
 	struct dsa_switch *ds = dp->ds;
 	phy_interface_t mode;
 	struct phylink *pl;
@@ -1685,8 +1686,12 @@ int dsa_port_phylink_create(struct dsa_port *dp)
 		}
 	}
 
-	pl = phylink_create(&dp->pl_config, of_fwnode_handle(dp->dn),
-			    mode, &dsa_port_phylink_mac_ops);
+	mac_ops = &dsa_port_phylink_mac_ops;
+	if (ds->phylink_mac_ops)
+		mac_ops = ds->phylink_mac_ops;
+
+	pl = phylink_create(&dp->pl_config, of_fwnode_handle(dp->dn), mode,
+			    mac_ops);
 	if (IS_ERR(pl)) {
 		pr_err("error creating PHYLINK: %ld\n", PTR_ERR(pl));
 		return PTR_ERR(pl);
@@ -1952,6 +1957,22 @@ static void dsa_shared_port_validate_of(struct dsa_port *dp,
 		dn, dsa_port_is_cpu(dp) ? "CPU" : "DSA", dp->index);
 }
 
+static void dsa_shared_port_link_down(struct dsa_port *dp)
+{
+	struct dsa_switch *ds = dp->ds;
+
+	if (ds->phylink_mac_ops) {
+		if (ds->phylink_mac_ops->mac_link_down)
+			ds->phylink_mac_ops->mac_link_down(&dp->pl_config,
+							   MLO_AN_FIXED,
+							   PHY_INTERFACE_MODE_NA);
+	} else {
+		if (ds->ops->phylink_mac_link_down)
+			ds->ops->phylink_mac_link_down(ds, dp->index,
+				MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
+	}
+}
+
 int dsa_shared_port_link_register_of(struct dsa_port *dp)
 {
 	struct dsa_switch *ds = dp->ds;
@@ -1973,9 +1994,7 @@ int dsa_shared_port_link_register_of(struct dsa_port *dp)
 				 "Skipping phylink registration for %s port %d\n",
 				 dsa_port_is_cpu(dp) ? "CPU" : "DSA", dp->index);
 		} else {
-			if (ds->ops->phylink_mac_link_down)
-				ds->ops->phylink_mac_link_down(ds, port,
-					MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
+			dsa_shared_port_link_down(dp);
 
 			return dsa_shared_port_phylink_register(dp);
 		}
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations
  2024-04-08 11:19 [PATCH net-next 0/3] net: dsa: allow phylink_mac_ops in DSA drivers Russell King (Oracle)
  2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
@ 2024-04-08 11:19 ` Russell King (Oracle)
  2024-04-08 23:45   ` Andrew Lunn
  2024-04-08 23:51   ` Florian Fainelli
  2 siblings, 2 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-08 11:19 UTC (permalink / raw)
  To: Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Florian Fainelli, Jakub Kicinski,
	netdev, Paolo Abeni

Convert mv88e6xxx to provide its own phylink MAC operations, thus
avoiding the shim layer in DSA's port.c

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
---
 drivers/net/dsa/mv88e6xxx/chip.c | 63 ++++++++++++++++++++------------
 1 file changed, 39 insertions(+), 24 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 9ed1821184ec..2ba7cbea451f 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -790,24 +790,27 @@ static void mv88e6xxx_get_caps(struct dsa_switch *ds, int port,
 	}
 }
 
-static struct phylink_pcs *mv88e6xxx_mac_select_pcs(struct dsa_switch *ds,
-						    int port,
-						    phy_interface_t interface)
+static struct phylink_pcs *
+mv88e6xxx_mac_select_pcs(struct phylink_config *config,
+			 phy_interface_t interface)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
 	struct phylink_pcs *pcs = ERR_PTR(-EOPNOTSUPP);
 
 	if (chip->info->ops->pcs_ops)
-		pcs = chip->info->ops->pcs_ops->pcs_select(chip, port,
+		pcs = chip->info->ops->pcs_ops->pcs_select(chip, dp->index,
 							   interface);
 
 	return pcs;
 }
 
-static int mv88e6xxx_mac_prepare(struct dsa_switch *ds, int port,
+static int mv88e6xxx_mac_prepare(struct phylink_config *config,
 				 unsigned int mode, phy_interface_t interface)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
+	int port = dp->index;
 	int err = 0;
 
 	/* In inband mode, the link may come up at any time while the link
@@ -826,11 +829,13 @@ static int mv88e6xxx_mac_prepare(struct dsa_switch *ds, int port,
 	return err;
 }
 
-static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
+static void mv88e6xxx_mac_config(struct phylink_config *config,
 				 unsigned int mode,
 				 const struct phylink_link_state *state)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
+	int port = dp->index;
 	int err = 0;
 
 	mv88e6xxx_reg_lock(chip);
@@ -846,13 +851,15 @@ static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
 	mv88e6xxx_reg_unlock(chip);
 
 	if (err && err != -EOPNOTSUPP)
-		dev_err(ds->dev, "p%d: failed to configure MAC/PCS\n", port);
+		dev_err(chip->dev, "p%d: failed to configure MAC/PCS\n", port);
 }
 
-static int mv88e6xxx_mac_finish(struct dsa_switch *ds, int port,
+static int mv88e6xxx_mac_finish(struct phylink_config *config,
 				unsigned int mode, phy_interface_t interface)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
+	int port = dp->index;
 	int err = 0;
 
 	/* Undo the forced down state above after completing configuration
@@ -876,12 +883,14 @@ static int mv88e6xxx_mac_finish(struct dsa_switch *ds, int port,
 	return err;
 }
 
-static void mv88e6xxx_mac_link_down(struct dsa_switch *ds, int port,
+static void mv88e6xxx_mac_link_down(struct phylink_config *config,
 				    unsigned int mode,
 				    phy_interface_t interface)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
 	const struct mv88e6xxx_ops *ops;
+	int port = dp->index;
 	int err = 0;
 
 	ops = chip->info->ops;
@@ -904,14 +913,16 @@ static void mv88e6xxx_mac_link_down(struct dsa_switch *ds, int port,
 			"p%d: failed to force MAC link down\n", port);
 }
 
-static void mv88e6xxx_mac_link_up(struct dsa_switch *ds, int port,
-				  unsigned int mode, phy_interface_t interface,
+static void mv88e6xxx_mac_link_up(struct phylink_config *config,
 				  struct phy_device *phydev,
+				  unsigned int mode, phy_interface_t interface,
 				  int speed, int duplex,
 				  bool tx_pause, bool rx_pause)
 {
-	struct mv88e6xxx_chip *chip = ds->priv;
+	struct dsa_port *dp = dsa_phylink_to_port(config);
+	struct mv88e6xxx_chip *chip = dp->ds->priv;
 	const struct mv88e6xxx_ops *ops;
+	int port = dp->index;
 	int err = 0;
 
 	ops = chip->info->ops;
@@ -937,7 +948,7 @@ static void mv88e6xxx_mac_link_up(struct dsa_switch *ds, int port,
 	mv88e6xxx_reg_unlock(chip);
 
 	if (err && err != -EOPNOTSUPP)
-		dev_err(ds->dev,
+		dev_err(chip->dev,
 			"p%d: failed to configure MAC link up\n", port);
 }
 
@@ -6918,6 +6929,15 @@ static int mv88e6xxx_crosschip_lag_leave(struct dsa_switch *ds, int sw_index,
 	return err_sync ? : err_pvt;
 }
 
+static const struct phylink_mac_ops mv88e6xxx_phylink_mac_ops = {
+	.mac_select_pcs		= mv88e6xxx_mac_select_pcs,
+	.mac_prepare		= mv88e6xxx_mac_prepare,
+	.mac_config		= mv88e6xxx_mac_config,
+	.mac_finish		= mv88e6xxx_mac_finish,
+	.mac_link_down		= mv88e6xxx_mac_link_down,
+	.mac_link_up		= mv88e6xxx_mac_link_up,
+};
+
 static const struct dsa_switch_ops mv88e6xxx_switch_ops = {
 	.get_tag_protocol	= mv88e6xxx_get_tag_protocol,
 	.change_tag_protocol	= mv88e6xxx_change_tag_protocol,
@@ -6926,12 +6946,6 @@ static const struct dsa_switch_ops mv88e6xxx_switch_ops = {
 	.port_setup		= mv88e6xxx_port_setup,
 	.port_teardown		= mv88e6xxx_port_teardown,
 	.phylink_get_caps	= mv88e6xxx_get_caps,
-	.phylink_mac_select_pcs	= mv88e6xxx_mac_select_pcs,
-	.phylink_mac_prepare	= mv88e6xxx_mac_prepare,
-	.phylink_mac_config	= mv88e6xxx_mac_config,
-	.phylink_mac_finish	= mv88e6xxx_mac_finish,
-	.phylink_mac_link_down	= mv88e6xxx_mac_link_down,
-	.phylink_mac_link_up	= mv88e6xxx_mac_link_up,
 	.get_strings		= mv88e6xxx_get_strings,
 	.get_ethtool_stats	= mv88e6xxx_get_ethtool_stats,
 	.get_eth_mac_stats	= mv88e6xxx_get_eth_mac_stats,
@@ -7000,6 +7014,7 @@ static int mv88e6xxx_register_switch(struct mv88e6xxx_chip *chip)
 	ds->priv = chip;
 	ds->dev = dev;
 	ds->ops = &mv88e6xxx_switch_ops;
+	ds->phylink_mac_ops = &mv88e6xxx_phylink_mac_ops;
 	ds->ageing_time_min = chip->info->age_time_coeff;
 	ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port()
  2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
@ 2024-04-08 23:41   ` Andrew Lunn
  2024-04-08 23:50   ` Florian Fainelli
  1 sibling, 0 replies; 17+ messages in thread
From: Andrew Lunn @ 2024-04-08 23:41 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Vladimir Oltean, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Mon, Apr 08, 2024 at 12:19:19PM +0100, Russell King (Oracle) wrote:
> We convert from a phylink_config struct to a dsa_port struct in many
> places, let's provide a helper for this.
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
@ 2024-04-08 23:45   ` Andrew Lunn
  2024-04-08 23:51   ` Florian Fainelli
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 17+ messages in thread
From: Andrew Lunn @ 2024-04-08 23:45 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Vladimir Oltean, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Mon, Apr 08, 2024 at 12:19:25PM +0100, Russell King (Oracle) wrote:
> Rather than having a shim for each and every phylink MAC operation,
> allow DSA switch drivers to provide their own ops structure.
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations
  2024-04-08 11:19 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations Russell King (Oracle)
@ 2024-04-08 23:45   ` Andrew Lunn
  2024-04-08 23:51   ` Florian Fainelli
  1 sibling, 0 replies; 17+ messages in thread
From: Andrew Lunn @ 2024-04-08 23:45 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Vladimir Oltean, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Mon, Apr 08, 2024 at 12:19:30PM +0100, Russell King (Oracle) wrote:
> Convert mv88e6xxx to provide its own phylink MAC operations, thus
> avoiding the shim layer in DSA's port.c
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port()
  2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
  2024-04-08 23:41   ` Andrew Lunn
@ 2024-04-08 23:50   ` Florian Fainelli
  1 sibling, 0 replies; 17+ messages in thread
From: Florian Fainelli @ 2024-04-08 23:50 UTC (permalink / raw)
  To: Russell King (Oracle), Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni

On 4/8/24 04:19, Russell King (Oracle) wrote:
> We convert from a phylink_config struct to a dsa_port struct in many
> places, let's provide a helper for this.
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
-- 
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
  2024-04-08 23:45   ` Andrew Lunn
@ 2024-04-08 23:51   ` Florian Fainelli
  2024-04-09  3:15   ` kernel test robot
  2024-04-09 12:37   ` Vladimir Oltean
  3 siblings, 0 replies; 17+ messages in thread
From: Florian Fainelli @ 2024-04-08 23:51 UTC (permalink / raw)
  To: Russell King (Oracle), Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni

On 4/8/24 04:19, Russell King (Oracle) wrote:
> Rather than having a shim for each and every phylink MAC operation,
> allow DSA switch drivers to provide their own ops structure.
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
-- 
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations
  2024-04-08 11:19 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations Russell King (Oracle)
  2024-04-08 23:45   ` Andrew Lunn
@ 2024-04-08 23:51   ` Florian Fainelli
  1 sibling, 0 replies; 17+ messages in thread
From: Florian Fainelli @ 2024-04-08 23:51 UTC (permalink / raw)
  To: Russell King (Oracle), Andrew Lunn, Vladimir Oltean
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, netdev, Paolo Abeni

On 4/8/24 04:19, Russell King (Oracle) wrote:
> Convert mv88e6xxx to provide its own phylink MAC operations, thus
> avoiding the shim layer in DSA's port.c
> 
> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
-- 
Florian


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
  2024-04-08 23:45   ` Andrew Lunn
  2024-04-08 23:51   ` Florian Fainelli
@ 2024-04-09  3:15   ` kernel test robot
  2024-04-09  8:04     ` Russell King (Oracle)
  2024-04-09 12:37   ` Vladimir Oltean
  3 siblings, 1 reply; 17+ messages in thread
From: kernel test robot @ 2024-04-09  3:15 UTC (permalink / raw)
  To: Russell King (Oracle), Andrew Lunn, Vladimir Oltean
  Cc: llvm, oe-kbuild-all, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

Hi Russell,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net-next/main]

url:    https://github.com/intel-lab-lkp/linux/commits/Russell-King-Oracle/net-dsa-introduce-dsa_phylink_to_port/20240408-232316
base:   net-next/main
patch link:    https://lore.kernel.org/r/E1rtn25-0065p0-2C%40rmk-PC.armlinux.org.uk
patch subject: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240409/202404091147.pdi8izJ3-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240409/202404091147.pdi8izJ3-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404091147.pdi8izJ3-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> net/dsa/port.c:1981:6: warning: unused variable 'port' [-Wunused-variable]
           int port = dp->index;
               ^
   1 warning generated.


vim +/port +1981 net/dsa/port.c

3a506cb7012a98 Russell King (Oracle  2024-04-08  1975) 
770375ff331111 Vladimir Oltean       2022-08-18  1976  int dsa_shared_port_link_register_of(struct dsa_port *dp)
57ab1ca2159717 Vivien Didelot        2017-10-26  1977  {
0e27921816ad99 Ioana Ciornei         2019-05-28  1978  	struct dsa_switch *ds = dp->ds;
e09e9873152e3f Vladimir Oltean       2022-08-18  1979  	bool missing_link_description;
e09e9873152e3f Vladimir Oltean       2022-08-18  1980  	bool missing_phy_mode;
3be98b2d5fbca3 Andrew Lunn           2020-04-14 @1981  	int port = dp->index;
0e27921816ad99 Ioana Ciornei         2019-05-28  1982  
e09e9873152e3f Vladimir Oltean       2022-08-18  1983  	dsa_shared_port_validate_of(dp, &missing_phy_mode,
e09e9873152e3f Vladimir Oltean       2022-08-18  1984  				    &missing_link_description);
e09e9873152e3f Vladimir Oltean       2022-08-18  1985  
e09e9873152e3f Vladimir Oltean       2022-08-18  1986  	if ((missing_phy_mode || missing_link_description) &&
e09e9873152e3f Vladimir Oltean       2022-08-18  1987  	    !of_device_compatible_match(ds->dev->of_node,
e09e9873152e3f Vladimir Oltean       2022-08-18  1988  					dsa_switches_apply_workarounds))
e09e9873152e3f Vladimir Oltean       2022-08-18  1989  		return -EINVAL;
e09e9873152e3f Vladimir Oltean       2022-08-18  1990  
a20f997010c4ec Andrew Lunn           2020-03-11  1991  	if (!ds->ops->adjust_link) {
e09e9873152e3f Vladimir Oltean       2022-08-18  1992  		if (missing_link_description) {
e09e9873152e3f Vladimir Oltean       2022-08-18  1993  			dev_warn(ds->dev,
e09e9873152e3f Vladimir Oltean       2022-08-18  1994  				 "Skipping phylink registration for %s port %d\n",
e09e9873152e3f Vladimir Oltean       2022-08-18  1995  				 dsa_port_is_cpu(dp) ? "CPU" : "DSA", dp->index);
e09e9873152e3f Vladimir Oltean       2022-08-18  1996  		} else {
3a506cb7012a98 Russell King (Oracle  2024-04-08  1997) 			dsa_shared_port_link_down(dp);
e09e9873152e3f Vladimir Oltean       2022-08-18  1998  
770375ff331111 Vladimir Oltean       2022-08-18  1999  			return dsa_shared_port_phylink_register(dp);
3be98b2d5fbca3 Andrew Lunn           2020-04-14  2000  		}
a20f997010c4ec Andrew Lunn           2020-03-11  2001  		return 0;
a20f997010c4ec Andrew Lunn           2020-03-11  2002  	}
0e27921816ad99 Ioana Ciornei         2019-05-28  2003  
0e27921816ad99 Ioana Ciornei         2019-05-28  2004  	dev_warn(ds->dev,
0e27921816ad99 Ioana Ciornei         2019-05-28  2005  		 "Using legacy PHYLIB callbacks. Please migrate to PHYLINK!\n");
0e27921816ad99 Ioana Ciornei         2019-05-28  2006  
33615367f378fe Sebastian Reichel     2018-01-23  2007  	if (of_phy_is_fixed_link(dp->dn))
770375ff331111 Vladimir Oltean       2022-08-18  2008  		return dsa_shared_port_fixed_link_register_of(dp);
33615367f378fe Sebastian Reichel     2018-01-23  2009  	else
770375ff331111 Vladimir Oltean       2022-08-18  2010  		return dsa_shared_port_setup_phy_of(dp, true);
33615367f378fe Sebastian Reichel     2018-01-23  2011  }
57ab1ca2159717 Vivien Didelot        2017-10-26  2012  

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-09  3:15   ` kernel test robot
@ 2024-04-09  8:04     ` Russell King (Oracle)
  0 siblings, 0 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-09  8:04 UTC (permalink / raw)
  To: kernel test robot
  Cc: Andrew Lunn, Vladimir Oltean, llvm, oe-kbuild-all, Eric Dumazet,
	Florian Fainelli, Jakub Kicinski, netdev, Paolo Abeni

On Tue, Apr 09, 2024 at 11:15:01AM +0800, kernel test robot wrote:
> All warnings (new ones prefixed by >>):
> 
> >> net/dsa/port.c:1981:6: warning: unused variable 'port' [-Wunused-variable]
>            int port = dp->index;
>                ^
>    1 warning generated.

Sigh... I don't get this warning when I build it. I guess that's because
unused variable warnings are normally turned off. I'll respin dropping
this.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
                     ` (2 preceding siblings ...)
  2024-04-09  3:15   ` kernel test robot
@ 2024-04-09 12:37   ` Vladimir Oltean
  2024-04-09 15:33     ` Vladimir Oltean
  3 siblings, 1 reply; 17+ messages in thread
From: Vladimir Oltean @ 2024-04-09 12:37 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Mon, Apr 08, 2024 at 12:19:25PM +0100, Russell King (Oracle) wrote:
> +static void dsa_shared_port_link_down(struct dsa_port *dp)
> +{
> +	struct dsa_switch *ds = dp->ds;
> +
> +	if (ds->phylink_mac_ops) {
> +		if (ds->phylink_mac_ops->mac_link_down)
> +			ds->phylink_mac_ops->mac_link_down(&dp->pl_config,
> +							   MLO_AN_FIXED,
> +							   PHY_INTERFACE_MODE_NA);
> +	} else {
> +		if (ds->ops->phylink_mac_link_down)
> +			ds->ops->phylink_mac_link_down(ds, dp->index,
> +				MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
> +	}
> +}

Please roll this other change into the patch when respinning:

else {
	if { }
}

becomes

else if {}

Also please align the arguments of the phylink_mac_link_down() call with
the open parenthesis.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-09 12:37   ` Vladimir Oltean
@ 2024-04-09 15:33     ` Vladimir Oltean
  2024-04-09 16:29       ` Russell King (Oracle)
  0 siblings, 1 reply; 17+ messages in thread
From: Vladimir Oltean @ 2024-04-09 15:33 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Tue, Apr 09, 2024 at 03:37:31PM +0300, Vladimir Oltean wrote:
> On Mon, Apr 08, 2024 at 12:19:25PM +0100, Russell King (Oracle) wrote:
> > +static void dsa_shared_port_link_down(struct dsa_port *dp)
> > +{
> > +	struct dsa_switch *ds = dp->ds;
> > +
> > +	if (ds->phylink_mac_ops) {
> > +		if (ds->phylink_mac_ops->mac_link_down)
> > +			ds->phylink_mac_ops->mac_link_down(&dp->pl_config,
> > +							   MLO_AN_FIXED,
> > +							   PHY_INTERFACE_MODE_NA);
> > +	} else {
> > +		if (ds->ops->phylink_mac_link_down)
> > +			ds->ops->phylink_mac_link_down(ds, dp->index,
> > +				MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
> > +	}
> > +}
> 
> Please roll this other change into the patch when respinning:
> 
> else {
> 	if { }
> }
> 
> becomes
> 
> else if {}
> 
> Also please align the arguments of the phylink_mac_link_down() call with
> the open parenthesis.

Something like this:

static void dsa_shared_port_link_down(struct dsa_port *dp)
{
	struct dsa_switch *ds = dp->ds;

	if (ds->phylink_mac_ops && ds->phylink_mac_ops->mac_link_down) {
		ds->phylink_mac_ops->mac_link_down(&dp->pl_config, MLO_AN_FIXED,
						   PHY_INTERFACE_MODE_NA);
	} else if (ds->ops->phylink_mac_link_down) {
		ds->ops->phylink_mac_link_down(ds, dp->index, MLO_AN_FIXED,
					       PHY_INTERFACE_MODE_NA);
	}
}

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-09 15:33     ` Vladimir Oltean
@ 2024-04-09 16:29       ` Russell King (Oracle)
  2024-04-09 16:52         ` Vladimir Oltean
  0 siblings, 1 reply; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-09 16:29 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Tue, Apr 09, 2024 at 06:33:46PM +0300, Vladimir Oltean wrote:
> On Tue, Apr 09, 2024 at 03:37:31PM +0300, Vladimir Oltean wrote:
> > On Mon, Apr 08, 2024 at 12:19:25PM +0100, Russell King (Oracle) wrote:
> > > +static void dsa_shared_port_link_down(struct dsa_port *dp)
> > > +{
> > > +	struct dsa_switch *ds = dp->ds;
> > > +
> > > +	if (ds->phylink_mac_ops) {
> > > +		if (ds->phylink_mac_ops->mac_link_down)
> > > +			ds->phylink_mac_ops->mac_link_down(&dp->pl_config,
> > > +							   MLO_AN_FIXED,
> > > +							   PHY_INTERFACE_MODE_NA);
> > > +	} else {
> > > +		if (ds->ops->phylink_mac_link_down)
> > > +			ds->ops->phylink_mac_link_down(ds, dp->index,
> > > +				MLO_AN_FIXED, PHY_INTERFACE_MODE_NA);
> > > +	}
> > > +}
> > 
> > Please roll this other change into the patch when respinning:
> > 
> > else {
> > 	if { }
> > }
> > 
> > becomes
> > 
> > else if {}

This would destroy the symmetry that I think aids readability. I did
consider it at the time and decided against it.

> Something like this:
> 
> static void dsa_shared_port_link_down(struct dsa_port *dp)
> {
> 	struct dsa_switch *ds = dp->ds;
> 
> 	if (ds->phylink_mac_ops && ds->phylink_mac_ops->mac_link_down) {
> 		ds->phylink_mac_ops->mac_link_down(&dp->pl_config, MLO_AN_FIXED,
> 						   PHY_INTERFACE_MODE_NA);
> 	} else if (ds->ops->phylink_mac_link_down) {
> 		ds->ops->phylink_mac_link_down(ds, dp->index, MLO_AN_FIXED,
> 					       PHY_INTERFACE_MODE_NA);
> 	}

This changes the logic - it allows driver authors to provide the
MAC operations, omit the mac_link_down() op _and_ an
ops->phylink_mac_link_down() function. This could lead to buggy
drivers since this will only happen in this path and none of the
others.

I want this to be an "either provide phylink_mac_ops, and thus
none of the phylink_mac_* ops in dsa_switch_ops will be called" or
"don't provide phylink_mac_ops and the phylink_mac_* ops in
dsa_switch_ops will be called". It's then completely clear cut
that it's one or the other, whereas the code above makes it
unclear.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-09 16:29       ` Russell King (Oracle)
@ 2024-04-09 16:52         ` Vladimir Oltean
  2024-04-09 18:22           ` Russell King (Oracle)
  0 siblings, 1 reply; 17+ messages in thread
From: Vladimir Oltean @ 2024-04-09 16:52 UTC (permalink / raw)
  To: Russell King (Oracle)
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Tue, Apr 09, 2024 at 05:29:23PM +0100, Russell King (Oracle) wrote:
> This changes the logic - it allows driver authors to provide the
> MAC operations, omit the mac_link_down() op _and_ an
> ops->phylink_mac_link_down() function. This could lead to buggy
> drivers since this will only happen in this path and none of the
> others.
> 
> I want this to be an "either provide phylink_mac_ops, and thus
> none of the phylink_mac_* ops in dsa_switch_ops will be called" or
> "don't provide phylink_mac_ops and the phylink_mac_* ops in
> dsa_switch_ops will be called". It's then completely clear cut
> that it's one or the other, whereas the code above makes it
> unclear.

If you want for the API transition to be self-documenting and clear,
it would be good to do that validation separately and more comprehensively
rather than just a fall-through for one single operation here.

If phylink_mac_link_ops is provided, the following ds->ops methods are
obsoleted and can't be provided at the same time (fail probing otherwise):

- phylink_mac_select_pcs()
- phylink_mac_prepare()
- phylink_mac_config()
- phylink_mac_finish()
- phylink_mac_link_down()
- phylink_mac_link_up()

Hopefully it makes it more clear that the following are _not_ obsoleted
by the dedicated phylink mac_ops:

- phylink_get_caps()
- phylink_fixed_state()

Then (after this validation), the simplified
"if (ops && ops->mac_link_down) else (ds->ops->phylink_mac_link_down)"
would be equivalent, because we've errored out on the case which has a
mix of old and new API.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops
  2024-04-09 16:52         ` Vladimir Oltean
@ 2024-04-09 18:22           ` Russell King (Oracle)
  0 siblings, 0 replies; 17+ messages in thread
From: Russell King (Oracle) @ 2024-04-09 18:22 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: Andrew Lunn, David S. Miller, Eric Dumazet, Florian Fainelli,
	Jakub Kicinski, netdev, Paolo Abeni

On Tue, Apr 09, 2024 at 07:52:30PM +0300, Vladimir Oltean wrote:
> On Tue, Apr 09, 2024 at 05:29:23PM +0100, Russell King (Oracle) wrote:
> > This changes the logic - it allows driver authors to provide the
> > MAC operations, omit the mac_link_down() op _and_ an
> > ops->phylink_mac_link_down() function. This could lead to buggy
> > drivers since this will only happen in this path and none of the
> > others.
> > 
> > I want this to be an "either provide phylink_mac_ops, and thus
> > none of the phylink_mac_* ops in dsa_switch_ops will be called" or
> > "don't provide phylink_mac_ops and the phylink_mac_* ops in
> > dsa_switch_ops will be called". It's then completely clear cut
> > that it's one or the other, whereas the code above makes it
> > unclear.
> 
> If you want for the API transition to be self-documenting and clear,
> it would be good to do that validation separately and more comprehensively
> rather than just a fall-through for one single operation here.
> 
> If phylink_mac_link_ops is provided, the following ds->ops methods are
> obsoleted and can't be provided at the same time (fail probing otherwise):
> 
> - phylink_mac_select_pcs()
> - phylink_mac_prepare()
> - phylink_mac_config()
> - phylink_mac_finish()
> - phylink_mac_link_down()
> - phylink_mac_link_up()
> 
> Hopefully it makes it more clear that the following are _not_ obsoleted
> by the dedicated phylink mac_ops:
> 
> - phylink_get_caps()
> - phylink_fixed_state()
> 
> Then (after this validation), the simplified
> "if (ops && ops->mac_link_down) else (ds->ops->phylink_mac_link_down)"
> would be equivalent, because we've errored out on the case which has a
> mix of old and new API.

Okay. However, I can't predict when I'll get around to doing these
changes as my time is very limited over this week and next week - so
may be right before the merge window is due.

Maybe we should've done that for the ops->adjust_link vs
ops->phylink_mac_link_down/ops->phylink_mac_link_up as well.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2024-04-09 18:22 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-08 11:19 [PATCH net-next 0/3] net: dsa: allow phylink_mac_ops in DSA drivers Russell King (Oracle)
2024-04-08 11:19 ` [PATCH net-next 1/3] net: dsa: introduce dsa_phylink_to_port() Russell King (Oracle)
2024-04-08 23:41   ` Andrew Lunn
2024-04-08 23:50   ` Florian Fainelli
2024-04-08 11:19 ` [PATCH net-next 2/3] net: dsa: allow DSA switch drivers to provide their own phylink mac ops Russell King (Oracle)
2024-04-08 23:45   ` Andrew Lunn
2024-04-08 23:51   ` Florian Fainelli
2024-04-09  3:15   ` kernel test robot
2024-04-09  8:04     ` Russell King (Oracle)
2024-04-09 12:37   ` Vladimir Oltean
2024-04-09 15:33     ` Vladimir Oltean
2024-04-09 16:29       ` Russell King (Oracle)
2024-04-09 16:52         ` Vladimir Oltean
2024-04-09 18:22           ` Russell King (Oracle)
2024-04-08 11:19 ` [PATCH net-next 3/3] net: dsa: mv88e6xxx: provide own phylink MAC operations Russell King (Oracle)
2024-04-08 23:45   ` Andrew Lunn
2024-04-08 23:51   ` Florian Fainelli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.