From 3d816d252515f2b3a67a817bd2e358ae07e06bbb Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 12 Feb 2025 23:16:39 +0100 Subject: [PATCH] linux: Import mv88e6xxx standalone LAG fix --- ...e6xxx-Fix-timeout-on-waiting-for-PPU.patch | 7 +- ...x-Improve-indirect-register-access-p.patch | 7 +- ...x-Honor-ports-being-managed-via-in-b.patch | 7 +- ...x-Limit-rsvd2cpu-policy-to-user-port.patch | 7 +- ...dsa-mv88e6xxx-Add-LED-infrastructure.patch | 7 +- ...-mv88e6xxx-Add-LED-support-for-6393X.patch | 7 +- ...Use-tag-priority-as-initial-skb-prio.patch | 7 +- ...MDB-memberships-whose-L2-addresses-o.patch | 7 +- ...t-EtherType-based-priority-overrides.patch | 7 +- ...x-Support-EtherType-based-priority-o.patch | 7 +- ...a-mv88e6xxx-Add-mqprio-qdisc-support.patch | 7 +- ...x-Use-VLAN-prio-over-IP-when-both-ar.patch | 7 +- ...8e6xxx-Trap-locally-terminated-VLANs.patch | 7 +- ...0g-Support-firmware-loading-on-88X33.patch | 7 +- ...0g-Fix-power-up-when-strapped-to-sta.patch | 7 +- ...rvell10g-Add-LED-support-for-88X3310.patch | 7 +- ...0g-Support-LEDs-tied-to-a-single-med.patch | 7 +- ...phy-Do-not-resume-PHY-when-attaching.patch | 7 +- ...-classifying-unknown-multicast-as-mr.patch | 7 +- ...e-router-ports-when-forwarding-L2-mu.patch | 6 +- ...delay-for-applying-strict-multicast-.patch | 7 +- ...rentiate-MDB-additions-from-modifica.patch | 7 +- ...ie-tlv-Let-device-probe-even-when-TL.patch | 7 +- ...t-log-level-for-unauthorized-devices.patch | 7 +- ...x-collapse-disabled-state-into-block.patch | 7 +- ...x-Only-activate-LAG-offloading-when-.patch | 147 ++++++++++++++++++ 26 files changed, 196 insertions(+), 125 deletions(-) create mode 100644 patches/linux/6.12.13/0026-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch diff --git a/patches/linux/6.12.13/0001-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch b/patches/linux/6.12.13/0001-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch index 42d717af..1f077e57 100644 --- a/patches/linux/6.12.13/0001-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch +++ b/patches/linux/6.12.13/0001-FIX-net-dsa-mv88e6xxx-Fix-timeout-on-waiting-for-PPU.patch @@ -1,18 +1,15 @@ From 773a0e32210336d682148e2e4c87add5e69105ec Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 12 Mar 2024 10:27:24 +0100 -Subject: [PATCH 01/25] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for +Subject: [PATCH 01/26] [FIX] net: dsa: mv88e6xxx: Fix timeout on waiting for PPU on 6393X -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires In a multi-chip setup, delays of up to 750ms are observed before the device (6393X) signals completion of PPU initialization (Global 1, register 0, bit 15). Therefore, increase the timeout threshold to 1s. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/linux/6.12.13/0002-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch b/patches/linux/6.12.13/0002-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch index 8b7fb35a..c32771d7 100644 --- a/patches/linux/6.12.13/0002-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch +++ b/patches/linux/6.12.13/0002-net-dsa-mv88e6xxx-Improve-indirect-register-access-p.patch @@ -1,11 +1,8 @@ From 765cc95de163acf8022b093ce227184e04b49d7b Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 27 Mar 2024 15:52:43 +0100 -Subject: [PATCH 02/25] net: dsa: mv88e6xxx: Improve indirect register access +Subject: [PATCH 02/26] net: dsa: mv88e6xxx: Improve indirect register access perf on 6393 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires When operating in multi-chip mode, the 6393 family maps a subset of @@ -17,7 +14,7 @@ Therefore, add a new set of SMI operations which remaps accesses to such registers to the corresponding directly addressable register. All other accesses use the regular indirect interface. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 7 +++ drivers/net/dsa/mv88e6xxx/global1.h | 3 ++ diff --git a/patches/linux/6.12.13/0003-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch b/patches/linux/6.12.13/0003-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch index 192dd061..33b6baba 100644 --- a/patches/linux/6.12.13/0003-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch +++ b/patches/linux/6.12.13/0003-net-dsa-mv88e6xxx-Honor-ports-being-managed-via-in-b.patch @@ -1,11 +1,8 @@ From eb1ba5920254e04daff5c9a09e90b8882bf34490 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Mon, 22 Apr 2024 23:18:01 +0200 -Subject: [PATCH 03/25] net: dsa: mv88e6xxx: Honor ports being managed via +Subject: [PATCH 03/26] net: dsa: mv88e6xxx: Honor ports being managed via in-band-status -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Keep all link parameters in their unforced states when the port is @@ -17,7 +14,7 @@ This state is the default set up by mv88e6xxx_port_setup_mac(), so all we have to do is to make the phylink MAC callbacks no-ops in cases when in-band-status is being used. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/patches/linux/6.12.13/0004-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch b/patches/linux/6.12.13/0004-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch index 7ba0de08..304702f8 100644 --- a/patches/linux/6.12.13/0004-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch +++ b/patches/linux/6.12.13/0004-net-dsa-mv88e6xxx-Limit-rsvd2cpu-policy-to-user-port.patch @@ -1,11 +1,8 @@ From 8b3590e253746d5704650889c106cf5454e26cd3 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 24 Apr 2024 22:41:04 +0200 -Subject: [PATCH 04/25] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user +Subject: [PATCH 04/26] net: dsa: mv88e6xxx: Limit rsvd2cpu policy to user ports on 6393X -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires For packets with a DA in the IEEE reserved L2 group range, originating @@ -33,7 +30,7 @@ switch would try to trap it back to the CPU. Given that the CPU is trusted, instead assume that it indeed meant for the packet to be forwarded like any other. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/port.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/patches/linux/6.12.13/0005-net-dsa-mv88e6xxx-Add-LED-infrastructure.patch b/patches/linux/6.12.13/0005-net-dsa-mv88e6xxx-Add-LED-infrastructure.patch index 5fe6f6d2..78f29b24 100644 --- a/patches/linux/6.12.13/0005-net-dsa-mv88e6xxx-Add-LED-infrastructure.patch +++ b/patches/linux/6.12.13/0005-net-dsa-mv88e6xxx-Add-LED-infrastructure.patch @@ -1,16 +1,13 @@ From 3c13e341f9e18cdd819584086bed0d207a3f042a Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 16 Nov 2023 19:44:32 +0100 -Subject: [PATCH 05/25] net: dsa: mv88e6xxx: Add LED infrastructure -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 05/26] net: dsa: mv88e6xxx: Add LED infrastructure Organization: Wires Parse DT for LEDs and register them for devices that support it, though no actual implementations exist yet. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/Makefile | 1 + drivers/net/dsa/mv88e6xxx/chip.c | 5 +- diff --git a/patches/linux/6.12.13/0006-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch b/patches/linux/6.12.13/0006-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch index 495d6cb3..f92c5dba 100644 --- a/patches/linux/6.12.13/0006-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch +++ b/patches/linux/6.12.13/0006-net-dsa-mv88e6xxx-Add-LED-support-for-6393X.patch @@ -1,10 +1,7 @@ From eb8d96aab3ee81c40252f8c5e1628b3709e23cab Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 16 Nov 2023 21:59:35 +0100 -Subject: [PATCH 06/25] net: dsa: mv88e6xxx: Add LED support for 6393X -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 06/26] net: dsa: mv88e6xxx: Add LED support for 6393X Organization: Wires Trigger support: @@ -12,7 +9,7 @@ Trigger support: - "timer" - "netdev" -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 1 + drivers/net/dsa/mv88e6xxx/leds.c | 229 +++++++++++++++++++++++++++++++ diff --git a/patches/linux/6.12.13/0007-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch b/patches/linux/6.12.13/0007-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch index 92163eed..9516a801 100644 --- a/patches/linux/6.12.13/0007-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch +++ b/patches/linux/6.12.13/0007-net-dsa-tag_dsa-Use-tag-priority-as-initial-skb-prio.patch @@ -1,11 +1,8 @@ From 06a7be8d8ca0241b89504595b0838ecf25b6c768 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 28 May 2024 10:38:42 +0200 -Subject: [PATCH 07/25] net: dsa: tag_dsa: Use tag priority as initial +Subject: [PATCH 07/26] net: dsa: tag_dsa: Use tag priority as initial skb->priority -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Use the 3-bit priority field from the DSA tag as the initial packet @@ -23,7 +20,7 @@ can do with an "ingress-qos-map" on VLAN interfaces. Until that is implemented, support the setup that is likely to be the most common; a 1:1 mapping from FPri to skb->priority. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- net/dsa/tag_dsa.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/patches/linux/6.12.13/0008-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch b/patches/linux/6.12.13/0008-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch index d3d351b4..d6d8a186 100644 --- a/patches/linux/6.12.13/0008-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch +++ b/patches/linux/6.12.13/0008-net-dsa-Support-MDB-memberships-whose-L2-addresses-o.patch @@ -1,11 +1,8 @@ From 0312ac7f2a3d956ff9aec3f84b3b64302e59d36c Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 16 Jan 2024 16:00:55 +0100 -Subject: [PATCH 08/25] net: dsa: Support MDB memberships whose L2 addresses +Subject: [PATCH 08/26] net: dsa: Support MDB memberships whose L2 addresses overlap -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Multiple IP multicast groups (32 for v4, 2^80 for v6) map to the same @@ -33,7 +30,7 @@ needed to do this is already in place, since it is also needed on CPU and DSA ports. Thus, "implement" this by simply removing the guards which previously skipped reference countung on user ports. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- net/dsa/switch.c | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/patches/linux/6.12.13/0009-net-dsa-Support-EtherType-based-priority-overrides.patch b/patches/linux/6.12.13/0009-net-dsa-Support-EtherType-based-priority-overrides.patch index 5caa1aca..8a2ef754 100644 --- a/patches/linux/6.12.13/0009-net-dsa-Support-EtherType-based-priority-overrides.patch +++ b/patches/linux/6.12.13/0009-net-dsa-Support-EtherType-based-priority-overrides.patch @@ -1,13 +1,10 @@ From 45716feb5762311a384f38d8b6449fc652a73764 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 21 Mar 2024 19:12:15 +0100 -Subject: [PATCH 09/25] net: dsa: Support EtherType based priority overrides -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 09/26] net: dsa: Support EtherType based priority overrides Organization: Wires -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- include/net/dsa.h | 4 ++++ net/dsa/user.c | 56 +++++++++++++++++++++++++++++++++++++++++++++-- diff --git a/patches/linux/6.12.13/0010-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch b/patches/linux/6.12.13/0010-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch index b1886a18..5f17111b 100644 --- a/patches/linux/6.12.13/0010-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch +++ b/patches/linux/6.12.13/0010-net-dsa-mv88e6xxx-Support-EtherType-based-priority-o.patch @@ -1,14 +1,11 @@ From d2802357f81b4995c92fdd6f2ab8ea923b69cef1 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Fri, 22 Mar 2024 16:15:43 +0100 -Subject: [PATCH 10/25] net: dsa: mv88e6xxx: Support EtherType based priority +Subject: [PATCH 10/26] net: dsa: mv88e6xxx: Support EtherType based priority overrides -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 64 +++++++++++++++++++++++++++++ drivers/net/dsa/mv88e6xxx/chip.h | 21 ++++++++++ diff --git a/patches/linux/6.12.13/0011-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch b/patches/linux/6.12.13/0011-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch index 58887f29..a82eaf79 100644 --- a/patches/linux/6.12.13/0011-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch +++ b/patches/linux/6.12.13/0011-net-dsa-mv88e6xxx-Add-mqprio-qdisc-support.patch @@ -1,10 +1,7 @@ From 985f9b471326f65d2c29978b511181200c1b32dd Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 28 May 2024 11:04:22 +0200 -Subject: [PATCH 11/25] net: dsa: mv88e6xxx: Add mqprio qdisc support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 11/26] net: dsa: mv88e6xxx: Add mqprio qdisc support Organization: Wires Add support for attaching mqprio qdisc's to mv88e6xxx ports and use @@ -28,7 +25,7 @@ Since FPri is always a 3-bit field, even on older chips with only 4 physical queues, always report 8 queues and let the chip's policy handle the mapping down to the "real" number. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 70 ++++++++++++++++++++++++++++++++ net/dsa/tag_dsa.c | 4 +- diff --git a/patches/linux/6.12.13/0012-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch b/patches/linux/6.12.13/0012-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch index 0e097437..a323b565 100644 --- a/patches/linux/6.12.13/0012-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch +++ b/patches/linux/6.12.13/0012-net-dsa-mv88e6xxx-Use-VLAN-prio-over-IP-when-both-ar.patch @@ -1,11 +1,8 @@ From da95446b056b1efc27353d2549298580978a079f Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 29 May 2024 13:20:41 +0200 -Subject: [PATCH 12/25] net: dsa: mv88e6xxx: Use VLAN prio over IP when both +Subject: [PATCH 12/26] net: dsa: mv88e6xxx: Use VLAN prio over IP when both are available -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Switch the priority sourcing precdence to prefer VLAN PCP over IP @@ -26,7 +23,7 @@ main reasons for choosing the new default: core over trusted VLAN trunks, the packet should keep its original priority, independent of what inner protocol fields may indicate. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/patches/linux/6.12.13/0013-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch b/patches/linux/6.12.13/0013-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch index c211f3d6..5a9dc371 100644 --- a/patches/linux/6.12.13/0013-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch +++ b/patches/linux/6.12.13/0013-FIX-net-dsa-mv88e6xxx-Trap-locally-terminated-VLANs.patch @@ -1,11 +1,8 @@ From e4a71c66724ba89a37dee71db5ae9e555676547e Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 26 Nov 2024 19:45:59 +0100 -Subject: [PATCH 13/25] [FIX] net: dsa: mv88e6xxx: Trap locally terminated +Subject: [PATCH 13/26] [FIX] net: dsa: mv88e6xxx: Trap locally terminated VLANs -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Before this change, in a setup like the following, packets assigned to @@ -28,7 +25,7 @@ marked as policy entries. As the VTU policy of user ports is already set to TRAP (to ensure proper standalone port operation), this will cause all packets assigned to these VLANs to properly terminated. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/chip.c | 33 ++++++++++++++++++-------------- include/net/switchdev.h | 4 ++++ diff --git a/patches/linux/6.12.13/0014-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch b/patches/linux/6.12.13/0014-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch index 3b75bef9..af6ff794 100644 --- a/patches/linux/6.12.13/0014-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch +++ b/patches/linux/6.12.13/0014-net-phy-marvell10g-Support-firmware-loading-on-88X33.patch @@ -1,11 +1,8 @@ From 9ade37c2fa9f5a6faebeaa8894d9703624eae5ef Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 19 Sep 2023 18:38:10 +0200 -Subject: [PATCH 14/25] net: phy: marvell10g: Support firmware loading on +Subject: [PATCH 14/26] net: phy: marvell10g: Support firmware loading on 88X3310 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires When probing, if a device is waiting for firmware to be loaded into @@ -15,7 +12,7 @@ We have no choice but to bail out of the probe if firmware is not available, as the device does not have any built-in image on which to fall back. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/phy/marvell10g.c | 161 +++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/patches/linux/6.12.13/0015-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch b/patches/linux/6.12.13/0015-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch index d1675448..9c8fe144 100644 --- a/patches/linux/6.12.13/0015-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch +++ b/patches/linux/6.12.13/0015-net-phy-marvell10g-Fix-power-up-when-strapped-to-sta.patch @@ -1,18 +1,15 @@ From 9571b0e79717fbcef4540b9a20a4fb2fe4c57f26 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 21 Nov 2023 20:15:24 +0100 -Subject: [PATCH 15/25] net: phy: marvell10g: Fix power-up when strapped to +Subject: [PATCH 15/26] net: phy: marvell10g: Fix power-up when strapped to start powered down -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires On devices which are hardware strapped to start powered down (PDSTATE == 1), make sure that we clear the power-down bit on all units affected by this setting. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/phy/marvell10g.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/patches/linux/6.12.13/0016-net-phy-marvell10g-Add-LED-support-for-88X3310.patch b/patches/linux/6.12.13/0016-net-phy-marvell10g-Add-LED-support-for-88X3310.patch index 168e2e3e..af5cd832 100644 --- a/patches/linux/6.12.13/0016-net-phy-marvell10g-Add-LED-support-for-88X3310.patch +++ b/patches/linux/6.12.13/0016-net-phy-marvell10g-Add-LED-support-for-88X3310.patch @@ -1,10 +1,7 @@ From 05a6f49a221e797fdbd21501902bd969b9c64640 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 15 Nov 2023 20:58:42 +0100 -Subject: [PATCH 16/25] net: phy: marvell10g: Add LED support for 88X3310 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 16/26] net: phy: marvell10g: Add LED support for 88X3310 Organization: Wires Pickup the LEDs from the state in which the hardware reset or @@ -21,7 +18,7 @@ Trigger support: - "netdev": Offload link or duplex information to the solid behavior; tx and/or rx activity to blink behavior. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/phy/marvell10g.c | 422 +++++++++++++++++++++++++++++++++++ 1 file changed, 422 insertions(+) diff --git a/patches/linux/6.12.13/0017-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch b/patches/linux/6.12.13/0017-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch index 66e1daba..92cc8770 100644 --- a/patches/linux/6.12.13/0017-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch +++ b/patches/linux/6.12.13/0017-net-phy-marvell10g-Support-LEDs-tied-to-a-single-med.patch @@ -1,11 +1,8 @@ From 202a7fccb4d46e38ed6f82788a44cf7320377549 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Tue, 12 Dec 2023 09:51:05 +0100 -Subject: [PATCH 17/25] net: phy: marvell10g: Support LEDs tied to a single +Subject: [PATCH 17/26] net: phy: marvell10g: Support LEDs tied to a single media side -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires In a combo-port setup, i.e. where both the copper and fiber interface @@ -18,7 +15,7 @@ the offloading of the "netdev" trigger, such that LEDs attached to the RJ45 jack only lights up when a copper link is established, and vice versa for the SFP cage. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/phy/marvell10g.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/patches/linux/6.12.13/0018-net-phy-Do-not-resume-PHY-when-attaching.patch b/patches/linux/6.12.13/0018-net-phy-Do-not-resume-PHY-when-attaching.patch index 00ba679d..ad2dbef6 100644 --- a/patches/linux/6.12.13/0018-net-phy-Do-not-resume-PHY-when-attaching.patch +++ b/patches/linux/6.12.13/0018-net-phy-Do-not-resume-PHY-when-attaching.patch @@ -1,10 +1,7 @@ From 31f2aa0e957643cc51be65750c4f65be8c507a18 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Wed, 27 Mar 2024 10:10:19 +0100 -Subject: [PATCH 18/25] net: phy: Do not resume PHY when attaching -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 18/26] net: phy: Do not resume PHY when attaching Organization: Wires The PHY should not start negotiating with its link-partner until @@ -19,7 +16,7 @@ probing (e.g. DSA) would end up with a physical link being established, even though the corresponding interface was still administratively down. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/phy/phy_device.c | 1 - 1 file changed, 1 deletion(-) diff --git a/patches/linux/6.12.13/0019-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch b/patches/linux/6.12.13/0019-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch index 459115b1..6ea42ba4 100644 --- a/patches/linux/6.12.13/0019-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch +++ b/patches/linux/6.12.13/0019-net-bridge-avoid-classifying-unknown-multicast-as-mr.patch @@ -1,11 +1,8 @@ From 83c259d997fa40f0b9b9a3250746531df9c730c3 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 4 Mar 2024 16:47:28 +0100 -Subject: [PATCH 19/25] net: bridge: avoid classifying unknown multicast as +Subject: [PATCH 19/26] net: bridge: avoid classifying unknown multicast as mrouters_only -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Unknown multicast, MAC/IPv4/IPv6, should always be flooded according to @@ -19,7 +16,7 @@ Because a multicast router should always receive both known and unknown multicast. Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- include/uapi/linux/if_bridge.h | 1 + net/bridge/br.c | 5 +++++ diff --git a/patches/linux/6.12.13/0020-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch b/patches/linux/6.12.13/0020-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch index f80267f4..6c5e012a 100644 --- a/patches/linux/6.12.13/0020-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch +++ b/patches/linux/6.12.13/0020-net-bridge-Ignore-router-ports-when-forwarding-L2-mu.patch @@ -1,11 +1,8 @@ From f2d2f489eb2073e79d3908a4f9abe797ce5c5a17 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Tue, 5 Mar 2024 06:44:41 +0100 -Subject: [PATCH 20/25] net: bridge: Ignore router ports when forwarding L2 +Subject: [PATCH 20/26] net: bridge: Ignore router ports when forwarding L2 multicast -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Multicast router ports are either statically configured or learned from @@ -15,7 +12,6 @@ of unknown multicast or using permanent MDB entries. Signed-off-by: Tobias Waldekranz Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström --- net/bridge/br_private.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/patches/linux/6.12.13/0021-net-bridge-drop-delay-for-applying-strict-multicast-.patch b/patches/linux/6.12.13/0021-net-bridge-drop-delay-for-applying-strict-multicast-.patch index 301ea7bd..4ce2c3d1 100644 --- a/patches/linux/6.12.13/0021-net-bridge-drop-delay-for-applying-strict-multicast-.patch +++ b/patches/linux/6.12.13/0021-net-bridge-drop-delay-for-applying-strict-multicast-.patch @@ -1,11 +1,8 @@ From 4a88856e21984b9292361ad77d7dfc13fad239a5 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 4 Apr 2024 16:36:30 +0200 -Subject: [PATCH 21/25] net: bridge: drop delay for applying strict multicast +Subject: [PATCH 21/26] net: bridge: drop delay for applying strict multicast filtering -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires This *local* patch drops the initial delay before applying strict multicast @@ -22,7 +19,7 @@ A proper fix for upstreaming could be to add a knob to disable the delay. [2]: https://lore.kernel.org/netdev/20240127175033.9640-1-linus.luessing@c0d3.blue/ Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- net/bridge/br_multicast.c | 42 +++++++-------------------------------- net/bridge/br_private.h | 4 +--- diff --git a/patches/linux/6.12.13/0022-net-bridge-Differentiate-MDB-additions-from-modifica.patch b/patches/linux/6.12.13/0022-net-bridge-Differentiate-MDB-additions-from-modifica.patch index b73c14e5..acbf6b3e 100644 --- a/patches/linux/6.12.13/0022-net-bridge-Differentiate-MDB-additions-from-modifica.patch +++ b/patches/linux/6.12.13/0022-net-bridge-Differentiate-MDB-additions-from-modifica.patch @@ -1,11 +1,8 @@ From 12fe155cedae381d143a0b61b5375d1edb7c46e6 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Thu, 16 May 2024 14:51:54 +0200 -Subject: [PATCH 22/25] net: bridge: Differentiate MDB additions from +Subject: [PATCH 22/26] net: bridge: Differentiate MDB additions from modifications -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Before this change, the reception of an IGMPv3 report (and analogously @@ -25,7 +22,7 @@ generated. Therefore, discriminate new groups from changes to existing groups by introducing a RTM_SETMDB events to be used in the latter scenario. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- include/uapi/linux/rtnetlink.h | 2 ++ net/bridge/br_mdb.c | 4 ++-- diff --git a/patches/linux/6.12.13/0023-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch b/patches/linux/6.12.13/0023-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch index af5bf18c..a6ef5f88 100644 --- a/patches/linux/6.12.13/0023-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch +++ b/patches/linux/6.12.13/0023-nvmem-layouts-onie-tlv-Let-device-probe-even-when-TL.patch @@ -1,11 +1,8 @@ From d8d81ca2a348095d87110d3d6a65134f1b7ce212 Mon Sep 17 00:00:00 2001 From: Tobias Waldekranz Date: Fri, 24 Nov 2023 23:29:55 +0100 -Subject: [PATCH 23/25] nvmem: layouts: onie-tlv: Let device probe even when +Subject: [PATCH 23/26] nvmem: layouts: onie-tlv: Let device probe even when TLV is invalid -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires Before this change, probing an NVMEM device, expected to contain a @@ -17,7 +14,7 @@ be successfully probed. Therefore, settle for reporting data corruption issues in the log, and simply refrain from registering any cells in those cases. -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/nvmem/layouts/onie-tlv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/linux/6.12.13/0024-usb-core-adjust-log-level-for-unauthorized-devices.patch b/patches/linux/6.12.13/0024-usb-core-adjust-log-level-for-unauthorized-devices.patch index 09c648af..d4f07cc5 100644 --- a/patches/linux/6.12.13/0024-usb-core-adjust-log-level-for-unauthorized-devices.patch +++ b/patches/linux/6.12.13/0024-usb-core-adjust-log-level-for-unauthorized-devices.patch @@ -1,10 +1,7 @@ From 49592053a901870104c3ea6f6d4a4c18711c955d Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Mon, 29 Apr 2024 15:14:51 +0200 -Subject: [PATCH 24/25] usb: core: adjust log level for unauthorized devices -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit +Subject: [PATCH 24/26] usb: core: adjust log level for unauthorized devices Organization: Wires The fact that a USB device currently is not authorized is not an error, @@ -12,7 +9,7 @@ so let's adjust the log level so these messages slip below radar for the commonly used 'quiet' log level. Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/usb/core/driver.c | 4 ++-- drivers/usb/core/generic.c | 2 +- diff --git a/patches/linux/6.12.13/0025-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch b/patches/linux/6.12.13/0025-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch index 0012f634..0aab713f 100644 --- a/patches/linux/6.12.13/0025-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch +++ b/patches/linux/6.12.13/0025-net-dsa-mv88e6xxx-collapse-disabled-state-into-block.patch @@ -1,11 +1,8 @@ From a86053426ab5a0e9155e0b4c7c20495964fa4b59 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Thu, 16 Jan 2025 12:35:12 +0100 -Subject: [PATCH 25/25] net: dsa: mv88e6xxx: collapse disabled state into +Subject: [PATCH 25/26] net: dsa: mv88e6xxx: collapse disabled state into blocking -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit Organization: Wires This patch changes the behavior of switchcore ports wrt. the port state. @@ -21,7 +18,7 @@ each member port, preventing LACPDUs from passing through to qualify the link and become active. Signed-off-by: Joachim Wiberg -Signed-off-by: Mattias Walström +Signed-off-by: Tobias Waldekranz --- drivers/net/dsa/mv88e6xxx/port.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/patches/linux/6.12.13/0026-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch b/patches/linux/6.12.13/0026-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch new file mode 100644 index 00000000..1c813e2b --- /dev/null +++ b/patches/linux/6.12.13/0026-net-dsa-mv88e6xxx-Only-activate-LAG-offloading-when-.patch @@ -0,0 +1,147 @@ +From a98487405e1a7b8b69569a3e5f7765f395c36f55 Mon Sep 17 00:00:00 2001 +From: Tobias Waldekranz +Date: Wed, 12 Feb 2025 22:03:14 +0100 +Subject: [PATCH 26/26] net: dsa: mv88e6xxx: Only activate LAG offloading when + bridged +Organization: Wires + +The current port isolation scheme for mv88e6xxx is detailed here: +https://lore.kernel.org/netdev/20220203101657.990241-1-tobias@waldekranz.com/ + +As it turns out, this is not compatible with LAGs. Consider the +following setup: + + .-----. + | CPU | + '--+--' + | + .--0--. .-----. + | sw1 9---0 sw2 | + '-----' '-4-5-' + +A LAG is created from sw2p{4,5}, using ID 0, but it is not attached +to any bridge - so port isolation is active. Let's walk through a +packet's journey to the CPU: + +1. Packet ingresses sw2p4, the MapDA bit is not set, so it is flooded + according to the PVT, which only contains sw2p0 +2. Packet egresses sw2p0 with FORWARD vid:0 dev:2 port:0(lag) +3. Packet ingresses sw1p9, the VTU policy bit is set for VLAN 0, thus + the packet is classified as MGMT and trapped to the CPU +4. Packet egresses sw1p0 with TO_CPU vid:0 dev:2 port:0 +5. Packet ingresses CPU, since no user port is mapped to sw2p0 the + packet is dropped + +The problem is that in step 2, the original source port information is +lost (replaced with "lag 0"), and then sw1 rewrites the ingressing +FORWARD to a TO_CPU, which does not have a LAG bit. As a result, after +the translation between steps 3 and 4, it now looks as if the packet +originally ingressed on sw2p0. + +Therefore, defer enabling the LAG offload until it joins a bridge. In +the example above, it means that the original source port (sw2p4) +information will be in the FORWARD sent in step 2, which allows the +existing port isolation to work as intended. + +Before joining a bridge, the offload does not offer any performance +benefit anyway. All ingressing packet will always have to go to the +CPU; egress traffic always relies on software hashing. + +Signed-off-by: Tobias Waldekranz +--- + drivers/net/dsa/mv88e6xxx/chip.c | 42 +++++++++++++++----------------- + 1 file changed, 20 insertions(+), 22 deletions(-) + +diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c +index 785cd3d0e2b1..37e79d52c175 100644 +--- a/drivers/net/dsa/mv88e6xxx/chip.c ++++ b/drivers/net/dsa/mv88e6xxx/chip.c +@@ -3065,6 +3065,7 @@ static int mv88e6xxx_port_bridge_join(struct dsa_switch *ds, int port, + struct netlink_ext_ack *extack) + { + struct mv88e6xxx_chip *chip = ds->priv; ++ unsigned int lagid; + int err; + + mv88e6xxx_reg_lock(chip); +@@ -3073,6 +3074,13 @@ static int mv88e6xxx_port_bridge_join(struct dsa_switch *ds, int port, + if (err) + goto unlock; + ++ if ((lagid = dsa_port_lag_id_get(dsa_to_port(ds, port)))) { ++ /* DSA LAG IDs are one-based */ ++ err = mv88e6xxx_port_set_trunk(chip, port, true, lagid - 1); ++ if (err) ++ goto unlock; ++ } ++ + err = mv88e6xxx_port_set_map_da(chip, port, true); + if (err) + goto unlock; +@@ -3117,6 +3125,14 @@ static void mv88e6xxx_port_bridge_leave(struct dsa_switch *ds, int port, + "port %d failed to restore map-DA: %pe\n", + port, ERR_PTR(err)); + ++ if (dsa_port_lag_id_get(dsa_to_port(ds, port))) { ++ err = mv88e6xxx_port_set_trunk(chip, port, false, 0); ++ if (err) ++ dev_err(ds->dev, ++ "port %d failed to disable trunking: %pe\n", ++ port, ERR_PTR(err)); ++ } ++ + err = mv88e6xxx_port_commit_pvid(chip, port); + if (err) + dev_err(ds->dev, +@@ -6992,30 +7008,13 @@ static int mv88e6xxx_port_lag_join(struct dsa_switch *ds, int port, + struct netlink_ext_ack *extack) + { + struct mv88e6xxx_chip *chip = ds->priv; +- int err, id; ++ int err; + + if (!mv88e6xxx_lag_can_offload(ds, lag, info, extack)) + return -EOPNOTSUPP; + +- /* DSA LAG IDs are one-based */ +- id = lag.id - 1; +- + mv88e6xxx_reg_lock(chip); +- +- err = mv88e6xxx_port_set_trunk(chip, port, true, id); +- if (err) +- goto err_unlock; +- + err = mv88e6xxx_lag_sync_masks_map(ds, lag); +- if (err) +- goto err_clear_trunk; +- +- mv88e6xxx_reg_unlock(chip); +- return 0; +- +-err_clear_trunk: +- mv88e6xxx_port_set_trunk(chip, port, false, 0); +-err_unlock: + mv88e6xxx_reg_unlock(chip); + return err; + } +@@ -7024,13 +7023,12 @@ static int mv88e6xxx_port_lag_leave(struct dsa_switch *ds, int port, + struct dsa_lag lag) + { + struct mv88e6xxx_chip *chip = ds->priv; +- int err_sync, err_trunk; ++ int err; + + mv88e6xxx_reg_lock(chip); +- err_sync = mv88e6xxx_lag_sync_masks_map(ds, lag); +- err_trunk = mv88e6xxx_port_set_trunk(chip, port, false, 0); ++ err = mv88e6xxx_lag_sync_masks_map(ds, lag); + mv88e6xxx_reg_unlock(chip); +- return err_sync ? : err_trunk; ++ return err; + } + + static int mv88e6xxx_crosschip_lag_change(struct dsa_switch *ds, int sw_index, +-- +2.43.0 +