All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA
@ 2019-06-08 13:03 Vladimir Oltean
  2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
                   ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Vladimir Oltean @ 2019-06-08 13:03 UTC (permalink / raw)
  To: f.fainelli, vivien.didelot, andrew, davem; +Cc: netdev, Vladimir Oltean

This patchset implements phylink_mac_link_up and phylink_mac_link_down,
while also removing the code that was modifying the EGRESS and INGRESS
MAC settings for STP and replacing them with the "inhibit TX"
functionality.

Vladimir Oltean (4):
  net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros
  net: dsa: sja1105: Update some comments about PHYLIB
  net: dsa: sja1105: Export the sja1105_inhibit_tx function
  net: dsa: sja1105: Rethink the PHYLINK callbacks

 drivers/net/dsa/sja1105/Kconfig        |   2 +-
 drivers/net/dsa/sja1105/sja1105.h      |   2 +
 drivers/net/dsa/sja1105/sja1105_main.c | 138 +++++++++----------------
 drivers/net/dsa/sja1105/sja1105_spi.c  |  14 +--
 4 files changed, 62 insertions(+), 94 deletions(-)

-- 
2.17.1


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

* [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros
  2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
@ 2019-06-08 13:03 ` Vladimir Oltean
  2019-06-08 18:52   ` Andrew Lunn
  2019-06-09  2:52   ` Florian Fainelli
  2019-06-08 13:03 ` [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB Vladimir Oltean
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 14+ messages in thread
From: Vladimir Oltean @ 2019-06-08 13:03 UTC (permalink / raw)
  To: f.fainelli, vivien.didelot, andrew, davem; +Cc: netdev, Vladimir Oltean

This is a cosmetic patch that replaces the link speed numbers used in
the driver with the corresponding ethtool macros.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
Suggested-by: Andrew Lunn <andrew@lunn.ch>
---
 drivers/net/dsa/sja1105/sja1105_main.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
index 15bee785fd6d..580568922f35 100644
--- a/drivers/net/dsa/sja1105/sja1105_main.c
+++ b/drivers/net/dsa/sja1105/sja1105_main.c
@@ -689,12 +689,12 @@ static int sja1105_parse_dt(struct sja1105_private *priv,
 	return rc;
 }
 
-/* Convert back and forth MAC speed from Mbps to SJA1105 encoding */
+/* Convert link speed from SJA1105 to ethtool encoding */
 static int sja1105_speed[] = {
-	[SJA1105_SPEED_AUTO]     = 0,
-	[SJA1105_SPEED_10MBPS]   = 10,
-	[SJA1105_SPEED_100MBPS]  = 100,
-	[SJA1105_SPEED_1000MBPS] = 1000,
+	[SJA1105_SPEED_AUTO]		= SPEED_UNKNOWN,
+	[SJA1105_SPEED_10MBPS]		= SPEED_10,
+	[SJA1105_SPEED_100MBPS]		= SPEED_100,
+	[SJA1105_SPEED_1000MBPS]	= SPEED_1000,
 };
 
 /* Set link speed and enable/disable traffic I/O in the MAC configuration
@@ -720,17 +720,17 @@ static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
 	mac = priv->static_config.tables[BLK_IDX_MAC_CONFIG].entries;
 
 	switch (speed_mbps) {
-	case 0:
+	case SPEED_UNKNOWN:
 		/* No speed update requested */
 		speed = SJA1105_SPEED_AUTO;
 		break;
-	case 10:
+	case SPEED_10:
 		speed = SJA1105_SPEED_10MBPS;
 		break;
-	case 100:
+	case SPEED_100:
 		speed = SJA1105_SPEED_100MBPS;
 		break;
-	case 1000:
+	case SPEED_1000:
 		speed = SJA1105_SPEED_1000MBPS;
 		break;
 	default:
@@ -786,7 +786,7 @@ static void sja1105_mac_config(struct dsa_switch *ds, int port,
 	struct sja1105_private *priv = ds->priv;
 
 	if (!state->link)
-		sja1105_adjust_port_config(priv, port, 0, false);
+		sja1105_adjust_port_config(priv, port, SPEED_UNKNOWN, false);
 	else
 		sja1105_adjust_port_config(priv, port, state->speed, true);
 }
@@ -1311,7 +1311,7 @@ static int sja1105_static_config_reload(struct sja1105_private *priv)
 		goto out;
 
 	for (i = 0; i < SJA1105_NUM_PORTS; i++) {
-		bool enabled = (speed_mbps[i] != 0);
+		bool enabled = (speed_mbps[i] != SPEED_UNKNOWN);
 
 		if (i != dsa_upstream_port(priv->ds, i))
 			sja1105_bridge_stp_state_set(priv->ds, i, stp_state[i]);
-- 
2.17.1


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

* [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB
  2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
  2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
@ 2019-06-08 13:03 ` Vladimir Oltean
  2019-06-08 18:53   ` Andrew Lunn
  2019-06-09  2:53   ` Florian Fainelli
  2019-06-08 13:03 ` [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function Vladimir Oltean
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 14+ messages in thread
From: Vladimir Oltean @ 2019-06-08 13:03 UTC (permalink / raw)
  To: f.fainelli, vivien.didelot, andrew, davem; +Cc: netdev, Vladimir Oltean

Since the driver is now using PHYLINK exclusively, it makes sense to
remove all references to it and replace them with PHYLINK.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
---
 drivers/net/dsa/sja1105/Kconfig        | 2 +-
 drivers/net/dsa/sja1105/sja1105_main.c | 6 ++----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/net/dsa/sja1105/Kconfig b/drivers/net/dsa/sja1105/Kconfig
index 049cea8240e4..105e8d3e380e 100644
--- a/drivers/net/dsa/sja1105/Kconfig
+++ b/drivers/net/dsa/sja1105/Kconfig
@@ -9,7 +9,7 @@ tristate "NXP SJA1105 Ethernet switch family support"
 	  This is the driver for the NXP SJA1105 automotive Ethernet switch
 	  family. These are 5-port devices and are managed over an SPI
 	  interface. Probing is handled based on OF bindings and so is the
-	  linkage to phylib. The driver supports the following revisions:
+	  linkage to PHYLINK. The driver supports the following revisions:
 	    - SJA1105E (Gen. 1, No TT-Ethernet)
 	    - SJA1105T (Gen. 1, TT-Ethernet)
 	    - SJA1105P (Gen. 2, No SGMII, No TT-Ethernet)
diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
index 580568922f35..d7f4dbfdb15d 100644
--- a/drivers/net/dsa/sja1105/sja1105_main.c
+++ b/drivers/net/dsa/sja1105/sja1105_main.c
@@ -70,8 +70,7 @@ static int sja1105_init_mac_settings(struct sja1105_private *priv)
 		/* Keep standard IFG of 12 bytes on egress. */
 		.ifg = 0,
 		/* Always put the MAC speed in automatic mode, where it can be
-		 * retrieved from the PHY object through phylib and
-		 * sja1105_adjust_port_config.
+		 * adjusted at runtime by PHYLINK.
 		 */
 		.speed = SJA1105_SPEED_AUTO,
 		/* No static correction for 1-step 1588 events */
@@ -116,7 +115,6 @@ static int sja1105_init_mac_settings(struct sja1105_private *priv)
 	if (!table->entries)
 		return -ENOMEM;
 
-	/* Override table based on phylib DT bindings */
 	table->entry_count = SJA1105_NUM_PORTS;
 
 	mac = table->entries;
@@ -157,7 +155,7 @@ static int sja1105_init_mii_settings(struct sja1105_private *priv,
 	if (!table->entries)
 		return -ENOMEM;
 
-	/* Override table based on phylib DT bindings */
+	/* Override table based on PHYLINK DT bindings */
 	table->entry_count = SJA1105_MAX_XMII_PARAMS_COUNT;
 
 	mii = table->entries;
-- 
2.17.1


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

* [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function
  2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
  2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
  2019-06-08 13:03 ` [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB Vladimir Oltean
@ 2019-06-08 13:03 ` Vladimir Oltean
  2019-06-08 18:54   ` Andrew Lunn
  2019-06-09  2:54   ` Florian Fainelli
  2019-06-08 13:03 ` [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks Vladimir Oltean
  2019-06-10  2:59 ` [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA David Miller
  4 siblings, 2 replies; 14+ messages in thread
From: Vladimir Oltean @ 2019-06-08 13:03 UTC (permalink / raw)
  To: f.fainelli, vivien.didelot, andrew, davem; +Cc: netdev, Vladimir Oltean

This will be used to stop egress traffic in .phylink_mac_link_up.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
---
 drivers/net/dsa/sja1105/sja1105.h     |  2 ++
 drivers/net/dsa/sja1105/sja1105_spi.c | 14 ++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/net/dsa/sja1105/sja1105.h b/drivers/net/dsa/sja1105/sja1105.h
index 38b6c7c7db86..ed66d00eb394 100644
--- a/drivers/net/dsa/sja1105/sja1105.h
+++ b/drivers/net/dsa/sja1105/sja1105.h
@@ -138,6 +138,8 @@ int sja1105_spi_send_long_packed_buf(const struct sja1105_private *priv,
 				     sja1105_spi_rw_mode_t rw, u64 base_addr,
 				     void *packed_buf, u64 buf_len);
 int sja1105_static_config_upload(struct sja1105_private *priv);
+int sja1105_inhibit_tx(const struct sja1105_private *priv,
+		       unsigned long port_bitmap, bool tx_inhibited);
 
 extern struct sja1105_info sja1105e_info;
 extern struct sja1105_info sja1105t_info;
diff --git a/drivers/net/dsa/sja1105/sja1105_spi.c b/drivers/net/dsa/sja1105/sja1105_spi.c
index d729a0f0b28e..d7ff74259b31 100644
--- a/drivers/net/dsa/sja1105/sja1105_spi.c
+++ b/drivers/net/dsa/sja1105/sja1105_spi.c
@@ -285,20 +285,22 @@ static int sja1105_cold_reset(const struct sja1105_private *priv)
 	return priv->info->reset_cmd(priv, &reset);
 }
 
-static int sja1105_inhibit_tx(const struct sja1105_private *priv,
-			      const unsigned long *port_bitmap)
+int sja1105_inhibit_tx(const struct sja1105_private *priv,
+		       unsigned long port_bitmap, bool tx_inhibited)
 {
 	const struct sja1105_regs *regs = priv->info->regs;
 	u64 inhibit_cmd;
-	int port, rc;
+	int rc;
 
 	rc = sja1105_spi_send_int(priv, SPI_READ, regs->port_control,
 				  &inhibit_cmd, SJA1105_SIZE_PORT_CTRL);
 	if (rc < 0)
 		return rc;
 
-	for_each_set_bit(port, port_bitmap, SJA1105_NUM_PORTS)
-		inhibit_cmd |= BIT(port);
+	if (tx_inhibited)
+		inhibit_cmd |= port_bitmap;
+	else
+		inhibit_cmd &= ~port_bitmap;
 
 	return sja1105_spi_send_int(priv, SPI_WRITE, regs->port_control,
 				    &inhibit_cmd, SJA1105_SIZE_PORT_CTRL);
@@ -415,7 +417,7 @@ int sja1105_static_config_upload(struct sja1105_private *priv)
 	 * Tx on all ports and waiting for current packet to drain.
 	 * Otherwise, the PHY will see an unterminated Ethernet packet.
 	 */
-	rc = sja1105_inhibit_tx(priv, &port_bitmap);
+	rc = sja1105_inhibit_tx(priv, port_bitmap, true);
 	if (rc < 0) {
 		dev_err(dev, "Failed to inhibit Tx on ports\n");
 		return -ENXIO;
-- 
2.17.1


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

* [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks
  2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
                   ` (2 preceding siblings ...)
  2019-06-08 13:03 ` [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function Vladimir Oltean
@ 2019-06-08 13:03 ` Vladimir Oltean
  2019-06-08 18:57   ` Andrew Lunn
  2019-06-09  2:55   ` Florian Fainelli
  2019-06-10  2:59 ` [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA David Miller
  4 siblings, 2 replies; 14+ messages in thread
From: Vladimir Oltean @ 2019-06-08 13:03 UTC (permalink / raw)
  To: f.fainelli, vivien.didelot, andrew, davem; +Cc: netdev, Vladimir Oltean

The first fact that needs to be stated is that the per-MAC settings in
SJA1105 called EGRESS and INGRESS do *not* disable egress and ingress on
the MAC. They only prevent non-link-local traffic from being
sent/received on this port.

So instead of having .phylink_mac_config essentially mess with the STP
state and force it to DISABLED/BLOCKING (which also brings useless
complications in sja1105_static_config_reload), simply add the
.phylink_mac_link_down and .phylink_mac_link_up callbacks which inhibit
TX at the MAC level, while leaving RX essentially enabled.

Also stop from trying to put the link down in .phylink_mac_config, which
is incorrect.

Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
---
 drivers/net/dsa/sja1105/sja1105_main.c | 114 +++++++++----------------
 1 file changed, 40 insertions(+), 74 deletions(-)

diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
index d7f4dbfdb15d..56b357a421de 100644
--- a/drivers/net/dsa/sja1105/sja1105_main.c
+++ b/drivers/net/dsa/sja1105/sja1105_main.c
@@ -695,18 +695,10 @@ static int sja1105_speed[] = {
 	[SJA1105_SPEED_1000MBPS]	= SPEED_1000,
 };
 
-/* Set link speed and enable/disable traffic I/O in the MAC configuration
- * for a specific port.
- *
- * @speed_mbps: If 0, leave the speed unchanged, else adapt MAC to PHY speed.
- * @enabled: Manage Rx and Tx settings for this port. If false, overrides the
- *	     settings from the STP state, but not persistently (does not
- *	     overwrite the static MAC info for this port).
- */
+/* Set link speed in the MAC configuration for a specific port. */
 static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
-				      int speed_mbps, bool enabled)
+				      int speed_mbps)
 {
-	struct sja1105_mac_config_entry dyn_mac;
 	struct sja1105_xmii_params_entry *mii;
 	struct sja1105_mac_config_entry *mac;
 	struct device *dev = priv->ds->dev;
@@ -714,8 +706,14 @@ static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
 	sja1105_speed_t speed;
 	int rc;
 
-	mii = priv->static_config.tables[BLK_IDX_XMII_PARAMS].entries;
+	/* On P/Q/R/S, one can read from the device via the MAC reconfiguration
+	 * tables. On E/T, MAC reconfig tables are not readable, only writable.
+	 * We have to *know* what the MAC looks like.  For the sake of keeping
+	 * the code common, we'll use the static configuration tables as a
+	 * reasonable approximation for both E/T and P/Q/R/S.
+	 */
 	mac = priv->static_config.tables[BLK_IDX_MAC_CONFIG].entries;
+	mii = priv->static_config.tables[BLK_IDX_XMII_PARAMS].entries;
 
 	switch (speed_mbps) {
 	case SPEED_UNKNOWN:
@@ -736,26 +734,16 @@ static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
 		return -EINVAL;
 	}
 
-	/* If requested, overwrite SJA1105_SPEED_AUTO from the static MAC
-	 * configuration table, since this will be used for the clocking setup,
-	 * and we no longer need to store it in the static config (already told
-	 * hardware we want auto during upload phase).
+	/* Overwrite SJA1105_SPEED_AUTO from the static MAC configuration
+	 * table, since this will be used for the clocking setup, and we no
+	 * longer need to store it in the static config (already told hardware
+	 * we want auto during upload phase).
 	 */
 	mac[port].speed = speed;
 
-	/* On P/Q/R/S, one can read from the device via the MAC reconfiguration
-	 * tables. On E/T, MAC reconfig tables are not readable, only writable.
-	 * We have to *know* what the MAC looks like.  For the sake of keeping
-	 * the code common, we'll use the static configuration tables as a
-	 * reasonable approximation for both E/T and P/Q/R/S.
-	 */
-	dyn_mac = mac[port];
-	dyn_mac.ingress = enabled && mac[port].ingress;
-	dyn_mac.egress  = enabled && mac[port].egress;
-
 	/* Write to the dynamic reconfiguration tables */
-	rc = sja1105_dynamic_config_write(priv, BLK_IDX_MAC_CONFIG,
-					  port, &dyn_mac, true);
+	rc = sja1105_dynamic_config_write(priv, BLK_IDX_MAC_CONFIG, port,
+					  &mac[port], true);
 	if (rc < 0) {
 		dev_err(dev, "Failed to write MAC config: %d\n", rc);
 		return rc;
@@ -767,9 +755,6 @@ static int sja1105_adjust_port_config(struct sja1105_private *priv, int port,
 	 * the clock setup does interrupt the clock signal for a certain time
 	 * which causes trouble for all PHYs relying on this signal.
 	 */
-	if (!enabled)
-		return 0;
-
 	phy_mode = mii->xmii_mode[port];
 	if (phy_mode != XMII_MODE_RGMII)
 		return 0;
@@ -784,9 +769,24 @@ static void sja1105_mac_config(struct dsa_switch *ds, int port,
 	struct sja1105_private *priv = ds->priv;
 
 	if (!state->link)
-		sja1105_adjust_port_config(priv, port, SPEED_UNKNOWN, false);
-	else
-		sja1105_adjust_port_config(priv, port, state->speed, true);
+		return;
+
+	sja1105_adjust_port_config(priv, port, state->speed);
+}
+
+static void sja1105_mac_link_down(struct dsa_switch *ds, int port,
+				  unsigned int mode,
+				  phy_interface_t interface)
+{
+	sja1105_inhibit_tx(ds->priv, BIT(port), true);
+}
+
+static void sja1105_mac_link_up(struct dsa_switch *ds, int port,
+				unsigned int mode,
+				phy_interface_t interface,
+				struct phy_device *phydev)
+{
+	sja1105_inhibit_tx(ds->priv, BIT(port), false);
 }
 
 static void sja1105_phylink_validate(struct dsa_switch *ds, int port,
@@ -1241,27 +1241,6 @@ static void sja1105_bridge_leave(struct dsa_switch *ds, int port,
 	sja1105_bridge_member(ds, port, br, false);
 }
 
-static u8 sja1105_stp_state_get(struct sja1105_private *priv, int port)
-{
-	struct sja1105_mac_config_entry *mac;
-
-	mac = priv->static_config.tables[BLK_IDX_MAC_CONFIG].entries;
-
-	if (!mac[port].ingress && !mac[port].egress && !mac[port].dyn_learn)
-		return BR_STATE_BLOCKING;
-	if (mac[port].ingress && !mac[port].egress && !mac[port].dyn_learn)
-		return BR_STATE_LISTENING;
-	if (mac[port].ingress && !mac[port].egress && mac[port].dyn_learn)
-		return BR_STATE_LEARNING;
-	if (mac[port].ingress && mac[port].egress && mac[port].dyn_learn)
-		return BR_STATE_FORWARDING;
-	/* This is really an error condition if the MAC was in none of the STP
-	 * states above. But treating the port as disabled does nothing, which
-	 * is adequate, and it also resets the MAC to a known state later on.
-	 */
-	return BR_STATE_DISABLED;
-}
-
 /* For situations where we need to change a setting at runtime that is only
  * available through the static configuration, resetting the switch in order
  * to upload the new static config is unavoidable. Back up the settings we
@@ -1272,27 +1251,18 @@ static int sja1105_static_config_reload(struct sja1105_private *priv)
 {
 	struct sja1105_mac_config_entry *mac;
 	int speed_mbps[SJA1105_NUM_PORTS];
-	u8 stp_state[SJA1105_NUM_PORTS];
 	int rc, i;
 
 	mac = priv->static_config.tables[BLK_IDX_MAC_CONFIG].entries;
 
-	/* Back up settings changed by sja1105_adjust_port_config and
-	 * sja1105_bridge_stp_state_set and restore their defaults.
+	/* Back up the dynamic link speed changed by sja1105_adjust_port_config
+	 * in order to temporarily restore it to SJA1105_SPEED_AUTO - which the
+	 * switch wants to see in the static config in order to allow us to
+	 * change it through the dynamic interface later.
 	 */
 	for (i = 0; i < SJA1105_NUM_PORTS; i++) {
 		speed_mbps[i] = sja1105_speed[mac[i].speed];
 		mac[i].speed = SJA1105_SPEED_AUTO;
-		if (i == dsa_upstream_port(priv->ds, i)) {
-			mac[i].ingress = true;
-			mac[i].egress = true;
-			mac[i].dyn_learn = true;
-		} else {
-			stp_state[i] = sja1105_stp_state_get(priv, i);
-			mac[i].ingress = false;
-			mac[i].egress = false;
-			mac[i].dyn_learn = false;
-		}
 	}
 
 	/* Reset switch and send updated static configuration */
@@ -1309,13 +1279,7 @@ static int sja1105_static_config_reload(struct sja1105_private *priv)
 		goto out;
 
 	for (i = 0; i < SJA1105_NUM_PORTS; i++) {
-		bool enabled = (speed_mbps[i] != SPEED_UNKNOWN);
-
-		if (i != dsa_upstream_port(priv->ds, i))
-			sja1105_bridge_stp_state_set(priv->ds, i, stp_state[i]);
-
-		rc = sja1105_adjust_port_config(priv, i, speed_mbps[i],
-						enabled);
+		rc = sja1105_adjust_port_config(priv, i, speed_mbps[i]);
 		if (rc < 0)
 			goto out;
 	}
@@ -1933,6 +1897,8 @@ static const struct dsa_switch_ops sja1105_switch_ops = {
 	.set_ageing_time	= sja1105_set_ageing_time,
 	.phylink_validate	= sja1105_phylink_validate,
 	.phylink_mac_config	= sja1105_mac_config,
+	.phylink_mac_link_up	= sja1105_mac_link_up,
+	.phylink_mac_link_down	= sja1105_mac_link_down,
 	.get_strings		= sja1105_get_strings,
 	.get_ethtool_stats	= sja1105_get_ethtool_stats,
 	.get_sset_count		= sja1105_get_sset_count,
-- 
2.17.1


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

* Re: [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros
  2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
@ 2019-06-08 18:52   ` Andrew Lunn
  2019-06-09  2:52   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Andrew Lunn @ 2019-06-08 18:52 UTC (permalink / raw)
  To: Vladimir Oltean; +Cc: f.fainelli, vivien.didelot, davem, netdev

On Sat, Jun 08, 2019 at 04:03:41PM +0300, Vladimir Oltean wrote:
> This is a cosmetic patch that replaces the link speed numbers used in
> the driver with the corresponding ethtool macros.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
> Suggested-by: Andrew Lunn <andrew@lunn.ch>

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

    Andrew

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

* Re: [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB
  2019-06-08 13:03 ` [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB Vladimir Oltean
@ 2019-06-08 18:53   ` Andrew Lunn
  2019-06-09  2:53   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Andrew Lunn @ 2019-06-08 18:53 UTC (permalink / raw)
  To: Vladimir Oltean; +Cc: f.fainelli, vivien.didelot, davem, netdev

On Sat, Jun 08, 2019 at 04:03:42PM +0300, Vladimir Oltean wrote:
> Since the driver is now using PHYLINK exclusively, it makes sense to
> remove all references to it and replace them with PHYLINK.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

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

    Andrew

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

* Re: [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function
  2019-06-08 13:03 ` [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function Vladimir Oltean
@ 2019-06-08 18:54   ` Andrew Lunn
  2019-06-09  2:54   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Andrew Lunn @ 2019-06-08 18:54 UTC (permalink / raw)
  To: Vladimir Oltean; +Cc: f.fainelli, vivien.didelot, davem, netdev

On Sat, Jun 08, 2019 at 04:03:43PM +0300, Vladimir Oltean wrote:
> This will be used to stop egress traffic in .phylink_mac_link_up.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

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

    Andrew

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

* Re: [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks
  2019-06-08 13:03 ` [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks Vladimir Oltean
@ 2019-06-08 18:57   ` Andrew Lunn
  2019-06-09  2:55   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Andrew Lunn @ 2019-06-08 18:57 UTC (permalink / raw)
  To: Vladimir Oltean; +Cc: f.fainelli, vivien.didelot, davem, netdev

On Sat, Jun 08, 2019 at 04:03:44PM +0300, Vladimir Oltean wrote:
> The first fact that needs to be stated is that the per-MAC settings in
> SJA1105 called EGRESS and INGRESS do *not* disable egress and ingress on
> the MAC. They only prevent non-link-local traffic from being
> sent/received on this port.
> 
> So instead of having .phylink_mac_config essentially mess with the STP
> state and force it to DISABLED/BLOCKING (which also brings useless
> complications in sja1105_static_config_reload), simply add the
> .phylink_mac_link_down and .phylink_mac_link_up callbacks which inhibit
> TX at the MAC level, while leaving RX essentially enabled.
> 
> Also stop from trying to put the link down in .phylink_mac_config, which
> is incorrect.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

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

    Andrew

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

* Re: [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros
  2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
  2019-06-08 18:52   ` Andrew Lunn
@ 2019-06-09  2:52   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Florian Fainelli @ 2019-06-09  2:52 UTC (permalink / raw)
  To: Vladimir Oltean, vivien.didelot, andrew, davem; +Cc: netdev



On 6/8/2019 6:03 AM, Vladimir Oltean wrote:
> This is a cosmetic patch that replaces the link speed numbers used in
> the driver with the corresponding ethtool macros.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
> Suggested-by: Andrew Lunn <andrew@lunn.ch>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

* Re: [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB
  2019-06-08 13:03 ` [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB Vladimir Oltean
  2019-06-08 18:53   ` Andrew Lunn
@ 2019-06-09  2:53   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Florian Fainelli @ 2019-06-09  2:53 UTC (permalink / raw)
  To: Vladimir Oltean, vivien.didelot, andrew, davem; +Cc: netdev



On 6/8/2019 6:03 AM, Vladimir Oltean wrote:
> Since the driver is now using PHYLINK exclusively, it makes sense to
> remove all references to it and replace them with PHYLINK.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

* Re: [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function
  2019-06-08 13:03 ` [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function Vladimir Oltean
  2019-06-08 18:54   ` Andrew Lunn
@ 2019-06-09  2:54   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Florian Fainelli @ 2019-06-09  2:54 UTC (permalink / raw)
  To: Vladimir Oltean, vivien.didelot, andrew, davem; +Cc: netdev



On 6/8/2019 6:03 AM, Vladimir Oltean wrote:
> This will be used to stop egress traffic in .phylink_mac_link_up.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

* Re: [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks
  2019-06-08 13:03 ` [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks Vladimir Oltean
  2019-06-08 18:57   ` Andrew Lunn
@ 2019-06-09  2:55   ` Florian Fainelli
  1 sibling, 0 replies; 14+ messages in thread
From: Florian Fainelli @ 2019-06-09  2:55 UTC (permalink / raw)
  To: Vladimir Oltean, vivien.didelot, andrew, davem; +Cc: netdev



On 6/8/2019 6:03 AM, Vladimir Oltean wrote:
> The first fact that needs to be stated is that the per-MAC settings in
> SJA1105 called EGRESS and INGRESS do *not* disable egress and ingress on
> the MAC. They only prevent non-link-local traffic from being
> sent/received on this port.
> 
> So instead of having .phylink_mac_config essentially mess with the STP
> state and force it to DISABLED/BLOCKING (which also brings useless
> complications in sja1105_static_config_reload), simply add the
> .phylink_mac_link_down and .phylink_mac_link_up callbacks which inhibit
> TX at the MAC level, while leaving RX essentially enabled.
> 
> Also stop from trying to put the link down in .phylink_mac_config, which
> is incorrect.
> 
> Signed-off-by: Vladimir Oltean <olteanv@gmail.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

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

* Re: [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA
  2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
                   ` (3 preceding siblings ...)
  2019-06-08 13:03 ` [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks Vladimir Oltean
@ 2019-06-10  2:59 ` David Miller
  4 siblings, 0 replies; 14+ messages in thread
From: David Miller @ 2019-06-10  2:59 UTC (permalink / raw)
  To: olteanv; +Cc: f.fainelli, vivien.didelot, andrew, netdev

From: Vladimir Oltean <olteanv@gmail.com>
Date: Sat,  8 Jun 2019 16:03:40 +0300

> This patchset implements phylink_mac_link_up and phylink_mac_link_down,
> while also removing the code that was modifying the EGRESS and INGRESS
> MAC settings for STP and replacing them with the "inhibit TX"
> functionality.

Series applied, thanks.

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

end of thread, other threads:[~2019-06-10  2:59 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-08 13:03 [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA Vladimir Oltean
2019-06-08 13:03 ` [PATCH net-next 1/4] net: dsa: sja1105: Use SPEED_{10,100,1000,UNKNOWN} macros Vladimir Oltean
2019-06-08 18:52   ` Andrew Lunn
2019-06-09  2:52   ` Florian Fainelli
2019-06-08 13:03 ` [PATCH net-next 2/4] net: dsa: sja1105: Update some comments about PHYLIB Vladimir Oltean
2019-06-08 18:53   ` Andrew Lunn
2019-06-09  2:53   ` Florian Fainelli
2019-06-08 13:03 ` [PATCH net-next 3/4] net: dsa: sja1105: Export the sja1105_inhibit_tx function Vladimir Oltean
2019-06-08 18:54   ` Andrew Lunn
2019-06-09  2:54   ` Florian Fainelli
2019-06-08 13:03 ` [PATCH net-next 4/4] net: dsa: sja1105: Rethink the PHYLINK callbacks Vladimir Oltean
2019-06-08 18:57   ` Andrew Lunn
2019-06-09  2:55   ` Florian Fainelli
2019-06-10  2:59 ` [PATCH net-next 0/4] Rethink PHYLINK callbacks for SJA1105 DSA David Miller

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.