netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
@ 2023-07-04  6:59 M. Haener
  2023-07-04  6:59 ` [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read M. Haener
                   ` (4 more replies)
  0 siblings, 5 replies; 18+ messages in thread
From: M. Haener @ 2023-07-04  6:59 UTC (permalink / raw)
  To: netdev
  Cc: Michael Haener, linux-kernel, Andrew Lunn, Florian Fainelli,
	Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Russell King, Alexander Sverdlin

From: Michael Haener <michael.haener@siemens.com>

This patch series brings SERDES support for the mv88e632x family.

Michael Haener (3):
  net: dsa: mv88e632x: Refactor serdes read
  net: dsa: mv88e632x: Refactor serdes write
  net: dsa: mv88e632x: Add SERDES ops

 drivers/net/dsa/mv88e6xxx/chip.c   | 35 ++++++++++++++
 drivers/net/dsa/mv88e6xxx/chip.h   |  5 ++
 drivers/net/dsa/mv88e6xxx/serdes.c | 76 +++++++++++++++++++++++-------
 drivers/net/dsa/mv88e6xxx/serdes.h | 33 +++++++++++++
 4 files changed, 133 insertions(+), 16 deletions(-)

-- 
2.41.0


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

* [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read
  2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
@ 2023-07-04  6:59 ` M. Haener
  2023-07-04  7:23   ` Sverdlin, Alexander
  2023-07-04  6:59 ` [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write M. Haener
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: M. Haener @ 2023-07-04  6:59 UTC (permalink / raw)
  To: netdev
  Cc: Michael Haener, linux-kernel, Andrew Lunn, Florian Fainelli,
	Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Russell King, Alexander Sverdlin

From: Michael Haener <michael.haener@siemens.com>

To avoid code duplication, the serdes read functions
have been combined.

Signed-off-by: Michael Haener <michael.haener@siemens.com>
---
 drivers/net/dsa/mv88e6xxx/chip.c   | 13 +++++++++++++
 drivers/net/dsa/mv88e6xxx/chip.h   |  3 +++
 drivers/net/dsa/mv88e6xxx/serdes.c | 31 +++++++++++++++++-------------
 drivers/net/dsa/mv88e6xxx/serdes.h | 13 +++++++++++++
 4 files changed, 47 insertions(+), 13 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 8dd82fd87fc6..d2a320c6bed7 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4191,6 +4191,7 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.phylink_get_caps = mv88e6341_phylink_get_caps,
 	.pcs_ops = &mv88e6390_pcs_ops,
 };
@@ -4373,6 +4374,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_read = mv88e6352_serdes_read,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
 	.gpio_ops = &mv88e6352_gpio_ops,
@@ -4473,6 +4475,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_read = mv88e6352_serdes_read,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -4573,6 +4576,7 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.phylink_get_caps = mv88e6390_phylink_get_caps,
 	.pcs_ops = &mv88e6390_pcs_ops,
@@ -4631,6 +4635,7 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.phylink_get_caps = mv88e6390x_phylink_get_caps,
 	.pcs_ops = &mv88e6390_pcs_ops,
@@ -4687,6 +4692,7 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.avb_ops = &mv88e6390_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
 	.phylink_get_caps = mv88e6390_phylink_get_caps,
@@ -4740,6 +4746,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_read = mv88e6352_serdes_read,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -4846,6 +4853,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6390_avb_ops,
 	.ptp_ops = &mv88e6390_ptp_ops,
@@ -5005,6 +5013,7 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.phylink_get_caps = mv88e6341_phylink_get_caps,
 	.pcs_ops = &mv88e6390_pcs_ops,
 };
@@ -5150,6 +5159,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
 	.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
+	.serdes_read = mv88e6352_serdes_read,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
@@ -5222,6 +5232,7 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.phylink_get_caps = mv88e6390_phylink_get_caps,
 	.pcs_ops = &mv88e6390_pcs_ops,
 };
@@ -5281,6 +5292,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
 	.serdes_get_stats = mv88e6390_serdes_get_stats,
 	.serdes_get_regs_len = mv88e6390_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6390_serdes_get_regs,
+	.serdes_read = mv88e6390_serdes_read,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6390_avb_ops,
 	.ptp_ops = &mv88e6390_ptp_ops,
@@ -5341,6 +5353,7 @@ static const struct mv88e6xxx_ops mv88e6393x_ops = {
 	.stu_loadpurge = mv88e6390_g1_stu_loadpurge,
 	.serdes_get_lane = mv88e6393x_serdes_get_lane,
 	.serdes_irq_mapping = mv88e6390_serdes_irq_mapping,
+	.serdes_read = mv88e6390_serdes_read,
 	/* TODO: serdes stats */
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6390_avb_ops,
diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/chip.h
index 44383a03ef2f..bbf1e7f6f343 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.h
+++ b/drivers/net/dsa/mv88e6xxx/chip.h
@@ -593,6 +593,9 @@ struct mv88e6xxx_ops {
 	/* SERDES lane mapping */
 	int (*serdes_get_lane)(struct mv88e6xxx_chip *chip, int port);
 
+	int (*serdes_read)(struct mv88e6xxx_chip *chip, int lane, int device,
+			   int reg, u16 *val);
+
 	/* SERDES interrupt handling */
 	unsigned int (*serdes_irq_mapping)(struct mv88e6xxx_chip *chip,
 					   int port);
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index 3b4b42651fa3..5696b94c9155 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -17,8 +17,8 @@
 #include "port.h"
 #include "serdes.h"
 
-static int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int reg,
-				 u16 *val)
+int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane,
+			  int device, int reg, u16 *val)
 {
 	return mv88e6xxx_phy_page_read(chip, MV88E6352_ADDR_SERDES,
 				       MV88E6352_SERDES_PAGE_FIBER,
@@ -33,8 +33,8 @@ static int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int reg,
 					reg, val);
 }
 
-static int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip,
-				 int lane, int device, int reg, u16 *val)
+int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip,
+			  int lane, int device, int reg, u16 *val)
 {
 	return mv88e6xxx_phy_read_c45(chip, lane, device, reg, val);
 }
@@ -109,7 +109,6 @@ int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
 
 	return 0;
 }
-
 struct mv88e6352_serdes_hw_stat {
 	char string[ETH_GSTRING_LEN];
 	int sizeof_stat;
@@ -150,14 +149,16 @@ int mv88e6352_serdes_get_strings(struct mv88e6xxx_chip *chip,
 	return ARRAY_SIZE(mv88e6352_serdes_hw_stats);
 }
 
-static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
+static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip, int port,
 					  struct mv88e6352_serdes_hw_stat *stat)
 {
 	u64 val = 0;
 	u16 reg;
 	int err;
+	int lane;
 
-	err = mv88e6352_serdes_read(chip, stat->reg, &reg);
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	err = mv88e6xxx_serdes_read(chip, lane, 0, stat->reg, &reg);
 	if (err) {
 		dev_err(chip->dev, "failed to read statistic\n");
 		return 0;
@@ -166,7 +167,7 @@ static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
 	val = reg;
 
 	if (stat->sizeof_stat == 32) {
-		err = mv88e6352_serdes_read(chip, stat->reg + 1, &reg);
+		err = mv88e6xxx_serdes_read(chip, lane, 0, stat->reg + 1, &reg);
 		if (err) {
 			dev_err(chip->dev, "failed to read statistic\n");
 			return 0;
@@ -194,7 +195,7 @@ int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
 
 	for (i = 0; i < ARRAY_SIZE(mv88e6352_serdes_hw_stats); i++) {
 		stat = &mv88e6352_serdes_hw_stats[i];
-		value = mv88e6352_serdes_get_stat(chip, stat);
+		value = mv88e6352_serdes_get_stat(chip, port, stat);
 		mv88e6xxx_port->serdes_stats[i] += value;
 		data[i] = mv88e6xxx_port->serdes_stats[i];
 	}
@@ -226,13 +227,15 @@ void mv88e6352_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p)
 	u16 reg;
 	int err;
 	int i;
+	int lane;
 
 	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
 	if (err <= 0)
 		return;
 
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
 	for (i = 0 ; i < 32; i++) {
-		err = mv88e6352_serdes_read(chip, i, &reg);
+		err = mv88e6xxx_serdes_read(chip, lane, 0, i, &reg);
 		if (!err)
 			p[i] = reg;
 	}
@@ -418,7 +421,7 @@ static uint64_t mv88e6390_serdes_get_stat(struct mv88e6xxx_chip *chip, int lane,
 	int err, i;
 
 	for (i = 0; i < 3; i++) {
-		err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
+		err = mv88e6xxx_serdes_read(chip, lane, MDIO_MMD_PHYXS,
 					    stat->reg + i, &reg[i]);
 		if (err) {
 			dev_err(chip->dev, "failed to read statistic\n");
@@ -502,7 +505,7 @@ void mv88e6390_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p)
 		return;
 
 	for (i = 0 ; i < ARRAY_SIZE(mv88e6390_serdes_regs); i++) {
-		err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
+		err = mv88e6xxx_serdes_read(chip, lane, MDIO_MMD_PHYXS,
 					    mv88e6390_serdes_regs[i], &reg);
 		if (!err)
 			p[i] = reg;
@@ -521,6 +524,7 @@ int mv88e6352_serdes_set_tx_amplitude(struct mv88e6xxx_chip *chip, int port,
 	u16 ctrl, reg;
 	int err;
 	int i;
+	int lane;
 
 	err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
 	if (err <= 0)
@@ -537,7 +541,8 @@ int mv88e6352_serdes_set_tx_amplitude(struct mv88e6xxx_chip *chip, int port,
 	if (!found)
 		return -EINVAL;
 
-	err = mv88e6352_serdes_read(chip, MV88E6352_SERDES_SPEC_CTRL2, &ctrl);
+	lane = mv88e6xxx_serdes_get_lane(chip, port);
+	err = mv88e6xxx_serdes_read(chip, lane, 0, MV88E6352_SERDES_SPEC_CTRL2, &ctrl);
 	if (err)
 		return err;
 
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index aac95cab46e3..9b3a5ece33e7 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -120,6 +120,10 @@ int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6393x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
+int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
+			  int reg, u16 *val);
+int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
+			  int reg, u16 *val);
 unsigned int mv88e6352_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
 					  int port);
 unsigned int mv88e6390_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
@@ -153,6 +157,15 @@ static inline int mv88e6xxx_serdes_get_lane(struct mv88e6xxx_chip *chip,
 	return chip->info->ops->serdes_get_lane(chip, port);
 }
 
+static inline int mv88e6xxx_serdes_read(struct mv88e6xxx_chip *chip, int lane,
+					int device, int reg, u16 *val)
+{
+	if (!chip->info->ops->serdes_read)
+		return -EOPNOTSUPP;
+
+	return chip->info->ops->serdes_read(chip, lane, device, reg, val);
+}
+
 static inline unsigned int
 mv88e6xxx_serdes_irq_mapping(struct mv88e6xxx_chip *chip, int port)
 {
-- 
2.41.0


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

* [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write
  2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
  2023-07-04  6:59 ` [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read M. Haener
@ 2023-07-04  6:59 ` M. Haener
  2023-07-04  7:23   ` Sverdlin, Alexander
  2023-07-04  6:59 ` [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops M. Haener
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 18+ messages in thread
From: M. Haener @ 2023-07-04  6:59 UTC (permalink / raw)
  To: netdev
  Cc: Michael Haener, linux-kernel, Andrew Lunn, Florian Fainelli,
	Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Russell King, Alexander Sverdlin

From: Michael Haener <michael.haener@siemens.com>

To avoid code duplication, the serdes write functions
have been combined.

Signed-off-by: Michael Haener <michael.haener@siemens.com>
---
 drivers/net/dsa/mv88e6xxx/chip.c   |  4 ++++
 drivers/net/dsa/mv88e6xxx/chip.h   |  2 ++
 drivers/net/dsa/mv88e6xxx/serdes.c |  6 +++---
 drivers/net/dsa/mv88e6xxx/serdes.h | 11 +++++++++++
 4 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index d2a320c6bed7..11b98546b938 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4375,6 +4375,7 @@ static const struct mv88e6xxx_ops mv88e6172_ops = {
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
 	.serdes_read = mv88e6352_serdes_read,
+	.serdes_write = mv88e6352_serdes_write,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
 	.gpio_ops = &mv88e6352_gpio_ops,
@@ -4476,6 +4477,7 @@ static const struct mv88e6xxx_ops mv88e6176_ops = {
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
 	.serdes_read = mv88e6352_serdes_read,
+	.serdes_write = mv88e6352_serdes_write,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -4747,6 +4749,7 @@ static const struct mv88e6xxx_ops mv88e6240_ops = {
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
 	.serdes_read = mv88e6352_serdes_read,
+	.serdes_write = mv88e6352_serdes_write,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
 	.serdes_get_regs = mv88e6352_serdes_get_regs,
@@ -5160,6 +5163,7 @@ static const struct mv88e6xxx_ops mv88e6352_ops = {
 	.stu_getnext = mv88e6352_g1_stu_getnext,
 	.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
 	.serdes_read = mv88e6352_serdes_read,
+	.serdes_write = mv88e6352_serdes_write,
 	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/chip.h
index bbf1e7f6f343..7e9b6eb11216 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.h
+++ b/drivers/net/dsa/mv88e6xxx/chip.h
@@ -595,6 +595,8 @@ struct mv88e6xxx_ops {
 
 	int (*serdes_read)(struct mv88e6xxx_chip *chip, int lane, int device,
 			   int reg, u16 *val);
+	int (*serdes_write)(struct mv88e6xxx_chip *chip, int lane, int reg,
+			    u16 val);
 
 	/* SERDES interrupt handling */
 	unsigned int (*serdes_irq_mapping)(struct mv88e6xxx_chip *chip,
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index 5696b94c9155..b988d47ecbdd 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -25,8 +25,8 @@ int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane,
 				       reg, val);
 }
 
-static int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int reg,
-				  u16 val)
+int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg,
+			   u16 val)
 {
 	return mv88e6xxx_phy_page_write(chip, MV88E6352_ADDR_SERDES,
 					MV88E6352_SERDES_PAGE_FIBER,
@@ -549,5 +549,5 @@ int mv88e6352_serdes_set_tx_amplitude(struct mv88e6xxx_chip *chip, int port,
 	ctrl &= ~MV88E6352_SERDES_OUT_AMP_MASK;
 	ctrl |= reg;
 
-	return mv88e6352_serdes_write(chip, MV88E6352_SERDES_SPEC_CTRL2, ctrl);
+	return mv88e6xxx_serdes_write(chip, lane, MV88E6352_SERDES_SPEC_CTRL2, ctrl);
 }
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index 9b3a5ece33e7..d3e83c674ef7 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -124,6 +124,8 @@ int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
 			  int reg, u16 *val);
 int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
 			  int reg, u16 *val);
+int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg,
+			   u16 val);
 unsigned int mv88e6352_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
 					  int port);
 unsigned int mv88e6390_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
@@ -166,6 +168,15 @@ static inline int mv88e6xxx_serdes_read(struct mv88e6xxx_chip *chip, int lane,
 	return chip->info->ops->serdes_read(chip, lane, device, reg, val);
 }
 
+static inline int mv88e6xxx_serdes_write(struct mv88e6xxx_chip *chip, int lane,
+					 int reg, u16 val)
+{
+	if (!chip->info->ops->serdes_write)
+		return -EOPNOTSUPP;
+
+	return chip->info->ops->serdes_write(chip, lane, reg, val);
+}
+
 static inline unsigned int
 mv88e6xxx_serdes_irq_mapping(struct mv88e6xxx_chip *chip, int port)
 {
-- 
2.41.0


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

* [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops
  2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
  2023-07-04  6:59 ` [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read M. Haener
  2023-07-04  6:59 ` [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write M. Haener
@ 2023-07-04  6:59 ` M. Haener
  2023-07-04  7:23   ` Sverdlin, Alexander
  2023-07-04  7:17 ` [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family Haener, Michael
  2023-07-05 17:31 ` Jakub Kicinski
  4 siblings, 1 reply; 18+ messages in thread
From: M. Haener @ 2023-07-04  6:59 UTC (permalink / raw)
  To: netdev
  Cc: Michael Haener, linux-kernel, Andrew Lunn, Florian Fainelli,
	Vladimir Oltean, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Russell King, Alexander Sverdlin

From: Michael Haener <michael.haener@siemens.com>

The 88e632x family has several SERDES 100/1000 blocks. By adding these
operations, these functionalities can be used.

Signed-off-by: Michael Haener <michael.haener@siemens.com>
---
 drivers/net/dsa/mv88e6xxx/chip.c   | 18 ++++++++++++++
 drivers/net/dsa/mv88e6xxx/serdes.c | 39 ++++++++++++++++++++++++++++++
 drivers/net/dsa/mv88e6xxx/serdes.h |  9 +++++++
 3 files changed, 66 insertions(+)

diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 11b98546b938..9802a3608dc6 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4905,10 +4905,19 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
 	.reset = mv88e6352_g1_reset,
 	.vtu_getnext = mv88e6185_g1_vtu_getnext,
 	.vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+	.serdes_get_lane = mv88e6320_serdes_get_lane,
+	.serdes_read = mv88e6320_serdes_read,
+	.serdes_write = mv88e6320_serdes_write,
+	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
 	.phylink_get_caps = mv88e6185_phylink_get_caps,
+	.serdes_get_sset_count = mv88e6352_serdes_get_sset_count,
+	.serdes_get_strings = mv88e6352_serdes_get_strings,
+	.serdes_get_stats = mv88e6352_serdes_get_stats,
+	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
+	.serdes_get_regs = mv88e6352_serdes_get_regs,
 };
 
 static const struct mv88e6xxx_ops mv88e6321_ops = {
@@ -4951,10 +4960,19 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
 	.reset = mv88e6352_g1_reset,
 	.vtu_getnext = mv88e6185_g1_vtu_getnext,
 	.vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+	.serdes_get_lane = mv88e6320_serdes_get_lane,
+	.serdes_read = mv88e6320_serdes_read,
+	.serdes_write = mv88e6320_serdes_write,
+	.serdes_irq_mapping = mv88e6352_serdes_irq_mapping,
 	.gpio_ops = &mv88e6352_gpio_ops,
 	.avb_ops = &mv88e6352_avb_ops,
 	.ptp_ops = &mv88e6352_ptp_ops,
 	.phylink_get_caps = mv88e6185_phylink_get_caps,
+	.serdes_get_sset_count = mv88e6352_serdes_get_sset_count,
+	.serdes_get_strings = mv88e6352_serdes_get_strings,
+	.serdes_get_stats = mv88e6352_serdes_get_stats,
+	.serdes_get_regs_len = mv88e6352_serdes_get_regs_len,
+	.serdes_get_regs = mv88e6352_serdes_get_regs,
 };
 
 static const struct mv88e6xxx_ops mv88e6341_ops = {
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.c b/drivers/net/dsa/mv88e6xxx/serdes.c
index b988d47ecbdd..411fe9ac421a 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.c
+++ b/drivers/net/dsa/mv88e6xxx/serdes.c
@@ -17,6 +17,45 @@
 #include "port.h"
 #include "serdes.h"
 
+int mv88e6320_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
+			  int reg, u16 *val)
+{
+	return mv88e6xxx_phy_page_read(chip, lane,
+				       MV88E6320_SERDES_PAGE_FIBER,
+				       reg, val);
+}
+
+int mv88e6320_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg,
+			   u16 val)
+{
+	return mv88e6xxx_phy_page_write(chip, lane,
+					MV88E6320_SERDES_PAGE_FIBER,
+					reg, val);
+}
+
+int mv88e6320_serdes_get_lane(struct mv88e6xxx_chip *chip, int port)
+{
+	u8 cmode = chip->ports[port].cmode;
+	int lane = -ENODEV;
+
+	switch (port) {
+	case 0:
+		if (cmode == MV88E6XXX_PORT_STS_CMODE_100BASEX ||
+		    cmode == MV88E6XXX_PORT_STS_CMODE_1000BASEX ||
+		    cmode == MV88E6XXX_PORT_STS_CMODE_SGMII)
+			lane = MV88E6320_PORT0_LANE;
+		break;
+	case 1:
+		if (cmode == MV88E6XXX_PORT_STS_CMODE_100BASEX ||
+		    cmode == MV88E6XXX_PORT_STS_CMODE_1000BASEX ||
+		    cmode == MV88E6XXX_PORT_STS_CMODE_SGMII)
+			lane = MV88E6320_PORT1_LANE;
+		break;
+	}
+
+	return lane;
+}
+
 int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane,
 			  int device, int reg, u16 *val)
 {
diff --git a/drivers/net/dsa/mv88e6xxx/serdes.h b/drivers/net/dsa/mv88e6xxx/serdes.h
index d3e83c674ef7..9dcc9e581c05 100644
--- a/drivers/net/dsa/mv88e6xxx/serdes.h
+++ b/drivers/net/dsa/mv88e6xxx/serdes.h
@@ -14,6 +14,10 @@
 
 struct phylink_link_state;
 
+#define MV88E6320_PORT0_LANE		0x0c
+#define MV88E6320_PORT1_LANE		0x0d
+#define MV88E6320_SERDES_PAGE_FIBER	0x01
+
 #define MV88E6352_ADDR_SERDES		0x0f
 #define MV88E6352_SERDES_PAGE_FIBER	0x01
 #define MV88E6352_SERDES_IRQ		0x0b
@@ -116,14 +120,19 @@ struct phylink_link_state;
 int mv88e6xxx_pcs_decode_state(struct device *dev, u16 bmsr, u16 lpa,
 			       u16 status, struct phylink_link_state *state);
 
+int mv88e6320_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6341_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6390x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
 int mv88e6393x_serdes_get_lane(struct mv88e6xxx_chip *chip, int port);
+int mv88e6320_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
+			  int reg, u16 *val);
 int mv88e6352_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
 			  int reg, u16 *val);
 int mv88e6390_serdes_read(struct mv88e6xxx_chip *chip, int lane, int device,
 			  int reg, u16 *val);
+int mv88e6320_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg,
+			   u16 val);
 int mv88e6352_serdes_write(struct mv88e6xxx_chip *chip, int lane, int reg,
 			   u16 val);
 unsigned int mv88e6352_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
-- 
2.41.0


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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
                   ` (2 preceding siblings ...)
  2023-07-04  6:59 ` [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops M. Haener
@ 2023-07-04  7:17 ` Haener, Michael
  2023-07-04 23:31   ` Andrew Lunn
  2023-07-05 17:31 ` Jakub Kicinski
  4 siblings, 1 reply; 18+ messages in thread
From: Haener, Michael @ 2023-07-04  7:17 UTC (permalink / raw)
  To: netdev@vger.kernel.org
  Cc: andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net,
	linux@armlinux.org.uk, linux-kernel@vger.kernel.org,
	pabeni@redhat.com, kuba@kernel.org, edumazet@google.com,
	f.fainelli@gmail.com, Sverdlin, Alexander

On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> From: Michael Haener <michael.haener@siemens.com>
> 
> This patch series brings SERDES support for the mv88e632x family.

Changelog:
v2: rebased onto Russell Kings series dsa/88e6xxx/phylink

> 
> Michael Haener (3):
>   net: dsa: mv88e632x: Refactor serdes read
>   net: dsa: mv88e632x: Refactor serdes write
>   net: dsa: mv88e632x: Add SERDES ops
> 
>  drivers/net/dsa/mv88e6xxx/chip.c   | 35 ++++++++++++++
>  drivers/net/dsa/mv88e6xxx/chip.h   |  5 ++
>  drivers/net/dsa/mv88e6xxx/serdes.c | 76 +++++++++++++++++++++++-----
> --
>  drivers/net/dsa/mv88e6xxx/serdes.h | 33 +++++++++++++
>  4 files changed, 133 insertions(+), 16 deletions(-)
> 



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

* Re: [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read
  2023-07-04  6:59 ` [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read M. Haener
@ 2023-07-04  7:23   ` Sverdlin, Alexander
  0 siblings, 0 replies; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-04  7:23 UTC (permalink / raw)
  To: netdev@vger.kernel.org; +Cc: linux-kernel@vger.kernel.org

On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> From: Michael Haener <michael.haener@siemens.com>
> 
> To avoid code duplication, the serdes read functions
> have been combined.
> 
> Signed-off-by: Michael Haener <michael.haener@siemens.com>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

> ---
>  drivers/net/dsa/mv88e6xxx/chip.c   | 13 +++++++++++++
>  drivers/net/dsa/mv88e6xxx/chip.h   |  3 +++
>  drivers/net/dsa/mv88e6xxx/serdes.c | 31 +++++++++++++++++-----------
> --
>  drivers/net/dsa/mv88e6xxx/serdes.h | 13 +++++++++++++
>  4 files changed, 47 insertions(+), 13 deletions(-)

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

* Re: [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write
  2023-07-04  6:59 ` [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write M. Haener
@ 2023-07-04  7:23   ` Sverdlin, Alexander
  0 siblings, 0 replies; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-04  7:23 UTC (permalink / raw)
  To: netdev@vger.kernel.org; +Cc: linux-kernel@vger.kernel.org

On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> From: Michael Haener <michael.haener@siemens.com>
> 
> To avoid code duplication, the serdes write functions
> have been combined.
> 
> Signed-off-by: Michael Haener <michael.haener@siemens.com>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

> ---
>  drivers/net/dsa/mv88e6xxx/chip.c   |  4 ++++
>  drivers/net/dsa/mv88e6xxx/chip.h   |  2 ++
>  drivers/net/dsa/mv88e6xxx/serdes.c |  6 +++---
>  drivers/net/dsa/mv88e6xxx/serdes.h | 11 +++++++++++
>  4 files changed, 20 insertions(+), 3 deletions(-)

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

* Re: [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops
  2023-07-04  6:59 ` [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops M. Haener
@ 2023-07-04  7:23   ` Sverdlin, Alexander
  0 siblings, 0 replies; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-04  7:23 UTC (permalink / raw)
  To: netdev@vger.kernel.org; +Cc: linux-kernel@vger.kernel.org

On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> From: Michael Haener <michael.haener@siemens.com>
> 
> The 88e632x family has several SERDES 100/1000 blocks. By adding
> these
> operations, these functionalities can be used.
> 
> Signed-off-by: Michael Haener <michael.haener@siemens.com>

Reviewed-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>

> ---
>  drivers/net/dsa/mv88e6xxx/chip.c   | 18 ++++++++++++++
>  drivers/net/dsa/mv88e6xxx/serdes.c | 39
> ++++++++++++++++++++++++++++++
>  drivers/net/dsa/mv88e6xxx/serdes.h |  9 +++++++
>  3 files changed, 66 insertions(+)

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-04  7:17 ` [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family Haener, Michael
@ 2023-07-04 23:31   ` Andrew Lunn
  2023-07-06  6:51     ` Haener, Michael
  0 siblings, 1 reply; 18+ messages in thread
From: Andrew Lunn @ 2023-07-04 23:31 UTC (permalink / raw)
  To: Haener, Michael
  Cc: netdev@vger.kernel.org, olteanv@gmail.com, davem@davemloft.net,
	linux@armlinux.org.uk, linux-kernel@vger.kernel.org,
	pabeni@redhat.com, kuba@kernel.org, edumazet@google.com,
	f.fainelli@gmail.com, Sverdlin, Alexander

On Tue, Jul 04, 2023 at 07:17:55AM +0000, Haener, Michael wrote:
> On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> > From: Michael Haener <michael.haener@siemens.com>
> > 
> > This patch series brings SERDES support for the mv88e632x family.
> 
> Changelog:
> v2: rebased onto Russell Kings series dsa/88e6xxx/phylink

Russell King will be interested in a Tested-by: for his patchset.
That will also help get that patchset merged so yours can then
follow. So please keep an eye on the netdev list, and repost your
patches once Russells have been merged.

	Andrew

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
                   ` (3 preceding siblings ...)
  2023-07-04  7:17 ` [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family Haener, Michael
@ 2023-07-05 17:31 ` Jakub Kicinski
  4 siblings, 0 replies; 18+ messages in thread
From: Jakub Kicinski @ 2023-07-05 17:31 UTC (permalink / raw)
  To: M. Haener
  Cc: netdev, linux-kernel, Andrew Lunn, Florian Fainelli,
	Vladimir Oltean, David S. Miller, Eric Dumazet, Paolo Abeni,
	Russell King, Alexander Sverdlin

On Tue,  4 Jul 2023 08:59:03 +0200 M. Haener wrote:
> This patch series brings SERDES support for the mv88e632x family.

Not sure if this was said already - you'll need to repost once
Russell's patches are merged. It's a good practice to send patches 
with unmet dependencies as RFC.

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-04 23:31   ` Andrew Lunn
@ 2023-07-06  6:51     ` Haener, Michael
  2023-07-13  6:42       ` Russell King (Oracle)
  0 siblings, 1 reply; 18+ messages in thread
From: Haener, Michael @ 2023-07-06  6:51 UTC (permalink / raw)
  To: andrew@lunn.ch
  Cc: linux@armlinux.org.uk, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, kuba@kernel.org,
	netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
	Sverdlin, Alexander, f.fainelli@gmail.com

On Wed, 2023-07-05 at 01:31 +0200, Andrew Lunn wrote:
> On Tue, Jul 04, 2023 at 07:17:55AM +0000, Haener, Michael wrote:
> > On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> > > From: Michael Haener <michael.haener@siemens.com>
> > > 
> > > This patch series brings SERDES support for the mv88e632x family.
> > 
> > Changelog:
> > v2: rebased onto Russell Kings series dsa/88e6xxx/phylink
> 
> Russell King will be interested in a Tested-by: for his patchset.
> That will also help get that patchset merged so yours can then
> follow. So please keep an eye on the netdev list, and repost your
> patches once Russells have been merged.
> 
>         Andrew

Once the other patch is merged, I will rebase this patch and resubmit.


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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-06  6:51     ` Haener, Michael
@ 2023-07-13  6:42       ` Russell King (Oracle)
  2023-07-13  7:41         ` Sverdlin, Alexander
  0 siblings, 1 reply; 18+ messages in thread
From: Russell King (Oracle) @ 2023-07-13  6:42 UTC (permalink / raw)
  To: Haener, Michael
  Cc: andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, kuba@kernel.org,
	netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
	Sverdlin, Alexander, f.fainelli@gmail.com

On Thu, Jul 06, 2023 at 06:51:51AM +0000, Haener, Michael wrote:
> On Wed, 2023-07-05 at 01:31 +0200, Andrew Lunn wrote:
> > On Tue, Jul 04, 2023 at 07:17:55AM +0000, Haener, Michael wrote:
> > > On Tue, 2023-07-04 at 08:59 +0200, M. Haener wrote:
> > > > From: Michael Haener <michael.haener@siemens.com>
> > > > 
> > > > This patch series brings SERDES support for the mv88e632x family.
> > > 
> > > Changelog:
> > > v2: rebased onto Russell Kings series dsa/88e6xxx/phylink
> > 
> > Russell King will be interested in a Tested-by: for his patchset.
> > That will also help get that patchset merged so yours can then
> > follow. So please keep an eye on the netdev list, and repost your
> > patches once Russells have been merged.
> > 
> >         Andrew
> 
> Once the other patch is merged, I will rebase this patch and resubmit.

From your response, I can only assume you have not understood Andrew's
comment.

Andrew is asking you to _test_ my patch set, and _then_ give a
Tested-by. It's useless to do that after my patch set has been merged.
This will give more confidence to my patch set when I submit it. Since
I'll be doing so maybe later today, you'll probably have to reply to
the series once it's been posted.

Thanks.

-- 
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] 18+ messages in thread

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13  6:42       ` Russell King (Oracle)
@ 2023-07-13  7:41         ` Sverdlin, Alexander
  2023-07-13 15:34           ` Andrew Lunn
  0 siblings, 1 reply; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-13  7:41 UTC (permalink / raw)
  To: linux@armlinux.org.uk, Haener, Michael
  Cc: andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, pabeni@redhat.com,
	netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org,
	f.fainelli@gmail.com

Hi Russell,

On Thu, 2023-07-13 at 07:42 +0100, Russell King (Oracle) wrote:
> > > > Changelog:
> > > > v2: rebased onto Russell Kings series dsa/88e6xxx/phylink
> > > 
> > > Russell King will be interested in a Tested-by: for his patchset.
> > > That will also help get that patchset merged so yours can then
> > > follow. So please keep an eye on the netdev list, and repost your
> > > patches once Russells have been merged.
> > > 
> > >         Andrew
> > 
> > Once the other patch is merged, I will rebase this patch and resubmit.
> 
> From your response, I can only assume you have not understood Andrew's
> comment.

we did understand Andrew's request indeed, however we were not able to
backport your series quickly to the version we are able to test on the
HW. Michael's patch is less invasive and we were able to port it easier.

Thanks for your understanding! 

> Andrew is asking you to _test_ my patch set, and _then_ give a
> Tested-by. It's useless to do that after my patch set has been merged.
> This will give more confidence to my patch set when I submit it. Since
> I'll be doing so maybe later today, you'll probably have to reply to
> the series once it's been posted.

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13  7:41         ` Sverdlin, Alexander
@ 2023-07-13 15:34           ` Andrew Lunn
  2023-07-13 15:42             ` Russell King (Oracle)
  2023-07-13 16:29             ` Sverdlin, Alexander
  0 siblings, 2 replies; 18+ messages in thread
From: Andrew Lunn @ 2023-07-13 15:34 UTC (permalink / raw)
  To: Sverdlin, Alexander
  Cc: linux@armlinux.org.uk, Haener, Michael, olteanv@gmail.com,
	davem@davemloft.net, linux-kernel@vger.kernel.org,
	pabeni@redhat.com, netdev@vger.kernel.org, edumazet@google.com,
	kuba@kernel.org, f.fainelli@gmail.com

> we did understand Andrew's request indeed, however we were not able to
> backport your series quickly to the version we are able to test on the
> HW.

But your own patchset has been tested on net-next by yourself? So it
should be trivial to use "b4 am <threadid>" to get Russells patchset,
apply them on top of net-next, and then add your patches as well.

      Andrew

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13 15:34           ` Andrew Lunn
@ 2023-07-13 15:42             ` Russell King (Oracle)
  2023-07-13 16:29             ` Sverdlin, Alexander
  1 sibling, 0 replies; 18+ messages in thread
From: Russell King (Oracle) @ 2023-07-13 15:42 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Sverdlin, Alexander, Haener, Michael, olteanv@gmail.com,
	davem@davemloft.net, linux-kernel@vger.kernel.org,
	pabeni@redhat.com, netdev@vger.kernel.org, edumazet@google.com,
	kuba@kernel.org, f.fainelli@gmail.com

On Thu, Jul 13, 2023 at 05:34:25PM +0200, Andrew Lunn wrote:
> > we did understand Andrew's request indeed, however we were not able to
> > backport your series quickly to the version we are able to test on the
> > HW.
> 
> But your own patchset has been tested on net-next by yourself? So it
> should be trivial to use "b4 am <threadid>" to get Russells patchset,
> apply them on top of net-next, and then add your patches as well.

And it's even easier as today I submitted a patch set on top of current
net-next - not that there were any conflicts.

https://lore.kernel.org/netdev/ZK+4tOD4EpFzNM9x@shell.armlinux.org.uk/T/#t

-- 
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] 18+ messages in thread

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13 15:34           ` Andrew Lunn
  2023-07-13 15:42             ` Russell King (Oracle)
@ 2023-07-13 16:29             ` Sverdlin, Alexander
  2023-07-13 19:33               ` Andrew Lunn
  1 sibling, 1 reply; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-13 16:29 UTC (permalink / raw)
  To: andrew@lunn.ch
  Cc: linux@armlinux.org.uk, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, f.fainelli@gmail.com,
	netdev@vger.kernel.org, pabeni@redhat.com, edumazet@google.com,
	Haener, Michael, kuba@kernel.org

Hi Andrew,

On Thu, 2023-07-13 at 17:34 +0200, Andrew Lunn wrote:
> > we did understand Andrew's request indeed, however we were not able to
> > backport your series quickly to the version we are able to test on the
> > HW.
> 
> But your own patchset has been tested on net-next by yourself? So it
> should be trivial to use "b4 am <threadid>" to get Russells patchset,
> apply them on top of net-next, and then add your patches as well.

unfortunately it has been only built on net-next and tested on a 5.15.x with some
limited backports so that Russell series would require even more backporting.

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13 16:29             ` Sverdlin, Alexander
@ 2023-07-13 19:33               ` Andrew Lunn
  2023-07-14  8:07                 ` Sverdlin, Alexander
  0 siblings, 1 reply; 18+ messages in thread
From: Andrew Lunn @ 2023-07-13 19:33 UTC (permalink / raw)
  To: Sverdlin, Alexander
  Cc: linux@armlinux.org.uk, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, f.fainelli@gmail.com,
	netdev@vger.kernel.org, pabeni@redhat.com, edumazet@google.com,
	Haener, Michael, kuba@kernel.org

On Thu, Jul 13, 2023 at 04:29:12PM +0000, Sverdlin, Alexander wrote:
> Hi Andrew,
> 
> On Thu, 2023-07-13 at 17:34 +0200, Andrew Lunn wrote:
> > > we did understand Andrew's request indeed, however we were not able to
> > > backport your series quickly to the version we are able to test on the
> > > HW.
> > 
> > But your own patchset has been tested on net-next by yourself? So it
> > should be trivial to use "b4 am <threadid>" to get Russells patchset,
> > apply them on top of net-next, and then add your patches as well.
> 
> unfortunately it has been only built on net-next and tested on a 5.15.x with some
> limited backports so that Russell series would require even more backporting.

You should indicate that the patch is only built tested when
submitting it.

I assume you are using a vendor kernel? What is missing in mainline to
stop networking working?

	 Andrew

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

* Re: [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family
  2023-07-13 19:33               ` Andrew Lunn
@ 2023-07-14  8:07                 ` Sverdlin, Alexander
  0 siblings, 0 replies; 18+ messages in thread
From: Sverdlin, Alexander @ 2023-07-14  8:07 UTC (permalink / raw)
  To: andrew@lunn.ch
  Cc: linux@armlinux.org.uk, olteanv@gmail.com, davem@davemloft.net,
	linux-kernel@vger.kernel.org, pabeni@redhat.com,
	netdev@vger.kernel.org, edumazet@google.com, f.fainelli@gmail.com,
	Haener, Michael, kuba@kernel.org

Hello Andrew,

On Thu, 2023-07-13 at 21:33 +0200, Andrew Lunn wrote:
> On Thu, Jul 13, 2023 at 04:29:12PM +0000, Sverdlin, Alexander wrote:
> > Hi Andrew,
> > 
> > On Thu, 2023-07-13 at 17:34 +0200, Andrew Lunn wrote:
> > > > we did understand Andrew's request indeed, however we were not able to
> > > > backport your series quickly to the version we are able to test on the
> > > > HW.
> > > 
> > > But your own patchset has been tested on net-next by yourself? So it
> > > should be trivial to use "b4 am <threadid>" to get Russells patchset,
> > > apply them on top of net-next, and then add your patches as well.
> > 
> > unfortunately it has been only built on net-next and tested on a 5.15.x with some
> > limited backports so that Russell series would require even more backporting.
> 
> You should indicate that the patch is only built tested when
> submitting it.

yes, it's not tested on the HW with net-net.
It's tested with older kernel with DSA backported to 6.1+ kernel.

> I assume you are using a vendor kernel? What is missing in mainline to
> stop networking working?

If we talk networking, my patch "net: fec: Defer probe if other FEC has deferred MDIO"
comes to my mind, this is quite important, but didn't gain much interest.

But network is usually not the critical part, it's usually other SoC parts and it's
not always easy to plug a Gigabit Switch out and plug it into a HW running fresh kernel.

We are improving on this, but this is a balancing act between being creative on
testing and not upstreaming at all.

-- 
Alexander Sverdlin
Siemens AG
www.siemens.com

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

end of thread, other threads:[~2023-07-14  8:08 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-04  6:59 [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family M. Haener
2023-07-04  6:59 ` [PATCH v2 1/3] net: dsa: mv88e632x: Refactor serdes read M. Haener
2023-07-04  7:23   ` Sverdlin, Alexander
2023-07-04  6:59 ` [PATCH v2 2/3] net: dsa: mv88e632x: Refactor serdes write M. Haener
2023-07-04  7:23   ` Sverdlin, Alexander
2023-07-04  6:59 ` [PATCH v2 3/3] net: dsa: mv88e632x: Add SERDES ops M. Haener
2023-07-04  7:23   ` Sverdlin, Alexander
2023-07-04  7:17 ` [PATCH v2 0/3] net: dsa: SERDES support for mv88e632x family Haener, Michael
2023-07-04 23:31   ` Andrew Lunn
2023-07-06  6:51     ` Haener, Michael
2023-07-13  6:42       ` Russell King (Oracle)
2023-07-13  7:41         ` Sverdlin, Alexander
2023-07-13 15:34           ` Andrew Lunn
2023-07-13 15:42             ` Russell King (Oracle)
2023-07-13 16:29             ` Sverdlin, Alexander
2023-07-13 19:33               ` Andrew Lunn
2023-07-14  8:07                 ` Sverdlin, Alexander
2023-07-05 17:31 ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).