* [PATCH net 01/13] net: dsa: mv88e6xxx: remove unused .port_max_speed_mode()
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 14:25 ` Andrew Lunn
2025-03-13 13:41 ` [PATCH net 02/13] net: dsa: mv88e6xxx: fix VTU methods for 6320 family Marek Behún
` (12 subsequent siblings)
13 siblings, 1 reply; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
The .port_max_speed_mode() method is not used anymore since commit
40da0c32c3fc ("net: dsa: mv88e6xxx: remove handling for DSA and CPU ports").
Drop it.
Fixes: 40da0c32c3fc ("net: dsa: mv88e6xxx: remove handling for DSA and CPU ports")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 9 -------
drivers/net/dsa/mv88e6xxx/chip.h | 4 ----
drivers/net/dsa/mv88e6xxx/port.c | 40 --------------------------------
drivers/net/dsa/mv88e6xxx/port.h | 9 -------
4 files changed, 62 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 5db96ca52505..99d8d438e465 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -4404,7 +4404,6 @@ static const struct mv88e6xxx_ops mv88e6141_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6341_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6341_port_max_speed_mode,
.port_tag_remap = mv88e6095_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -4797,7 +4796,6 @@ static const struct mv88e6xxx_ops mv88e6190_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -4857,7 +4855,6 @@ static const struct mv88e6xxx_ops mv88e6190x_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390x_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390x_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -4917,7 +4914,6 @@ static const struct mv88e6xxx_ops mv88e6191_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
@@ -5082,7 +5078,6 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -5241,7 +5236,6 @@ static const struct mv88e6xxx_ops mv88e6341_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6341_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6341_port_max_speed_mode,
.port_tag_remap = mv88e6095_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -5463,7 +5457,6 @@ static const struct mv88e6xxx_ops mv88e6390_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -5527,7 +5520,6 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6390x_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6390x_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
@@ -5590,7 +5582,6 @@ static const struct mv88e6xxx_ops mv88e6393x_ops = {
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6390_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6393x_port_set_speed_duplex,
- .port_max_speed_mode = mv88e6393x_port_max_speed_mode,
.port_tag_remap = mv88e6390_port_tag_remap,
.port_set_policy = mv88e6393x_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
diff --git a/drivers/net/dsa/mv88e6xxx/chip.h b/drivers/net/dsa/mv88e6xxx/chip.h
index 86bf113c9bfa..07671d9fe0c3 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.h
+++ b/drivers/net/dsa/mv88e6xxx/chip.h
@@ -551,10 +551,6 @@ struct mv88e6xxx_ops {
int (*port_set_speed_duplex)(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex);
- /* What interface mode should be used for maximum speed? */
- phy_interface_t (*port_max_speed_mode)(struct mv88e6xxx_chip *chip,
- int port);
-
int (*port_tag_remap)(struct mv88e6xxx_chip *chip, int port);
int (*port_set_policy)(struct mv88e6xxx_chip *chip, int port,
diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c
index 66b1b7277281..d7a6d12aadbf 100644
--- a/drivers/net/dsa/mv88e6xxx/port.c
+++ b/drivers/net/dsa/mv88e6xxx/port.c
@@ -344,15 +344,6 @@ int mv88e6341_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
duplex);
}
-phy_interface_t mv88e6341_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port)
-{
- if (port == 5)
- return PHY_INTERFACE_MODE_2500BASEX;
-
- return PHY_INTERFACE_MODE_NA;
-}
-
/* Support 10, 100, 200, 1000 Mbps (e.g. 88E6352 family) */
int mv88e6352_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex)
@@ -384,15 +375,6 @@ int mv88e6390_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
duplex);
}
-phy_interface_t mv88e6390_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port)
-{
- if (port == 9 || port == 10)
- return PHY_INTERFACE_MODE_2500BASEX;
-
- return PHY_INTERFACE_MODE_NA;
-}
-
/* Support 10, 100, 200, 1000, 2500, 10000 Mbps (e.g. 88E6190X) */
int mv88e6390x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex)
@@ -407,15 +389,6 @@ int mv88e6390x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
duplex);
}
-phy_interface_t mv88e6390x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port)
-{
- if (port == 9 || port == 10)
- return PHY_INTERFACE_MODE_XAUI;
-
- return PHY_INTERFACE_MODE_NA;
-}
-
/* Support 10, 100, 200, 1000, 2500, 5000, 10000 Mbps (e.g. 88E6393X)
* Function mv88e6xxx_port_set_speed_duplex() can't be used as the register
* values for speeds 2500 & 5000 conflict.
@@ -509,19 +482,6 @@ int mv88e6393x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
return 0;
}
-phy_interface_t mv88e6393x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port)
-{
-
- if (port != 0 && port != 9 && port != 10)
- return PHY_INTERFACE_MODE_NA;
-
- if (chip->info->prod_num == MV88E6XXX_PORT_SWITCH_ID_PROD_6361)
- return PHY_INTERFACE_MODE_2500BASEX;
-
- return PHY_INTERFACE_MODE_10GBASER;
-}
-
static int mv88e6xxx_port_set_cmode(struct mv88e6xxx_chip *chip, int port,
phy_interface_t mode, bool force)
{
diff --git a/drivers/net/dsa/mv88e6xxx/port.h b/drivers/net/dsa/mv88e6xxx/port.h
index c1d2f99efb1c..d662b09bf481 100644
--- a/drivers/net/dsa/mv88e6xxx/port.h
+++ b/drivers/net/dsa/mv88e6xxx/port.h
@@ -501,15 +501,6 @@ int mv88e6390x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int mv88e6393x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex);
-phy_interface_t mv88e6341_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port);
-phy_interface_t mv88e6390_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port);
-phy_interface_t mv88e6390x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port);
-phy_interface_t mv88e6393x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
- int port);
-
int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state);
int mv88e6xxx_port_set_vlan_map(struct mv88e6xxx_chip *chip, int port, u16 map);
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH net 01/13] net: dsa: mv88e6xxx: remove unused .port_max_speed_mode()
2025-03-13 13:41 ` [PATCH net 01/13] net: dsa: mv88e6xxx: remove unused .port_max_speed_mode() Marek Behún
@ 2025-03-13 14:25 ` Andrew Lunn
0 siblings, 0 replies; 19+ messages in thread
From: Andrew Lunn @ 2025-03-13 14:25 UTC (permalink / raw)
To: Marek Behún
Cc: Vladimir Oltean, Russell King (Oracle), Vivien Didelot,
Tobias Waldekranz, netdev, Lev Olshvang
On Thu, Mar 13, 2025 at 02:41:34PM +0100, Marek Behún wrote:
> The .port_max_speed_mode() method is not used anymore since commit
> 40da0c32c3fc ("net: dsa: mv88e6xxx: remove handling for DSA and CPU ports").
> Drop it.
>
> Fixes: 40da0c32c3fc ("net: dsa: mv88e6xxx: remove handling for DSA and CPU ports")
> Signed-off-by: Marek Behún <kabel@kernel.org>
I would say this is a cleanup, not a fix, so should be for net-next,
not net. And a Fixes: is not needed.
Andrew
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 02/13] net: dsa: mv88e6xxx: fix VTU methods for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
2025-03-13 13:41 ` [PATCH net 01/13] net: dsa: mv88e6xxx: remove unused .port_max_speed_mode() Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 14:33 ` Andrew Lunn
2025-03-13 13:41 ` [PATCH net 03/13] net: dsa: mv88e6xxx: fix number of g1 interrupts " Marek Behún
` (11 subsequent siblings)
13 siblings, 1 reply; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
The VTU registers of the 6320 family use the 6352 semantics, not 6185.
Fix it.
Fixes: b8fee9571063 ("net: dsa: mv88e6xxx: add VLAN Get Next support")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
This bug goes way back to 2015 to commit b8fee9571063 ("net: dsa:
mv88e6xxx: add VLAN Get Next support") where mv88e6xxx_vtu_getnext() was
first implemented: the check for whether the switch has STU did not
contain the 6320 family.
Therefore I put that commit into the Fixes tag.
But the driver was heavily refactored since then, and the actual commits
that this patch depends on are
f1394b78a602 ("net: dsa: mv88e6xxx: add VTU GetNext operation")
0ad5daf6ba80 ("net: dsa: mv88e6xxx: add VTU Load/Purge operation")
But I don't know how to declare it properly.
Using the "Cc: stable" method with these commits tagged would mean they
should be cherry-picked, but these commits in turn depend on other
changes in the driver.
---
drivers/net/dsa/mv88e6xxx/chip.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 99d8d438e465..aa8ebe9d6bdc 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5164,8 +5164,8 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.hardware_reset_pre = mv88e6xxx_g2_eeprom_wait,
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
- .vtu_getnext = mv88e6185_g1_vtu_getnext,
- .vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+ .vtu_getnext = mv88e6352_g1_vtu_getnext,
+ .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
.avb_ops = &mv88e6352_avb_ops,
.ptp_ops = &mv88e6352_ptp_ops,
@@ -5212,8 +5212,8 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.hardware_reset_pre = mv88e6xxx_g2_eeprom_wait,
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
- .vtu_getnext = mv88e6185_g1_vtu_getnext,
- .vtu_loadpurge = mv88e6185_g1_vtu_loadpurge,
+ .vtu_getnext = mv88e6352_g1_vtu_getnext,
+ .vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
.avb_ops = &mv88e6352_avb_ops,
.ptp_ops = &mv88e6352_ptp_ops,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH net 02/13] net: dsa: mv88e6xxx: fix VTU methods for 6320 family
2025-03-13 13:41 ` [PATCH net 02/13] net: dsa: mv88e6xxx: fix VTU methods for 6320 family Marek Behún
@ 2025-03-13 14:33 ` Andrew Lunn
0 siblings, 0 replies; 19+ messages in thread
From: Andrew Lunn @ 2025-03-13 14:33 UTC (permalink / raw)
To: Marek Behún
Cc: Vladimir Oltean, Russell King (Oracle), Vivien Didelot,
Tobias Waldekranz, netdev, Lev Olshvang
On Thu, Mar 13, 2025 at 02:41:35PM +0100, Marek Behún wrote:
> The VTU registers of the 6320 family use the 6352 semantics, not 6185.
> Fix it.
>
> Fixes: b8fee9571063 ("net: dsa: mv88e6xxx: add VLAN Get Next support")
> Signed-off-by: Marek Behún <kabel@kernel.org>
> ---
> This bug goes way back to 2015 to commit b8fee9571063 ("net: dsa:
> mv88e6xxx: add VLAN Get Next support") where mv88e6xxx_vtu_getnext() was
> first implemented: the check for whether the switch has STU did not
> contain the 6320 family.
>
> Therefore I put that commit into the Fixes tag.
>
> But the driver was heavily refactored since then, and the actual commits
> that this patch depends on are
> f1394b78a602 ("net: dsa: mv88e6xxx: add VTU GetNext operation")
> 0ad5daf6ba80 ("net: dsa: mv88e6xxx: add VTU Load/Purge operation")
> But I don't know how to declare it properly.
> Using the "Cc: stable" method with these commits tagged would mean they
> should be cherry-picked, but these commits in turn depend on other
> changes in the driver.
What happens when you try to cherry-pick this patch back to
b8fee9571063. If it explodes with all sorts of conflicts, whoever is
doing the backport will quickly give up and report the backport
failed. You can then step in and provide a backported version for a
particular stable kernel.
Or you can extend the Cc: stable:
Cc: <stable@vger.kernel.org> # 3.3.x
Anybody backporting the patch should not go further back than 3.3.x,
but the Fixes tag indicates older versions are broken, which is useful
knowledge to hit people over the head with when they refuse to update
to the latest LTS.
Andrew
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 03/13] net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
2025-03-13 13:41 ` [PATCH net 01/13] net: dsa: mv88e6xxx: remove unused .port_max_speed_mode() Marek Behún
2025-03-13 13:41 ` [PATCH net 02/13] net: dsa: mv88e6xxx: fix VTU methods for 6320 family Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 04/13] net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported ports Marek Behún
` (10 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
The 6320 family has 9 global1 interrupt, not 8. Fix it.
Fixes: dc30c35be720 ("net: dsa: mv88e6xxx: Implement interrupt support.")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index aa8ebe9d6bdc..e8c93199e24a 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -6235,7 +6235,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.global1_addr = 0x1b,
.global2_addr = 0x1c,
.age_time_coeff = 15000,
- .g1_irqs = 8,
+ .g1_irqs = 9,
.g2_irqs = 10,
.stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1,
.atu_move_port_mask = 0xf,
@@ -6261,7 +6261,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.global1_addr = 0x1b,
.global2_addr = 0x1c,
.age_time_coeff = 15000,
- .g1_irqs = 8,
+ .g1_irqs = 9,
.g2_irqs = 10,
.stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1,
.atu_move_port_mask = 0xf,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 04/13] net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported ports
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (2 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 03/13] net: dsa: mv88e6xxx: fix number of g1 interrupts " Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 14:35 ` Andrew Lunn
2025-03-13 13:41 ` [PATCH net 05/13] net: dsa: mv88e6xxx: fix atu_move_port_mask for 6341 family Marek Behún
` (9 subsequent siblings)
13 siblings, 1 reply; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
The 6320 family supports the ALT_SPEED bit on ports 2, 5 and 6. Allow
this speed by implementing 6320 family specific .port_set_speed_duplex()
method.
Fixes: 96a2b40c7bd3 ("net: dsa: mv88e6xxx: add port's MAC speed setter")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 4 ++--
drivers/net/dsa/mv88e6xxx/port.c | 15 +++++++++++++++
drivers/net/dsa/mv88e6xxx/port.h | 2 ++
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index e8c93199e24a..7e4de1d347ec 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5138,7 +5138,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.port_set_link = mv88e6xxx_port_set_link,
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6320_port_set_rgmii_delay,
- .port_set_speed_duplex = mv88e6185_port_set_speed_duplex,
+ .port_set_speed_duplex = mv88e6320_port_set_speed_duplex,
.port_tag_remap = mv88e6095_port_tag_remap,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
@@ -5187,7 +5187,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.port_set_link = mv88e6xxx_port_set_link,
.port_sync_link = mv88e6xxx_port_sync_link,
.port_set_rgmii_delay = mv88e6320_port_set_rgmii_delay,
- .port_set_speed_duplex = mv88e6185_port_set_speed_duplex,
+ .port_set_speed_duplex = mv88e6320_port_set_speed_duplex,
.port_tag_remap = mv88e6095_port_tag_remap,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
diff --git a/drivers/net/dsa/mv88e6xxx/port.c b/drivers/net/dsa/mv88e6xxx/port.c
index d7a6d12aadbf..1b033056d409 100644
--- a/drivers/net/dsa/mv88e6xxx/port.c
+++ b/drivers/net/dsa/mv88e6xxx/port.c
@@ -327,6 +327,21 @@ int mv88e6250_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
duplex);
}
+int mv88e6320_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
+ int speed, int duplex)
+{
+ bool has_200 = (port == 2 || port == 5 || port == 6);
+
+ if (speed > 1000)
+ return -EOPNOTSUPP;
+
+ if (speed == 200 && !has_200)
+ return -EOPNOTSUPP;
+
+ return mv88e6xxx_port_set_speed_duplex(chip, port, speed, has_200,
+ false, duplex);
+}
+
/* Support 10, 100, 200, 1000, 2500 Mbps (e.g. 88E6341) */
int mv88e6341_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex)
diff --git a/drivers/net/dsa/mv88e6xxx/port.h b/drivers/net/dsa/mv88e6xxx/port.h
index d662b09bf481..4a4134987c43 100644
--- a/drivers/net/dsa/mv88e6xxx/port.h
+++ b/drivers/net/dsa/mv88e6xxx/port.h
@@ -490,6 +490,8 @@ int mv88e6185_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex);
int mv88e6250_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex);
+int mv88e6320_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
+ int speed, int duplex);
int mv88e6341_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
int speed, int duplex);
int mv88e6352_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH net 04/13] net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported ports
2025-03-13 13:41 ` [PATCH net 04/13] net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported ports Marek Behún
@ 2025-03-13 14:35 ` Andrew Lunn
0 siblings, 0 replies; 19+ messages in thread
From: Andrew Lunn @ 2025-03-13 14:35 UTC (permalink / raw)
To: Marek Behún
Cc: Vladimir Oltean, Russell King (Oracle), Vivien Didelot,
Tobias Waldekranz, netdev, Lev Olshvang
On Thu, Mar 13, 2025 at 02:41:37PM +0100, Marek Behún wrote:
> The 6320 family supports the ALT_SPEED bit on ports 2, 5 and 6. Allow
> this speed by implementing 6320 family specific .port_set_speed_duplex()
> method.
>
> Fixes: 96a2b40c7bd3 ("net: dsa: mv88e6xxx: add port's MAC speed setter")
net-next please, unless you have a system which really requires this,
is broken otherwise.
Andrew
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 05/13] net: dsa: mv88e6xxx: fix atu_move_port_mask for 6341 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (3 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 04/13] net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported ports Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 06/13] net: dsa: mv88e6xxx: enable PVT for 6321 switch Marek Behún
` (8 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
The atu_move_port_mask for 6341 family (Topaz) is 0xf, not 0x1f. The
PortVec field is 8 bits wide, not 11 as in 6390 family. Fix this.
Fixes: e606ca36bbf2 ("net: dsa: mv88e6xxx: rework ATU Remove")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 7e4de1d347ec..cd351a7f4906 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5809,7 +5809,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.global1_addr = 0x1b,
.global2_addr = 0x1c,
.age_time_coeff = 3750,
- .atu_move_port_mask = 0x1f,
+ .atu_move_port_mask = 0xf,
.g1_irqs = 9,
.g2_irqs = 10,
.stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1,
@@ -6287,7 +6287,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.global1_addr = 0x1b,
.global2_addr = 0x1c,
.age_time_coeff = 3750,
- .atu_move_port_mask = 0x1f,
+ .atu_move_port_mask = 0xf,
.g1_irqs = 9,
.g2_irqs = 10,
.stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 06/13] net: dsa: mv88e6xxx: enable PVT for 6321 switch
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (4 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 05/13] net: dsa: mv88e6xxx: fix atu_move_port_mask for 6341 family Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 07/13] net: dsa: mv88e6xxx: define .pot_clear() for 6321 Marek Behún
` (7 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit f36456522168 ("net: dsa: mv88e6xxx: move PVT description in
info") forgot to enable PVT for 6321 switch. Fix it.
Fixes: f36456522168 ("net: dsa: mv88e6xxx: move PVT description in info")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index cd351a7f4906..2f34cb1438b4 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -6265,6 +6265,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.g2_irqs = 10,
.stats_type = STATS_TYPE_BANK0 | STATS_TYPE_BANK1,
.atu_move_port_mask = 0xf,
+ .pvt = true,
.multi_chip = true,
.edsa_support = MV88E6XXX_EDSA_SUPPORTED,
.ptp_support = true,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 07/13] net: dsa: mv88e6xxx: define .pot_clear() for 6321
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (5 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 06/13] net: dsa: mv88e6xxx: enable PVT for 6321 switch Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 08/13] net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family Marek Behún
` (6 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit 9e907d739cc3 ("net: dsa: mv88e6xxx: add POT operation") forgot to
add the .pot_clear() method to the 6321 switch operations structure. Fix
it.
Fixes: 9e907d739cc3 ("net: dsa: mv88e6xxx: add POT operation")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 2f34cb1438b4..734aee3500c8 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5209,6 +5209,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.set_egress_port = mv88e6095_g1_set_egress_port,
.watchdog_ops = &mv88e6390_watchdog_ops,
.mgmt_rsvd2cpu = mv88e6352_g2_mgmt_rsvd2cpu,
+ .pot_clear = mv88e6xxx_g2_pot_clear,
.hardware_reset_pre = mv88e6xxx_g2_eeprom_wait,
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 08/13] net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (6 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 07/13] net: dsa: mv88e6xxx: define .pot_clear() for 6321 Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 14:40 ` Andrew Lunn
2025-03-13 13:41 ` [PATCH net 09/13] net: dsa: mv88e6xxx: enable .port_set_policy() " Marek Behún
` (5 subsequent siblings)
13 siblings, 1 reply; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit 9e5baf9b3636 ("net: dsa: mv88e6xxx: add RMU disable op") forgot
to add the .rmu_disable() method for the 6320 family. Fix it.
Fixes: 9e5baf9b3636 ("net: dsa: mv88e6xxx: add RMU disable op")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 734aee3500c8..e67c24d960cf 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5164,6 +5164,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.hardware_reset_pre = mv88e6xxx_g2_eeprom_wait,
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
+ .rmu_disable = mv88e6352_g1_rmu_disable,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
@@ -5213,6 +5214,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.hardware_reset_pre = mv88e6xxx_g2_eeprom_wait,
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
+ .rmu_disable = mv88e6352_g1_rmu_disable,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH net 08/13] net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
2025-03-13 13:41 ` [PATCH net 08/13] net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family Marek Behún
@ 2025-03-13 14:40 ` Andrew Lunn
0 siblings, 0 replies; 19+ messages in thread
From: Andrew Lunn @ 2025-03-13 14:40 UTC (permalink / raw)
To: Marek Behún
Cc: Vladimir Oltean, Russell King (Oracle), Vivien Didelot,
Tobias Waldekranz, netdev, Lev Olshvang
On Thu, Mar 13, 2025 at 02:41:41PM +0100, Marek Behún wrote:
> Commit 9e5baf9b3636 ("net: dsa: mv88e6xxx: add RMU disable op") forgot
> to add the .rmu_disable() method for the 6320 family. Fix it.
Please add a justification for stable. The rules say:
It must either fix a real bug that bothers people or just add a
device ID.
How does this bother people?
Please look through all the patches in this set and split them between
net and net-next. They do not all meet this requirement.
Andrew
---
pw-bot: cr
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH net 09/13] net: dsa: mv88e6xxx: enable .port_set_policy() for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (7 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 08/13] net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 10/13] net: dsa: mv88e6xxx: enable devlink ATU hash param " Marek Behún
` (4 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit f3a2cd326e44 ("net: dsa: mv88e6xxx: introduce .port_set_policy")
forgot to add the .port_set_policy() method for the 6320 family. Fix it.
Fixes: f3a2cd326e44 ("net: dsa: mv88e6xxx: introduce .port_set_policy")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index e67c24d960cf..aba22ce3df07 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5140,6 +5140,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.port_set_rgmii_delay = mv88e6320_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6320_port_set_speed_duplex,
.port_tag_remap = mv88e6095_port_tag_remap,
+ .port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
.port_set_mcast_flood = mv88e6352_port_set_mcast_flood,
@@ -5190,6 +5191,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.port_set_rgmii_delay = mv88e6320_port_set_rgmii_delay,
.port_set_speed_duplex = mv88e6320_port_set_speed_duplex,
.port_tag_remap = mv88e6095_port_tag_remap,
+ .port_set_policy = mv88e6352_port_set_policy,
.port_set_frame_mode = mv88e6351_port_set_frame_mode,
.port_set_ucast_flood = mv88e6352_port_set_ucast_flood,
.port_set_mcast_flood = mv88e6352_port_set_mcast_flood,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 10/13] net: dsa: mv88e6xxx: enable devlink ATU hash param for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (8 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 09/13] net: dsa: mv88e6xxx: enable .port_set_policy() " Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 11/13] net: dsa: mv88e6xxx: enable STU methods " Marek Behún
` (3 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit 23e8b470c7788 ("net: dsa: mv88e6xxx: Add devlink param for ATU
hash algorithm.") introduced ATU hash algorithm access via devlink, but
did not enable it for the 6320 family. Fix it.
Fixes: 23e8b470c778 ("net: dsa: mv88e6xxx: Add devlink param for ATU hash algorithm.")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index aba22ce3df07..3b141631b680 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5166,6 +5166,8 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
.rmu_disable = mv88e6352_g1_rmu_disable,
+ .atu_get_hash = mv88e6165_g1_atu_get_hash,
+ .atu_set_hash = mv88e6165_g1_atu_set_hash,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
@@ -5217,6 +5219,8 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.hardware_reset_post = mv88e6xxx_g2_eeprom_wait,
.reset = mv88e6352_g1_reset,
.rmu_disable = mv88e6352_g1_rmu_disable,
+ .atu_get_hash = mv88e6165_g1_atu_get_hash,
+ .atu_set_hash = mv88e6165_g1_atu_set_hash,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 11/13] net: dsa: mv88e6xxx: enable STU methods for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (9 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 10/13] net: dsa: mv88e6xxx: enable devlink ATU hash param " Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 12/13] net: dsa: mv88e6xxx: fix internal PHYs " Marek Behún
` (2 subsequent siblings)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún
Commit c050f5e91b47 ("net: dsa: mv88e6xxx: Fill in STU support for all
supported chips") introduced STU methods but forgot to add it to the
6320 family. Fix it.
Fixes: c050f5e91b47 ("net: dsa: mv88e6xxx: Fill in STU support for all supported chips")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
drivers/net/dsa/mv88e6xxx/chip.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 3b141631b680..3849b8d55fa9 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -5170,6 +5170,8 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
.atu_set_hash = mv88e6165_g1_atu_set_hash,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
+ .stu_getnext = mv88e6352_g1_stu_getnext,
+ .stu_loadpurge = mv88e6352_g1_stu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
.avb_ops = &mv88e6352_avb_ops,
.ptp_ops = &mv88e6352_ptp_ops,
@@ -5223,6 +5225,8 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
.atu_set_hash = mv88e6165_g1_atu_set_hash,
.vtu_getnext = mv88e6352_g1_vtu_getnext,
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
+ .stu_getnext = mv88e6352_g1_stu_getnext,
+ .stu_loadpurge = mv88e6352_g1_stu_loadpurge,
.gpio_ops = &mv88e6352_gpio_ops,
.avb_ops = &mv88e6352_avb_ops,
.ptp_ops = &mv88e6352_ptp_ops,
@@ -6239,6 +6243,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.num_internal_phys = 5,
.num_gpio = 15,
.max_vid = 4095,
+ .max_sid = 63,
.port_base_addr = 0x10,
.phy_base_addr = 0x0,
.global1_addr = 0x1b,
@@ -6265,6 +6270,7 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.num_internal_phys = 5,
.num_gpio = 15,
.max_vid = 4095,
+ .max_sid = 63,
.port_base_addr = 0x10,
.phy_base_addr = 0x0,
.global1_addr = 0x1b,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 12/13] net: dsa: mv88e6xxx: fix internal PHYs for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (10 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 11/13] net: dsa: mv88e6xxx: enable STU methods " Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 13:41 ` [PATCH net 13/13] net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum " Marek Behún
2025-03-13 14:14 ` [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Russell King (Oracle)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún, stable
Fix internal PHYs definition for the 6320 family, which has only 2
internal PHYs (on ports 3 and 4).
Fixes: bc3931557d1d ("net: dsa: mv88e6xxx: Add number of internal PHYs")
Signed-off-by: Marek Behún <kabel@kernel.org>
Cc: <stable@vger.kernel.org> # 6.6.x
---
drivers/net/dsa/mv88e6xxx/chip.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 3849b8d55fa9..898aff46693b 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -6240,7 +6240,8 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.num_databases = 4096,
.num_macs = 8192,
.num_ports = 7,
- .num_internal_phys = 5,
+ .num_internal_phys = 2,
+ .internal_phys_offset = 3,
.num_gpio = 15,
.max_vid = 4095,
.max_sid = 63,
@@ -6267,7 +6268,8 @@ static const struct mv88e6xxx_info mv88e6xxx_table[] = {
.num_databases = 4096,
.num_macs = 8192,
.num_ports = 7,
- .num_internal_phys = 5,
+ .num_internal_phys = 2,
+ .internal_phys_offset = 3,
.num_gpio = 15,
.max_vid = 4095,
.max_sid = 63,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* [PATCH net 13/13] net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum for 6320 family
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (11 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 12/13] net: dsa: mv88e6xxx: fix internal PHYs " Marek Behún
@ 2025-03-13 13:41 ` Marek Behún
2025-03-13 14:14 ` [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Russell King (Oracle)
13 siblings, 0 replies; 19+ messages in thread
From: Marek Behún @ 2025-03-13 13:41 UTC (permalink / raw)
To: Andrew Lunn, Vladimir Oltean, Russell King (Oracle),
Vivien Didelot, Tobias Waldekranz, netdev
Cc: Lev Olshvang, Marek Behún, stable
Implement the workaround for erratum
3.3 RGMII timing may be out of spec when transmit delay is enabled
for the 6320 family, which says:
When transmit delay is enabled via Port register 1 bit 14 = 1, duty
cycle may be out of spec. Under very rare conditions this may cause
the attached device receive CRC errors.
Signed-off-by: Marek Behún <kabel@kernel.org>
Cc: <stable@vger.kernel.org> # 5.4.x
---
drivers/net/dsa/mv88e6xxx/chip.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 898aff46693b..6e7c9bbd9787 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -3674,6 +3674,21 @@ static int mv88e6xxx_stats_setup(struct mv88e6xxx_chip *chip)
return mv88e6xxx_g1_stats_clear(chip);
}
+static int mv88e6320_setup_errata(struct mv88e6xxx_chip *chip)
+{
+ u16 dummy;
+ int err;
+
+ /* Workaround for erratum
+ * 3.3 RGMII timing may be out of spec when transmit delay is enabled
+ */
+ err = mv88e6xxx_port_hidden_write(chip, 0, 0xf, 0x7, 0xe000);
+ if (err)
+ return err;
+
+ return mv88e6xxx_port_hidden_read(chip, 0, 0xf, 0x7, &dummy);
+}
+
/* Check if the errata has already been applied. */
static bool mv88e6390_setup_errata_applied(struct mv88e6xxx_chip *chip)
{
@@ -5125,6 +5140,7 @@ static const struct mv88e6xxx_ops mv88e6290_ops = {
static const struct mv88e6xxx_ops mv88e6320_ops = {
/* MV88E6XXX_FAMILY_6320 */
+ .setup_errata = mv88e6320_setup_errata,
.ieee_pri_map = mv88e6085_g1_ieee_pri_map,
.ip_pri_map = mv88e6085_g1_ip_pri_map,
.irl_init_all = mv88e6352_g2_irl_init_all,
@@ -5180,6 +5196,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
static const struct mv88e6xxx_ops mv88e6321_ops = {
/* MV88E6XXX_FAMILY_6320 */
+ .setup_errata = mv88e6320_setup_errata,
.ieee_pri_map = mv88e6085_g1_ieee_pri_map,
.ip_pri_map = mv88e6085_g1_ip_pri_map,
.irl_init_all = mv88e6352_g2_irl_init_all,
--
2.48.1
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family)
2025-03-13 13:41 [PATCH net 00/13] Fixes for mv88e6xxx (mainly 6320 family) Marek Behún
` (12 preceding siblings ...)
2025-03-13 13:41 ` [PATCH net 13/13] net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum " Marek Behún
@ 2025-03-13 14:14 ` Russell King (Oracle)
13 siblings, 0 replies; 19+ messages in thread
From: Russell King (Oracle) @ 2025-03-13 14:14 UTC (permalink / raw)
To: Marek Behún
Cc: Andrew Lunn, Vladimir Oltean, Vivien Didelot, Tobias Waldekranz,
netdev, Lev Olshvang
Overall, your patch descriptions talk about "forgot to". Realistically,
it's probably "don't know about this switch because we don't have
access to the documentation so best leave it alone"
On Thu, Mar 13, 2025 at 02:41:33PM +0100, Marek Behún wrote:
> Hello Andrew et al.,
>
> This is a series of fixes for the mv88e6xxx driver:
> - one change removes an unused method
> - one fix for 6341 family
> - eleven fixes for 6320 family
>
> Marek
>
> Marek Behún (13):
> net: dsa: mv88e6xxx: remove unused .port_max_speed_mode()
> net: dsa: mv88e6xxx: fix VTU methods for 6320 family
> net: dsa: mv88e6xxx: fix number of g1 interrupts for 6320 family
> net: dsa: mv88e6xxx: allow SPEED_200 for 6320 family on supported
> ports
> net: dsa: mv88e6xxx: fix atu_move_port_mask for 6341 family
> net: dsa: mv88e6xxx: enable PVT for 6321 switch
> net: dsa: mv88e6xxx: define .pot_clear() for 6321
> net: dsa: mv88e6xxx: enable .rmu_disable() for 6320 family
> net: dsa: mv88e6xxx: enable .port_set_policy() for 6320 family
> net: dsa: mv88e6xxx: enable devlink ATU hash param for 6320 family
> net: dsa: mv88e6xxx: enable STU methods for 6320 family
> net: dsa: mv88e6xxx: fix internal PHYs for 6320 family
> net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum for 6320
> family
>
> drivers/net/dsa/mv88e6xxx/chip.c | 68 ++++++++++++++++++++++----------
> drivers/net/dsa/mv88e6xxx/chip.h | 4 --
> drivers/net/dsa/mv88e6xxx/port.c | 55 +++++++-------------------
> drivers/net/dsa/mv88e6xxx/port.h | 11 +-----
> 4 files changed, 64 insertions(+), 74 deletions(-)
>
> --
> 2.48.1
>
>
--
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] 19+ messages in thread