netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
@ 2023-02-05 14:07 Vladimir Oltean
  2023-02-05 19:25 ` Arınç ÜNAL
                   ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-05 14:07 UTC (permalink / raw)
  To: netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich

Frank reports that in a mt7530 setup where some ports are standalone and
some are in a VLAN-aware bridge, 8021q uppers of the standalone ports
lose their VLAN tag on xmit, as seen by the link partner.

This seems to occur because once the other ports join the VLAN-aware
bridge, mt7530_port_vlan_filtering() also calls
mt7530_port_set_vlan_aware(ds, cpu_dp->index), and this affects the way
that the switch processes the traffic of the standalone port.

Relevant is the PVC_EG_TAG bit. The MT7530 documentation says about it:

EG_TAG: Incoming Port Egress Tag VLAN Attribution
0: disabled (system default)
1: consistent (keep the original ingress tag attribute)

My interpretation is that this setting applies on the ingress port, and
"disabled" is basically the normal behavior, where the egress tag format
of the packet (tagged or untagged) is decided by the VLAN table
(MT7530_VLAN_EGRESS_UNTAG or MT7530_VLAN_EGRESS_TAG).

But there is also an option of overriding the system default behavior,
and for the egress tagging format of packets to be decided not by the
VLAN table, but simply by copying the ingress tag format (if ingress was
tagged, egress is tagged; if ingress was untagged, egress is untagged;
aka "consistent). This is useful in 2 scenarios:

- VLAN-unaware bridge ports will always encounter a miss in the VLAN
  table. They should forward a packet as-is, though. So we use
  "consistent" there. See commit e045124e9399 ("net: dsa: mt7530: fix
  tagged frames pass-through in VLAN-unaware mode").

- Traffic injected from the CPU port. The operating system is in god
  mode; if it wants a packet to exit as VLAN-tagged, it sends it as
  VLAN-tagged. Otherwise it sends it as VLAN-untagged*.

*This is true only if we don't consider the bridge TX forwarding offload
feature, which mt7530 doesn't support.

So for now, make the CPU port always stay in "consistent" mode to allow
software VLANs to be forwarded to their egress ports with the VLAN tag
intact, and not stripped.

Link: https://lore.kernel.org/netdev/trinity-e6294d28-636c-4c40-bb8b-b523521b00be-1674233135062@3c-app-gmx-bs36/
Fixes: e045124e9399 ("net: dsa: mt7530: fix tagged frames pass-through in VLAN-unaware mode")
Reported-by: Frank Wunderlich <frank-w@public-files.de>
Tested-by: Frank Wunderlich <frank-w@public-files.de>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 drivers/net/dsa/mt7530.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 616b21c90d05..3a15015bc409 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -1302,14 +1302,26 @@ mt7530_port_set_vlan_aware(struct dsa_switch *ds, int port)
 		if (!priv->ports[port].pvid)
 			mt7530_rmw(priv, MT7530_PVC_P(port), ACC_FRM_MASK,
 				   MT7530_VLAN_ACC_TAGGED);
-	}
 
-	/* Set the port as a user port which is to be able to recognize VID
-	 * from incoming packets before fetching entry within the VLAN table.
-	 */
-	mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK | PVC_EG_TAG_MASK,
-		   VLAN_ATTR(MT7530_VLAN_USER) |
-		   PVC_EG_TAG(MT7530_VLAN_EG_DISABLED));
+		/* Set the port as a user port which is to be able to recognize
+		 * VID from incoming packets before fetching entry within the
+		 * VLAN table.
+		 */
+		mt7530_rmw(priv, MT7530_PVC_P(port),
+			   VLAN_ATTR_MASK | PVC_EG_TAG_MASK,
+			   VLAN_ATTR(MT7530_VLAN_USER) |
+			   PVC_EG_TAG(MT7530_VLAN_EG_DISABLED));
+	} else {
+		/* Also set CPU ports to the "user" VLAN port attribute, to
+		 * allow VLAN classification, but keep the EG_TAG attribute as
+		 * "consistent" (i.o.w. don't change its value) for packets
+		 * received by the switch from the CPU, so that tagged packets
+		 * are forwarded to user ports as tagged, and untagged as
+		 * untagged.
+		 */
+		mt7530_rmw(priv, MT7530_PVC_P(port), VLAN_ATTR_MASK,
+			   VLAN_ATTR(MT7530_VLAN_USER));
+	}
 }
 
 static void
-- 
2.34.1


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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 14:07 [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware Vladimir Oltean
@ 2023-02-05 19:25 ` Arınç ÜNAL
  2023-02-05 20:39   ` Vladimir Oltean
  2023-02-06 18:05 ` Florian Fainelli
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-05 19:25 UTC (permalink / raw)
  To: Vladimir Oltean, netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On 5.02.2023 17:07, Vladimir Oltean wrote:
> Frank reports that in a mt7530 setup where some ports are standalone and
> some are in a VLAN-aware bridge, 8021q uppers of the standalone ports
> lose their VLAN tag on xmit, as seen by the link partner.
> 
> This seems to occur because once the other ports join the VLAN-aware
> bridge, mt7530_port_vlan_filtering() also calls
> mt7530_port_set_vlan_aware(ds, cpu_dp->index), and this affects the way
> that the switch processes the traffic of the standalone port.
> 
> Relevant is the PVC_EG_TAG bit. The MT7530 documentation says about it:
> 
> EG_TAG: Incoming Port Egress Tag VLAN Attribution
> 0: disabled (system default)
> 1: consistent (keep the original ingress tag attribute)
> 
> My interpretation is that this setting applies on the ingress port, and
> "disabled" is basically the normal behavior, where the egress tag format
> of the packet (tagged or untagged) is decided by the VLAN table
> (MT7530_VLAN_EGRESS_UNTAG or MT7530_VLAN_EGRESS_TAG).
> 
> But there is also an option of overriding the system default behavior,
> and for the egress tagging format of packets to be decided not by the
> VLAN table, but simply by copying the ingress tag format (if ingress was
> tagged, egress is tagged; if ingress was untagged, egress is untagged;
> aka "consistent). This is useful in 2 scenarios:
> 
> - VLAN-unaware bridge ports will always encounter a miss in the VLAN
>    table. They should forward a packet as-is, though. So we use
>    "consistent" there. See commit e045124e9399 ("net: dsa: mt7530: fix
>    tagged frames pass-through in VLAN-unaware mode").
> 
> - Traffic injected from the CPU port. The operating system is in god
>    mode; if it wants a packet to exit as VLAN-tagged, it sends it as
>    VLAN-tagged. Otherwise it sends it as VLAN-untagged*.
> 
> *This is true only if we don't consider the bridge TX forwarding offload
> feature, which mt7530 doesn't support.
> 
> So for now, make the CPU port always stay in "consistent" mode to allow
> software VLANs to be forwarded to their egress ports with the VLAN tag
> intact, and not stripped.
> 
> Link: https://lore.kernel.org/netdev/trinity-e6294d28-636c-4c40-bb8b-b523521b00be-1674233135062@3c-app-gmx-bs36/
> Fixes: e045124e9399 ("net: dsa: mt7530: fix tagged frames pass-through in VLAN-unaware mode")
> Reported-by: Frank Wunderlich <frank-w@public-files.de>
> Tested-by: Frank Wunderlich <frank-w@public-files.de>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Tested on MT7621AT and MT7623NI boards with MT7530 switch. Both had this 
issue and this patch fixes it.

Tested-by: Arınç ÜNAL <arinc.unal@arinc9.com>

Unrelated to this, as in it existed before this patch, port@0 hasn't 
been working at all on my MT7621AT Unielec U7621-06 board and MT7623NI 
Bananapi BPI-R2.

Packets are sent out from master eth1 fine, the computer receives them. 
Frames are received on eth1 but nothing shows on the DSA slave interface 
of port@0. Sounds like malformed frames are received on eth1.

Cheers.
Arınç

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 19:25 ` Arınç ÜNAL
@ 2023-02-05 20:39   ` Vladimir Oltean
  2023-02-05 23:02     ` Arınç ÜNAL
  0 siblings, 1 reply; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-05 20:39 UTC (permalink / raw)
  To: Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

Hi Arınç,

On Sun, Feb 05, 2023 at 10:25:27PM +0300, Arınç ÜNAL wrote:
> Unrelated to this, as in it existed before this patch, port@0 hasn't been
> working at all on my MT7621AT Unielec U7621-06 board and MT7623NI Bananapi
> BPI-R2.
> 
> Packets are sent out from master eth1 fine, the computer receives them.
> Frames are received on eth1 but nothing shows on the DSA slave interface of
> port@0. Sounds like malformed frames are received on eth1.

I need to ask, how do the packets look like on the RX path of the DSA
master, as seen by tcpdump -i eth1 -e -n -Q in -XX? If they aren't
received, can you post consecutive outputs from ethtool -S eth1 | grep -v ': 0',
to see what (error) counter increments?

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 20:39   ` Vladimir Oltean
@ 2023-02-05 23:02     ` Arınç ÜNAL
  2023-02-05 23:50       ` Vladimir Oltean
  0 siblings, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-05 23:02 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

[-- Attachment #1: Type: text/plain, Size: 995 bytes --]

Hey Vladimir,

On 5.02.2023 23:39, Vladimir Oltean wrote:
> Hi Arınç,
> 
> On Sun, Feb 05, 2023 at 10:25:27PM +0300, Arınç ÜNAL wrote:
>> Unrelated to this, as in it existed before this patch, port@0 hasn't been
>> working at all on my MT7621AT Unielec U7621-06 board and MT7623NI Bananapi
>> BPI-R2.
>>
>> Packets are sent out from master eth1 fine, the computer receives them.
>> Frames are received on eth1 but nothing shows on the DSA slave interface of
>> port@0. Sounds like malformed frames are received on eth1.
> 
> I need to ask, how do the packets look like on the RX path of the DSA
> master, as seen by tcpdump -i eth1 -e -n -Q in -XX? If they aren't
> received, can you post consecutive outputs from ethtool -S eth1 | grep -v ': 0',
> to see what (error) counter increments?

I appreciate your effort on this. I've put it in the attachments to 
avoid column limit on the Thunderbird mail client. Ping runs on the 
device. Packet capture on the other side is attached.

Arınç

[-- Attachment #2: tcpdump-ethtool-output.txt --]
[-- Type: text/plain, Size: 7285 bytes --]

# tcpdump -i eth1
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
03:50:23.712032 AF Unknown (4294967295), length 46: 
	0x0000:  ffff 9292 6a47 1ac0 0001 0000 0806 0001  ....jG..........
	0x0010:  0800 0604 0001 9292 6a47 1ac0 c0a8 0201  ........jG......
	0x0020:  0000 0000 0000 c0a8 0202                 ..........
03:50:23.712246 AF Unknown (2459068999), length 60: 
	0x0000:  1ac0 e0d5 5ea4 edcc 0806 0001 0800 0604  ....^...........
	0x0010:  0002 e0d5 5ea4 edcc c0a8 0202 9292 6a47  ....^.........jG
	0x0020:  1ac0 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000                      ........
03:50:24.752024 AF Unknown (4294967295), length 46: 
	0x0000:  ffff 9292 6a47 1ac0 0001 0000 0806 0001  ....jG..........
	0x0010:  0800 0604 0001 9292 6a47 1ac0 c0a8 0201  ........jG......
	0x0020:  0000 0000 0000 c0a8 0202                 ..........
03:50:24.752242 AF Unknown (2459068999), length 60: 
	0x0000:  1ac0 e0d5 5ea4 edcc 0806 0001 0800 0604  ....^...........
	0x0010:  0002 e0d5 5ea4 edcc c0a8 0202 9292 6a47  ....^.........jG
	0x0020:  1ac0 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000                      ........
03:50:26.643931 AF Unknown (4294967295), length 46: 
	0x0000:  ffff 9292 6a47 1ac0 0001 0000 0806 0001  ....jG..........
	0x0010:  0800 0604 0001 9292 6a47 1ac0 c0a8 0201  ........jG......
	0x0020:  0000 0000 0000 c0a8 0202                 ..........
03:50:26.644144 AF Unknown (2459068999), length 60: 
	0x0000:  1ac0 e0d5 5ea4 edcc 0806 0001 0800 0604  ....^...........
	0x0010:  0002 e0d5 5ea4 edcc c0a8 0202 9292 6a47  ....^.........jG
	0x0020:  1ac0 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000                      ........
03:50:27.712033 AF Unknown (4294967295), length 46: 
	0x0000:  ffff 9292 6a47 1ac0 0001 0000 0806 0001  ....jG..........
	0x0010:  0800 0604 0001 9292 6a47 1ac0 c0a8 0201  ........jG......
	0x0020:  0000 0000 0000 c0a8 0202                 ..........
03:50:27.712241 AF Unknown (2459068999), length 60: 
	0x0000:  1ac0 e0d5 5ea4 edcc 0806 0001 0800 0604  ....^...........
	0x0010:  0002 e0d5 5ea4 edcc c0a8 0202 9292 6a47  ....^.........jG
	0x0020:  1ac0 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000                      ........
^C
8 packets captured
8 packets received by filter
0 packets dropped by kernel
# tcpdump -i eth1 -e -n -Q in -XX
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
03:50:38.645568 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:39.712248 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:40.752221 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:42.646123 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:43.712222 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:44.752219 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:46.646643 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:47.712241 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:48.752220 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
03:50:50.647141 AF Unknown (2459068999), length 60: 
	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
	0x0030:  0000 0000 0000 0000 0000 0000            ............
^C
10 packets captured
20 packets received by filter
0 packets dropped by kernel
# ethtool -S eth1 | grep -v ': 0'
NIC statistics:
     tx_bytes: 6272
     tx_packets: 81
     rx_bytes: 9089
     rx_packets: 136
     p05_TxUnicast: 52
     p05_TxMulticast: 3
     p05_TxBroadcast: 81
     p05_TxPktSz65To127: 136
     p05_TxBytes: 9633
     p05_RxFiltering: 11
     p05_RxUnicast: 11
     p05_RxMulticast: 26
     p05_RxBroadcast: 44
     p05_RxPktSz64: 47
     p05_RxPktSz65To127: 34
     p05_RxBytes: 6272
# ethtool -S eth1 | grep -v ': 0'
NIC statistics:
     tx_bytes: 6784
     tx_packets: 89
     rx_bytes: 9601
     rx_packets: 144
     p05_TxUnicast: 60
     p05_TxMulticast: 3
     p05_TxBroadcast: 81
     p05_TxPktSz65To127: 144
     p05_TxBytes: 10177
     p05_RxFiltering: 11
     p05_RxUnicast: 11
     p05_RxMulticast: 26
     p05_RxBroadcast: 52
     p05_RxPktSz64: 55
     p05_RxPktSz65To127: 34
     p05_RxBytes: 6784
# ethtool -S eth1 | grep -v ': 0'
NIC statistics:
     tx_bytes: 7424
     tx_packets: 99
     rx_bytes: 10241
     rx_packets: 154
     p05_TxUnicast: 70
     p05_TxMulticast: 3
     p05_TxBroadcast: 81
     p05_TxPktSz65To127: 154
     p05_TxBytes: 10857
     p05_RxFiltering: 11
     p05_RxUnicast: 11
     p05_RxMulticast: 26
     p05_RxBroadcast: 62
     p05_RxPktSz64: 65
     p05_RxPktSz65To127: 34
     p05_RxBytes: 7424


[-- Attachment #3: arp-frames.pcapng --]
[-- Type: application/x-pcapng, Size: 4472 bytes --]

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 23:02     ` Arınç ÜNAL
@ 2023-02-05 23:50       ` Vladimir Oltean
  2023-02-06  7:35         ` Frank Wunderlich
  2023-02-06 16:41         ` Arınç ÜNAL
  0 siblings, 2 replies; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-05 23:50 UTC (permalink / raw)
  To: Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On Mon, Feb 06, 2023 at 02:02:48AM +0300, Arınç ÜNAL wrote:
> # ethtool -S eth1 | grep -v ': 0'
> NIC statistics:
>      tx_bytes: 6272
>      tx_packets: 81
>      rx_bytes: 9089
>      rx_packets: 136
>      p05_TxUnicast: 52
>      p05_TxMulticast: 3
>      p05_TxBroadcast: 81
>      p05_TxPktSz65To127: 136
>      p05_TxBytes: 9633
>      p05_RxFiltering: 11
>      p05_RxUnicast: 11
>      p05_RxMulticast: 26
>      p05_RxBroadcast: 44
>      p05_RxPktSz64: 47
>      p05_RxPktSz65To127: 34
>      p05_RxBytes: 6272
> # ethtool -S eth1 | grep -v ': 0'
> NIC statistics:
>      tx_bytes: 6784
>      tx_packets: 89
>      rx_bytes: 9601
>      rx_packets: 144
>      p05_TxUnicast: 60
>      p05_TxMulticast: 3
>      p05_TxBroadcast: 81
>      p05_TxPktSz65To127: 144
>      p05_TxBytes: 10177
>      p05_RxFiltering: 11
>      p05_RxUnicast: 11
>      p05_RxMulticast: 26
>      p05_RxBroadcast: 52
>      p05_RxPktSz64: 55
>      p05_RxPktSz65To127: 34
>      p05_RxBytes: 6784
> # ethtool -S eth1 | grep -v ': 0'
> NIC statistics:
>      tx_bytes: 7424
>      tx_packets: 99
>      rx_bytes: 10241
>      rx_packets: 154
>      p05_TxUnicast: 70
>      p05_TxMulticast: 3
>      p05_TxBroadcast: 81
>      p05_TxPktSz65To127: 154
>      p05_TxBytes: 10857
>      p05_RxFiltering: 11
>      p05_RxUnicast: 11
>      p05_RxMulticast: 26
>      p05_RxBroadcast: 62
>      p05_RxPktSz64: 65
>      p05_RxPktSz65To127: 34
>      p05_RxBytes: 7424

I see no signs of packet loss on the DSA master or the CPU port.
However my analysis of the packets shows:

> # tcpdump -i eth1 -e -n -Q in -XX
> tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
> listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
> 03:50:38.645568 AF Unknown (2459068999), length 60: 
> 	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
                 ^              ^              ^
                 |              |              |
                 |              |              ETH_P_ARP
                 |              MAC SA:
                 |              e0:d5:5e:a4:ed:cc
                 MAC DA:
                 92:92:6a:47:1a:c0

> 	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
> 	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
> 	0x0030:  0000 0000 0000 0000 0000 0000            ............

So you have no tag_mtk header in the EtherType position where it's
supposed to be. This means you must be making use of the hardware DSA
untagging feature that Felix Fietkau added.

Let's do some debugging. I'd like to know 2 things, in this order.
First, whether DSA sees the accelerated header (stripped by hardware, as
opposed to being present in the packet):

diff --git a/net/dsa/tag.c b/net/dsa/tag.c
index b2fba1a003ce..e64628cf7fc1 100644
--- a/net/dsa/tag.c
+++ b/net/dsa/tag.c
@@ -75,12 +75,17 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
 		if (!skb_has_extensions(skb))
 			skb->slow_gro = 0;
 
+		netdev_err(dev, "%s: skb %px metadata dst contains port id %d attached\n",
+			   __func__, skb, port);
+
 		skb->dev = dsa_master_find_slave(dev, 0, port);
 		if (likely(skb->dev)) {
 			dsa_default_offload_fwd_mark(skb);
 			nskb = skb;
 		}
 	} else {
+		netdev_err(dev, "%s: there is no metadata dst attached to skb 0x%px\n",
+			   __func__, skb);
 		nskb = cpu_dp->rcv(skb, dev);
 	}
 

And second, which is what does the DSA master actually see, and put in
the skb metadata dst field:

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index f1cb1efc94cf..e7ff569959b4 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -2077,11 +2077,23 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
 		if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) {
 			unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0);
 
+			netdev_err(netdev, "%s: skb->vlan_proto 0x%x port %d\n", __func__,
+				   ntohs(skb->vlan_proto), port);
+
 			if (port < ARRAY_SIZE(eth->dsa_meta) &&
-			    eth->dsa_meta[port])
+			    eth->dsa_meta[port]) {
+				netdev_err(netdev, "%s: attaching metadata dst with port %d to skb 0x%px\n",
+					   __func__, port, skb);
 				skb_dst_set_noref(skb, &eth->dsa_meta[port]->dst);
+			} else {
+				netdev_err(netdev, "%s: not attaching any metadata dst to skb 0x%px\n",
+					   __func__, skb);
+			}
 
 			__vlan_hwaccel_clear_tag(skb);
+		} else if (netdev_uses_dsa(netdev)) {
+			netdev_err(netdev, "%s: received skb 0x%px without VLAN/DSA tag present\n",
+				   __func__, skb);
 		}
 
 		skb_record_rx_queue(skb, 0);

Be warned that there may be a considerable amount of output to the console,
so it would be best if you used a single switch port with small amounts
of traffic.

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 23:50       ` Vladimir Oltean
@ 2023-02-06  7:35         ` Frank Wunderlich
  2023-02-06  7:41           ` Arınç ÜNAL
  2023-02-06 16:41         ` Arınç ÜNAL
  1 sibling, 1 reply; 24+ messages in thread
From: Frank Wunderlich @ 2023-02-06  7:35 UTC (permalink / raw)
  To: Vladimir Oltean, Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, erkin.bozoglu,
	richard

Am 6. Februar 2023 00:50:53 MEZ schrieb Vladimir Oltean <vladimir.oltean@nxp.com>:
>On Mon, Feb 06, 2023 at 02:02:48AM +0300, Arınç ÜNAL wrote:
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>      tx_bytes: 6272
>>      tx_packets: 81
>>      rx_bytes: 9089
>>      rx_packets: 136
>>      p05_TxUnicast: 52
>>      p05_TxMulticast: 3
>>      p05_TxBroadcast: 81
>>      p05_TxPktSz65To127: 136
>>      p05_TxBytes: 9633
>>      p05_RxFiltering: 11
>>      p05_RxUnicast: 11
>>      p05_RxMulticast: 26
>>      p05_RxBroadcast: 44
>>      p05_RxPktSz64: 47
>>      p05_RxPktSz65To127: 34
>>      p05_RxBytes: 6272
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>      tx_bytes: 6784
>>      tx_packets: 89
>>      rx_bytes: 9601
>>      rx_packets: 144
>>      p05_TxUnicast: 60
>>      p05_TxMulticast: 3
>>      p05_TxBroadcast: 81
>>      p05_TxPktSz65To127: 144
>>      p05_TxBytes: 10177
>>      p05_RxFiltering: 11
>>      p05_RxUnicast: 11
>>      p05_RxMulticast: 26
>>      p05_RxBroadcast: 52
>>      p05_RxPktSz64: 55
>>      p05_RxPktSz65To127: 34
>>      p05_RxBytes: 6784
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>      tx_bytes: 7424
>>      tx_packets: 99
>>      rx_bytes: 10241
>>      rx_packets: 154
>>      p05_TxUnicast: 70
>>      p05_TxMulticast: 3
>>      p05_TxBroadcast: 81
>>      p05_TxPktSz65To127: 154
>>      p05_TxBytes: 10857
>>      p05_RxFiltering: 11
>>      p05_RxUnicast: 11
>>      p05_RxMulticast: 26
>>      p05_RxBroadcast: 62
>>      p05_RxPktSz64: 65
>>      p05_RxPktSz65To127: 34
>>      p05_RxBytes: 7424
>
>I see no signs of packet loss on the DSA master or the CPU port.
>However my analysis of the packets shows:
>
>> # tcpdump -i eth1 -e -n -Q in -XX
>> tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
>> listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
>> 03:50:38.645568 AF Unknown (2459068999), length 60: 
>> 	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
>                 ^              ^              ^
>                 |              |              |
>                 |              |              ETH_P_ARP
>                 |              MAC SA:
>                 |              e0:d5:5e:a4:ed:cc
>                 MAC DA:
>                 92:92:6a:47:1a:c0
>
>> 	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
>> 	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
>> 	0x0030:  0000 0000 0000 0000 0000 0000            ............
>
>So you have no tag_mtk header in the EtherType position where it's
>supposed to be. This means you must be making use of the hardware DSA
>untagging feature that Felix Fietkau added.
>
>Let's do some debugging. I'd like to know 2 things, in this order.
>First, whether DSA sees the accelerated header (stripped by hardware, as
>opposed to being present in the packet):
>
>diff --git a/net/dsa/tag.c b/net/dsa/tag.c
>index b2fba1a003ce..e64628cf7fc1 100644
>--- a/net/dsa/tag.c
>+++ b/net/dsa/tag.c
>@@ -75,12 +75,17 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
> 		if (!skb_has_extensions(skb))
> 			skb->slow_gro = 0;
> 
>+		netdev_err(dev, "%s: skb %px metadata dst contains port id %d attached\n",
>+			   __func__, skb, port);
>+
> 		skb->dev = dsa_master_find_slave(dev, 0, port);
> 		if (likely(skb->dev)) {
> 			dsa_default_offload_fwd_mark(skb);
> 			nskb = skb;
> 		}
> 	} else {
>+		netdev_err(dev, "%s: there is no metadata dst attached to skb 0x%px\n",
>+			   __func__, skb);
> 		nskb = cpu_dp->rcv(skb, dev);
> 	}
> 
>
>And second, which is what does the DSA master actually see, and put in
>the skb metadata dst field:
>
>diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>index f1cb1efc94cf..e7ff569959b4 100644
>--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>@@ -2077,11 +2077,23 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
> 		if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) {
> 			unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0);
> 
>+			netdev_err(netdev, "%s: skb->vlan_proto 0x%x port %d\n", __func__,
>+				   ntohs(skb->vlan_proto), port);
>+
> 			if (port < ARRAY_SIZE(eth->dsa_meta) &&
>-			    eth->dsa_meta[port])
>+			    eth->dsa_meta[port]) {
>+				netdev_err(netdev, "%s: attaching metadata dst with port %d to skb 0x%px\n",
>+					   __func__, port, skb);
> 				skb_dst_set_noref(skb, &eth->dsa_meta[port]->dst);
>+			} else {
>+				netdev_err(netdev, "%s: not attaching any metadata dst to skb 0x%px\n",
>+					   __func__, skb);
>+			}
> 
> 			__vlan_hwaccel_clear_tag(skb);
>+		} else if (netdev_uses_dsa(netdev)) {
>+			netdev_err(netdev, "%s: received skb 0x%px without VLAN/DSA tag present\n",
>+				   __func__, skb);
> 		}
> 
> 		skb_record_rx_queue(skb, 0);
>
>Be warned that there may be a considerable amount of output to the console,
>so it would be best if you used a single switch port with small amounts
>of traffic.

Arınç have you tested with or without this series?

https://patchwork.kernel.org/project/linux-mediatek/list/?series=707666

Maybe try the opposite.

Have not see it in net-next yet.
regards Frank

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06  7:35         ` Frank Wunderlich
@ 2023-02-06  7:41           ` Arınç ÜNAL
  0 siblings, 0 replies; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06  7:41 UTC (permalink / raw)
  To: frank-w, Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, erkin.bozoglu,
	richard

On 6.02.2023 10:35, Frank Wunderlich wrote:
> Am 6. Februar 2023 00:50:53 MEZ schrieb Vladimir Oltean <vladimir.oltean@nxp.com>:
>> On Mon, Feb 06, 2023 at 02:02:48AM +0300, Arınç ÜNAL wrote:
>>> # ethtool -S eth1 | grep -v ': 0'
>>> NIC statistics:
>>>       tx_bytes: 6272
>>>       tx_packets: 81
>>>       rx_bytes: 9089
>>>       rx_packets: 136
>>>       p05_TxUnicast: 52
>>>       p05_TxMulticast: 3
>>>       p05_TxBroadcast: 81
>>>       p05_TxPktSz65To127: 136
>>>       p05_TxBytes: 9633
>>>       p05_RxFiltering: 11
>>>       p05_RxUnicast: 11
>>>       p05_RxMulticast: 26
>>>       p05_RxBroadcast: 44
>>>       p05_RxPktSz64: 47
>>>       p05_RxPktSz65To127: 34
>>>       p05_RxBytes: 6272
>>> # ethtool -S eth1 | grep -v ': 0'
>>> NIC statistics:
>>>       tx_bytes: 6784
>>>       tx_packets: 89
>>>       rx_bytes: 9601
>>>       rx_packets: 144
>>>       p05_TxUnicast: 60
>>>       p05_TxMulticast: 3
>>>       p05_TxBroadcast: 81
>>>       p05_TxPktSz65To127: 144
>>>       p05_TxBytes: 10177
>>>       p05_RxFiltering: 11
>>>       p05_RxUnicast: 11
>>>       p05_RxMulticast: 26
>>>       p05_RxBroadcast: 52
>>>       p05_RxPktSz64: 55
>>>       p05_RxPktSz65To127: 34
>>>       p05_RxBytes: 6784
>>> # ethtool -S eth1 | grep -v ': 0'
>>> NIC statistics:
>>>       tx_bytes: 7424
>>>       tx_packets: 99
>>>       rx_bytes: 10241
>>>       rx_packets: 154
>>>       p05_TxUnicast: 70
>>>       p05_TxMulticast: 3
>>>       p05_TxBroadcast: 81
>>>       p05_TxPktSz65To127: 154
>>>       p05_TxBytes: 10857
>>>       p05_RxFiltering: 11
>>>       p05_RxUnicast: 11
>>>       p05_RxMulticast: 26
>>>       p05_RxBroadcast: 62
>>>       p05_RxPktSz64: 65
>>>       p05_RxPktSz65To127: 34
>>>       p05_RxBytes: 7424
>>
>> I see no signs of packet loss on the DSA master or the CPU port.
>> However my analysis of the packets shows:
>>
>>> # tcpdump -i eth1 -e -n -Q in -XX
>>> tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
>>> listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
>>> 03:50:38.645568 AF Unknown (2459068999), length 60:
>>> 	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
>>                  ^              ^              ^
>>                  |              |              |
>>                  |              |              ETH_P_ARP
>>                  |              MAC SA:
>>                  |              e0:d5:5e:a4:ed:cc
>>                  MAC DA:
>>                  92:92:6a:47:1a:c0
>>
>>> 	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
>>> 	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
>>> 	0x0030:  0000 0000 0000 0000 0000 0000            ............
>>
>> So you have no tag_mtk header in the EtherType position where it's
>> supposed to be. This means you must be making use of the hardware DSA
>> untagging feature that Felix Fietkau added.
>>
>> Let's do some debugging. I'd like to know 2 things, in this order.
>> First, whether DSA sees the accelerated header (stripped by hardware, as
>> opposed to being present in the packet):
>>
>> diff --git a/net/dsa/tag.c b/net/dsa/tag.c
>> index b2fba1a003ce..e64628cf7fc1 100644
>> --- a/net/dsa/tag.c
>> +++ b/net/dsa/tag.c
>> @@ -75,12 +75,17 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
>> 		if (!skb_has_extensions(skb))
>> 			skb->slow_gro = 0;
>>
>> +		netdev_err(dev, "%s: skb %px metadata dst contains port id %d attached\n",
>> +			   __func__, skb, port);
>> +
>> 		skb->dev = dsa_master_find_slave(dev, 0, port);
>> 		if (likely(skb->dev)) {
>> 			dsa_default_offload_fwd_mark(skb);
>> 			nskb = skb;
>> 		}
>> 	} else {
>> +		netdev_err(dev, "%s: there is no metadata dst attached to skb 0x%px\n",
>> +			   __func__, skb);
>> 		nskb = cpu_dp->rcv(skb, dev);
>> 	}
>>
>>
>> And second, which is what does the DSA master actually see, and put in
>> the skb metadata dst field:
>>
>> diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> index f1cb1efc94cf..e7ff569959b4 100644
>> --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> @@ -2077,11 +2077,23 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
>> 		if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) {
>> 			unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0);
>>
>> +			netdev_err(netdev, "%s: skb->vlan_proto 0x%x port %d\n", __func__,
>> +				   ntohs(skb->vlan_proto), port);
>> +
>> 			if (port < ARRAY_SIZE(eth->dsa_meta) &&
>> -			    eth->dsa_meta[port])
>> +			    eth->dsa_meta[port]) {
>> +				netdev_err(netdev, "%s: attaching metadata dst with port %d to skb 0x%px\n",
>> +					   __func__, port, skb);
>> 				skb_dst_set_noref(skb, &eth->dsa_meta[port]->dst);
>> +			} else {
>> +				netdev_err(netdev, "%s: not attaching any metadata dst to skb 0x%px\n",
>> +					   __func__, skb);
>> +			}
>>
>> 			__vlan_hwaccel_clear_tag(skb);
>> +		} else if (netdev_uses_dsa(netdev)) {
>> +			netdev_err(netdev, "%s: received skb 0x%px without VLAN/DSA tag present\n",
>> +				   __func__, skb);
>> 		}
>>
>> 		skb_record_rx_queue(skb, 0);
>>
>> Be warned that there may be a considerable amount of output to the console,
>> so it would be best if you used a single switch port with small amounts
>> of traffic.
> 
> Arınç have you tested with or without this series?
> 
> https://patchwork.kernel.org/project/linux-mediatek/list/?series=707666

I'm trying this without it, this is the tree I'm testing.

https://github.com/arinc9/linux/commits/test-for-richard

Arınç

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 23:50       ` Vladimir Oltean
  2023-02-06  7:35         ` Frank Wunderlich
@ 2023-02-06 16:41         ` Arınç ÜNAL
  2023-02-06 17:46           ` Vladimir Oltean
  1 sibling, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06 16:41 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

Finally I got time. It's been a seismically active day where I'm from.

On 6.02.2023 02:50, Vladimir Oltean wrote:
> On Mon, Feb 06, 2023 at 02:02:48AM +0300, Arınç ÜNAL wrote:
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>       tx_bytes: 6272
>>       tx_packets: 81
>>       rx_bytes: 9089
>>       rx_packets: 136
>>       p05_TxUnicast: 52
>>       p05_TxMulticast: 3
>>       p05_TxBroadcast: 81
>>       p05_TxPktSz65To127: 136
>>       p05_TxBytes: 9633
>>       p05_RxFiltering: 11
>>       p05_RxUnicast: 11
>>       p05_RxMulticast: 26
>>       p05_RxBroadcast: 44
>>       p05_RxPktSz64: 47
>>       p05_RxPktSz65To127: 34
>>       p05_RxBytes: 6272
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>       tx_bytes: 6784
>>       tx_packets: 89
>>       rx_bytes: 9601
>>       rx_packets: 144
>>       p05_TxUnicast: 60
>>       p05_TxMulticast: 3
>>       p05_TxBroadcast: 81
>>       p05_TxPktSz65To127: 144
>>       p05_TxBytes: 10177
>>       p05_RxFiltering: 11
>>       p05_RxUnicast: 11
>>       p05_RxMulticast: 26
>>       p05_RxBroadcast: 52
>>       p05_RxPktSz64: 55
>>       p05_RxPktSz65To127: 34
>>       p05_RxBytes: 6784
>> # ethtool -S eth1 | grep -v ': 0'
>> NIC statistics:
>>       tx_bytes: 7424
>>       tx_packets: 99
>>       rx_bytes: 10241
>>       rx_packets: 154
>>       p05_TxUnicast: 70
>>       p05_TxMulticast: 3
>>       p05_TxBroadcast: 81
>>       p05_TxPktSz65To127: 154
>>       p05_TxBytes: 10857
>>       p05_RxFiltering: 11
>>       p05_RxUnicast: 11
>>       p05_RxMulticast: 26
>>       p05_RxBroadcast: 62
>>       p05_RxPktSz64: 65
>>       p05_RxPktSz65To127: 34
>>       p05_RxBytes: 7424
> 
> I see no signs of packet loss on the DSA master or the CPU port.
> However my analysis of the packets shows:
> 
>> # tcpdump -i eth1 -e -n -Q in -XX
>> tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
>> listening on eth1, link-type NULL (BSD loopback), snapshot length 262144 bytes
>> 03:50:38.645568 AF Unknown (2459068999), length 60:
>> 	0x0000:  9292 6a47 1ac0 e0d5 5ea4 edcc 0806 0001  ..jG....^.......
>                   ^              ^              ^
>                   |              |              |
>                   |              |              ETH_P_ARP
>                   |              MAC SA:
>                   |              e0:d5:5e:a4:ed:cc
>                   MAC DA:
>                   92:92:6a:47:1a:c0
> 
>> 	0x0010:  0800 0604 0002 e0d5 5ea4 edcc c0a8 0202  ........^.......
>> 	0x0020:  9292 6a47 1ac0 c0a8 0201 0000 0000 0000  ..jG............
>> 	0x0030:  0000 0000 0000 0000 0000 0000            ............
> 
> So you have no tag_mtk header in the EtherType position where it's
> supposed to be. This means you must be making use of the hardware DSA
> untagging feature that Felix Fietkau added.
> 
> Let's do some debugging. I'd like to know 2 things, in this order.
> First, whether DSA sees the accelerated header (stripped by hardware, as
> opposed to being present in the packet):
> 
> diff --git a/net/dsa/tag.c b/net/dsa/tag.c
> index b2fba1a003ce..e64628cf7fc1 100644
> --- a/net/dsa/tag.c
> +++ b/net/dsa/tag.c
> @@ -75,12 +75,17 @@ static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
>   		if (!skb_has_extensions(skb))
>   			skb->slow_gro = 0;
>   
> +		netdev_err(dev, "%s: skb %px metadata dst contains port id %d attached\n",
> +			   __func__, skb, port);
> +
>   		skb->dev = dsa_master_find_slave(dev, 0, port);
>   		if (likely(skb->dev)) {
>   			dsa_default_offload_fwd_mark(skb);
>   			nskb = skb;
>   		}
>   	} else {
> +		netdev_err(dev, "%s: there is no metadata dst attached to skb 0x%px\n",
> +			   __func__, skb);
>   		nskb = cpu_dp->rcv(skb, dev);
>   	}
>   

# ping 192.168.2.2
PING 192.168.2.2[   39.508013] mtk_soc_eth 1b100000.ethernet eth1: 
dsa_switch_rcv: there is no metadata dst attached to skb 0xc2dfecc0
  (192.168.2.2): 56 data bytes
[   40.558253] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfed80
^C
--- 192.168.2.2 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
# [   41.598312] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: 
there is no metadata dst attached to skb 0xc2dfee40
[   55.432363] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfef00
[   56.442233] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfef00
[   57.466253] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfef00
[   60.538211] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfef00
[   61.562191] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfec00
[   62.586190] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there 
is no metadata dst attached to skb 0xc2dfeb40

On a working port:

[  113.278462] mt7530 mdio-bus:1f wan: Link is Down
[  113.283214] br0: port 1(wan) entered disabled state
[  115.438955] mt7530 mdio-bus:1f lan0: Link is Up - 1Gbps/Full - flow 
control off
[  115.446332] br0: port 2(lan0) entered blocking state
[  115.451346] br0: port 2(lan0) entered forwarding state
[  118.007199] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: skb 
c2dfeb40 metadata dst contains port id 1 attached
[  118.018209] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: skb 
c2dfeb40 metadata dst contains port id 1 attached
[  119.009252] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: skb 
c2dfed80 metadata dst contains port id 1 attached
[  120.010470] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: skb 
c2dfed80 metadata dst contains port id 1 attached
[  123.038246] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: skb 
c2dfe900 metadata dst contains port id 1 attached

> 
> And second, which is what does the DSA master actually see, and put in
> the skb metadata dst field:
> 
> diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> index f1cb1efc94cf..e7ff569959b4 100644
> --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> @@ -2077,11 +2077,23 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
>   		if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) {
>   			unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0);
>   
> +			netdev_err(netdev, "%s: skb->vlan_proto 0x%x port %d\n", __func__,
> +				   ntohs(skb->vlan_proto), port);
> +
>   			if (port < ARRAY_SIZE(eth->dsa_meta) &&
> -			    eth->dsa_meta[port])
> +			    eth->dsa_meta[port]) {
> +				netdev_err(netdev, "%s: attaching metadata dst with port %d to skb 0x%px\n",
> +					   __func__, port, skb);
>   				skb_dst_set_noref(skb, &eth->dsa_meta[port]->dst);
> +			} else {
> +				netdev_err(netdev, "%s: not attaching any metadata dst to skb 0x%px\n",
> +					   __func__, skb);
> +			}
>   
>   			__vlan_hwaccel_clear_tag(skb);
> +		} else if (netdev_uses_dsa(netdev)) {
> +			netdev_err(netdev, "%s: received skb 0x%px without VLAN/DSA tag present\n",
> +				   __func__, skb);
>   		}
>   
>   		skb_record_rx_queue(skb, 0);
> 
> Be warned that there may be a considerable amount of output to the console,
> so it would be best if you used a single switch port with small amounts
> of traffic.

# ping 192.168.2.2
PING 192.168.2.2[   22.674182] mtk_soc_eth 1b100000.ethernet eth1: 
mtk_poll_rx: received skb 0xc2d67840 without VLAN/DSA tag present
  (192.168.2.2): 56 data bytes
[   23.678336] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received 
skb 0xc2d67840 without VLAN/DSA tag present
[   24.718355] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received 
skb 0xc2d67840 without VLAN/DSA tag present
^C
--- 192.168.2.2 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
# [   28.757693] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
received skb 0xc2d67840 without VLAN/DSA tag present
[   29.758347] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received 
skb 0xc2d67840 without VLAN/DSA tag present
[   30.782404] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received 
skb 0xc2d67840 without VLAN/DSA tag present
[   33.854281] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received 
skb 0xc2d67840 without VLAN/DSA tag present

On a working port:

[   48.798419] mt7530 mdio-bus:1f wan: Link is Down
[   48.803166] br0: port 1(wan) entered disabled state
[   50.958903] mt7530 mdio-bus:1f lan0: Link is Up - 1Gbps/Full - flow 
control off
[   50.966282] br0: port 2(lan0) entered blocking state
[   50.971300] br0: port 2(lan0) entered forwarding state
[   54.261846] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
skb->vlan_proto 0x1 port 1
[   54.269905] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
attaching metadata dst with port 1 to skb 0xc2d67840
[   54.280412] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
skb->vlan_proto 0x1 port 1
[   54.288460] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
attaching metadata dst with port 1 to skb 0xc2d67840
[   55.263241] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
skb->vlan_proto 0x1 port 1
[   55.271292] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
attaching metadata dst with port 1 to skb 0xc2d67840
[   59.358317] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
skb->vlan_proto 0x1 port 1
[   59.366361] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: 
attaching metadata dst with port 1 to skb 0xc2d67a80

Arınç

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 16:41         ` Arınç ÜNAL
@ 2023-02-06 17:46           ` Vladimir Oltean
  2023-02-06 18:41             ` Arınç ÜNAL
  2023-02-07 10:56             ` Paolo Abeni
  0 siblings, 2 replies; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-06 17:46 UTC (permalink / raw)
  To: Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

Hi Arınç,

On Mon, Feb 06, 2023 at 07:41:06PM +0300, Arınç ÜNAL wrote:
> Finally I got time. It's been a seismically active day where I'm from.

My deepest condolences to those who experienced tragedies after today's
earthquakes. A lot of people in neighboring countries are horrified
thinking when this will happen to them. Hopefully you aren't living in
Gaziantep or nearby cities.

> # ping 192.168.2.2
> PING 192.168.2.2
> [   39.508013] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there is no metadata dst attached to skb 0xc2dfecc0
> 
> # ping 192.168.2.2
> PING 192.168.2.2
> [   22.674182] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received skb 0xc2d67840 without VLAN/DSA tag present

Thank you so much for testing. Would you mind cleaning everything up and
testing with this patch instead (formatted on top of net-next)?
Even if you need to adapt to your tree, hopefully you get the idea from
the commit message.

From 218025fd0c33a06865e4202c5170bfc17e26cc75 Mon Sep 17 00:00:00 2001
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: Mon, 6 Feb 2023 19:03:53 +0200
Subject: [PATCH] net: ethernet: mtk_eth_soc: fix DSA TX tag hwaccel for switch
 port 0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Arınç reports that on his MT7621AT Unielec U7621-06 board and MT7623NI
Bananapi BPI-R2, packets received by the CPU over mt7530 switch port 0
(of which this driver acts as the DSA master) are not processed
correctly by software. More precisely, they arrive without a DSA tag
(in packet or in the hwaccel area - skb_metadata_dst()), so DSA cannot
demux them towards the switch's interface for port 0. Traffic from other
ports receives a skb_metadata_dst() with the correct port and is demuxed
properly.

Looking at mtk_poll_rx(), it becomes apparent that this driver uses the
skb vlan hwaccel area:

	union {
		u32		vlan_all;
		struct {
			__be16	vlan_proto;
			__u16	vlan_tci;
		};
	};

as a temporary storage for the VLAN hwaccel tag, or the DSA hwaccel tag.
If this is a DSA master it's a DSA hwaccel tag, and finally clears up
the skb VLAN hwaccel header.

I'm guessing that the problem is the (mis)use of API.
skb_vlan_tag_present() looks like this:

 #define skb_vlan_tag_present(__skb)	(!!(__skb)->vlan_all)

So if both vlan_proto and vlan_tci are zeroes, skb_vlan_tag_present()
returns precisely false. I don't know for sure what is the format of the
DSA hwaccel tag, but I surely know that lowermost 3 bits of vlan_proto
are 0 when receiving from port 0:

	unsigned int port = vlan_proto & GENMASK(2, 0);

If the RX descriptor has no other bits set to non-zero values in
RX_DMA_VTAG, then the call to __vlan_hwaccel_put_tag() will not, in
fact, make the subsequent skb_vlan_tag_present() return true, because
it's implemented like this:

static inline void __vlan_hwaccel_put_tag(struct sk_buff *skb,
					  __be16 vlan_proto, u16 vlan_tci)
{
	skb->vlan_proto = vlan_proto;
	skb->vlan_tci = vlan_tci;
}

What we need to do to fix this problem (assuming this is the problem) is
to stop using skb->vlan_all as temporary storage for driver affairs, and
just create some local variables that serve the same purpose, but
hopefully better. Instead of calling skb_vlan_tag_present(), let's look
at a boolean has_hwaccel_tag which we set to true when the RX DMA
descriptors have something. Disambiguate based on netdev_uses_dsa()
whether this is a VLAN or DSA hwaccel tag, and only call
__vlan_hwaccel_put_tag() if we're certain it's a VLAN tag.

Link: https://lore.kernel.org/netdev/704f3a72-fc9e-714a-db54-272e17612637@arinc9.com/
Fixes: 2d7605a72906 ("net: ethernet: mtk_eth_soc: enable hardware DSA untagging")
Reported-by: Arınç ÜNAL <arinc.unal@arinc9.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 24 ++++++++++++---------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index f1cb1efc94cf..64b575fbe317 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -1921,7 +1921,9 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
 
 	while (done < budget) {
 		unsigned int pktlen, *rxdcsum;
+		bool has_hwaccel_tag = false;
 		struct net_device *netdev;
+		u16 vlan_proto, vlan_tci;
 		dma_addr_t dma_addr;
 		u32 hash, reason;
 		int mac = 0;
@@ -2061,27 +2063,29 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
 
 		if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX) {
 			if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V2)) {
-				if (trxd.rxd3 & RX_DMA_VTAG_V2)
-					__vlan_hwaccel_put_tag(skb,
-						htons(RX_DMA_VPID(trxd.rxd4)),
-						RX_DMA_VID(trxd.rxd4));
+				if (trxd.rxd3 & RX_DMA_VTAG_V2) {
+					vlan_proto = RX_DMA_VPID(trxd.rxd4);
+					vlan_tci = RX_DMA_VID(trxd.rxd4);
+					has_hwaccel_tag = true;
+				}
 			} else if (trxd.rxd2 & RX_DMA_VTAG) {
-				__vlan_hwaccel_put_tag(skb, htons(RX_DMA_VPID(trxd.rxd3)),
-						       RX_DMA_VID(trxd.rxd3));
+				vlan_proto = RX_DMA_VPID(trxd.rxd3);
+				vlan_tci = RX_DMA_VID(trxd.rxd3);
+				has_hwaccel_tag = true;
 			}
 		}
 
 		/* When using VLAN untagging in combination with DSA, the
 		 * hardware treats the MTK special tag as a VLAN and untags it.
 		 */
-		if (skb_vlan_tag_present(skb) && netdev_uses_dsa(netdev)) {
-			unsigned int port = ntohs(skb->vlan_proto) & GENMASK(2, 0);
+		if (has_hwaccel_tag && netdev_uses_dsa(netdev)) {
+			unsigned int port = vlan_proto & GENMASK(2, 0);
 
 			if (port < ARRAY_SIZE(eth->dsa_meta) &&
 			    eth->dsa_meta[port])
 				skb_dst_set_noref(skb, &eth->dsa_meta[port]->dst);
-
-			__vlan_hwaccel_clear_tag(skb);
+		} else if (has_hwaccel_tag) {
+			__vlan_hwaccel_put_tag(skb, htons(vlan_proto), vlan_tci);
 		}
 
 		skb_record_rx_queue(skb, 0);
-- 
2.34.1


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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 14:07 [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware Vladimir Oltean
  2023-02-05 19:25 ` Arınç ÜNAL
@ 2023-02-06 18:05 ` Florian Fainelli
  2023-02-07 11:00 ` patchwork-bot+netdevbpf
  2023-02-11 18:04 ` Frank Wunderlich
  3 siblings, 0 replies; 24+ messages in thread
From: Florian Fainelli @ 2023-02-06 18:05 UTC (permalink / raw)
  To: Vladimir Oltean, netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Matthias Brugger, AngeloGioacchino Del Regno, linux-kernel,
	linux-arm-kernel, linux-mediatek, Frank Wunderlich

On 2/5/23 06:07, Vladimir Oltean wrote:
> Frank reports that in a mt7530 setup where some ports are standalone and
> some are in a VLAN-aware bridge, 8021q uppers of the standalone ports
> lose their VLAN tag on xmit, as seen by the link partner.
> 
> This seems to occur because once the other ports join the VLAN-aware
> bridge, mt7530_port_vlan_filtering() also calls
> mt7530_port_set_vlan_aware(ds, cpu_dp->index), and this affects the way
> that the switch processes the traffic of the standalone port.
> 
> Relevant is the PVC_EG_TAG bit. The MT7530 documentation says about it:
> 
> EG_TAG: Incoming Port Egress Tag VLAN Attribution
> 0: disabled (system default)
> 1: consistent (keep the original ingress tag attribute)
> 
> My interpretation is that this setting applies on the ingress port, and
> "disabled" is basically the normal behavior, where the egress tag format
> of the packet (tagged or untagged) is decided by the VLAN table
> (MT7530_VLAN_EGRESS_UNTAG or MT7530_VLAN_EGRESS_TAG).
> 
> But there is also an option of overriding the system default behavior,
> and for the egress tagging format of packets to be decided not by the
> VLAN table, but simply by copying the ingress tag format (if ingress was
> tagged, egress is tagged; if ingress was untagged, egress is untagged;
> aka "consistent). This is useful in 2 scenarios:
> 
> - VLAN-unaware bridge ports will always encounter a miss in the VLAN
>    table. They should forward a packet as-is, though. So we use
>    "consistent" there. See commit e045124e9399 ("net: dsa: mt7530: fix
>    tagged frames pass-through in VLAN-unaware mode").
> 
> - Traffic injected from the CPU port. The operating system is in god
>    mode; if it wants a packet to exit as VLAN-tagged, it sends it as
>    VLAN-tagged. Otherwise it sends it as VLAN-untagged*.
> 
> *This is true only if we don't consider the bridge TX forwarding offload
> feature, which mt7530 doesn't support.
> 
> So for now, make the CPU port always stay in "consistent" mode to allow
> software VLANs to be forwarded to their egress ports with the VLAN tag
> intact, and not stripped.
> 
> Link: https://lore.kernel.org/netdev/trinity-e6294d28-636c-4c40-bb8b-b523521b00be-1674233135062@3c-app-gmx-bs36/
> Fixes: e045124e9399 ("net: dsa: mt7530: fix tagged frames pass-through in VLAN-unaware mode")
> Reported-by: Frank Wunderlich <frank-w@public-files.de>
> Tested-by: Frank Wunderlich <frank-w@public-files.de>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

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


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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 17:46           ` Vladimir Oltean
@ 2023-02-06 18:41             ` Arınç ÜNAL
  2023-02-06 19:41               ` Arınç ÜNAL
  2023-02-07 10:56             ` Paolo Abeni
  1 sibling, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06 18:41 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On 6.02.2023 20:46, Vladimir Oltean wrote:
> Hi Arınç,
> 
> On Mon, Feb 06, 2023 at 07:41:06PM +0300, Arınç ÜNAL wrote:
>> Finally I got time. It's been a seismically active day where I'm from.
> 
> My deepest condolences to those who experienced tragedies after today's
> earthquakes. A lot of people in neighboring countries are horrified
> thinking when this will happen to them. Hopefully you aren't living in
> Gaziantep or nearby cities.

Thank you for asking, we're all fine as a family in İzmir. This region 
is on a fault line as well so the same could happen here too like it did 
in 2020. Thankfully our apartment is strong.

> 
>> # ping 192.168.2.2
>> PING 192.168.2.2
>> [   39.508013] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there is no metadata dst attached to skb 0xc2dfecc0
>>
>> # ping 192.168.2.2
>> PING 192.168.2.2
>> [   22.674182] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received skb 0xc2d67840 without VLAN/DSA tag present
> 
> Thank you so much for testing. Would you mind cleaning everything up and
> testing with this patch instead (formatted on top of net-next)?
> Even if you need to adapt to your tree, hopefully you get the idea from
> the commit message.

Applies cleanly and fixes the issue! You can add my tested-by tag. 
Thanks a lot for the ridiculously fast fix Vladimir!

Arınç

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 18:41             ` Arınç ÜNAL
@ 2023-02-06 19:41               ` Arınç ÜNAL
  2023-02-06 20:33                 ` Vladimir Oltean
  0 siblings, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06 19:41 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

[-- Attachment #1: Type: text/plain, Size: 539 bytes --]

One last thing. Specific to MT7530 switch in MT7621 SoC, if port@5 is 
the only CPU port defined on the devicetree, frames sent from DSA master 
appears malformed on the user port. Packet capture on computer connected 
to the user port is attached.

The ARP frames on the pcapng file are received on the DSA master, I 
captured them with tcpdump, and put it in the attachments. Then I start 
pinging from the DSA master and the malformed frames appear on the 
pcapng file.

It'd be great if you could take a look this final issue.

Arınç

[-- Attachment #2: tcpdump-ping-output.txt --]
[-- Type: text/plain, Size: 2906 bytes --]

# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type NULL (BSD loopback), snapshot length 262144 bytes
00:00:16.763653 AF Unknown (4294926075), length 56: 
	0x0000:  9a17 e0d5 5ea4 edcc 0826 c0a8 0201 0000  ....^....&......
	0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
	0x0020:  1206 020c d14b 0003 3d4f 3030 3030 1030  .....K..=O0000.0
	0x0030:  3100 3030                                1.00
00:00:17.789246 AF Unknown (4294909691), length 184: 
	0x0000:  9a07 e0d5 5ea4 edcc 2daf 0001 0800 0604  ....^...-.......
	0x0010:  0001 e0d5 5ea4 4ccc 8000 0202 0000 0000  ....^.L.........
	0x0020:  0020 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000 9a07 0000 0000 0000  ................
	0x0040:  2103 0000 0000 0000 0006 0000 0003 0000  !...............
	0x0050:  0118 0000 012e 0000 0002 0000 0000 0000  ................
	0x0060:  0000 0000 005f 0000 0003 0000 0000 0000  ....._..........
	0x0070:  0045 0000 0003 0000 0008 0000 0038 0000  .E...........8..
	0x0080:  0200 0000 0100 0000 0003 0000 0004 0000  ................
	0x0090:  0003 0000 0003 0000 0123 0000 000c 0000  .........#......
	0x00a0:  0003 0000 0000 0000 010c 0000 0004 0000  ................
	0x00b0:  0003 0000                                ....
00:00:18.813241 AF Unknown (4294926075), length 56: 
	0x0000:  9a17 e0d5 5ea4 edcc 29a6 c0a8 0201 0000  ....^...).......
	0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
	0x0020:  9a07 020c e251 0003 394c 3035 2031 1430  .....Q..9L05.1.0
	0x0030:  3a8e 2031                                :..1
00:00:19.837223 AF Unknown (4294926079), length 70: 
	0x0000:  9a07 e0d5 5ea4 edcc 29af 0001 0800 0604  ....^...).......
	0x0010:  0001 e0d5 5ea4 4ccc 8000 0202 0000 0000  ....^.L.........
	0x0020:  0000 c0a8 0201 0000 0000 0000 0000 0000  ................
	0x0030:  0000 0000 0000 0000 9a07 020c a38a 0003  ................
	0x0040:  2103                                     !.
00:00:20.861219 AF Unknown (4294926079), length 56: 
	0x0000:  9ad7 e0d5 5ea4 edcc 2daf c0a8 0201 0000  ....^...-.......
	0x0010:  0000 0000 0000 0000 0000 0000 0000 0000  ................
	0x0020:  9a07 004c aa20 0003 3948 0000 0000 0000  ...L....9H......
	0x0030:  2100 0000                                !...
00:00:21.885217 AF Unknown (4294909691), length 56: 
	0x0000:  9a07 c0a8 0201 0000 2121 0000 0000 0000  ........!!......
	0x0010:  0000 0000 0000 0000 9a07 020c 25a9 0003  ............%...
	0x0020:  2104 0000 0170 4832 0200 0000 0003 0000  !....pH2........
	0x0030:  2104 0000                                !...
^C
6 packets captured
6 packets received by filter
0 packets dropped by kernel
# ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2): 56 data bytes
^C
--- 192.168.2.2 ping statistics ---
7 packets transmitted, 0 packets received, 100% packet loss
# 

[-- Attachment #3: new-mt7530-port5-malformed.pcapng --]
[-- Type: application/x-pcapng, Size: 1848 bytes --]

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 19:41               ` Arınç ÜNAL
@ 2023-02-06 20:33                 ` Vladimir Oltean
  2023-02-06 20:35                   ` Arınç ÜNAL
  0 siblings, 1 reply; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-06 20:33 UTC (permalink / raw)
  To: Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On Mon, Feb 06, 2023 at 10:41:47PM +0300, Arınç ÜNAL wrote:
> One last thing. Specific to MT7530 switch in MT7621 SoC, if port@5 is the
> only CPU port defined on the devicetree, frames sent from DSA master appears
> malformed on the user port. Packet capture on computer connected to the user
> port is attached.
> 
> The ARP frames on the pcapng file are received on the DSA master, I captured
> them with tcpdump, and put it in the attachments. Then I start pinging from
> the DSA master and the malformed frames appear on the pcapng file.
> 
> It'd be great if you could take a look this final issue.

What phy-mode does port@5 use when it doesn't work? What about the DSA master?

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 20:33                 ` Vladimir Oltean
@ 2023-02-06 20:35                   ` Arınç ÜNAL
  2023-02-06 20:42                     ` Vladimir Oltean
  0 siblings, 1 reply; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06 20:35 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On 06/02/2023 23:33, Vladimir Oltean wrote:
> On Mon, Feb 06, 2023 at 10:41:47PM +0300, Arınç ÜNAL wrote:
>> One last thing. Specific to MT7530 switch in MT7621 SoC, if port@5 is the
>> only CPU port defined on the devicetree, frames sent from DSA master appears
>> malformed on the user port. Packet capture on computer connected to the user
>> port is attached.
>>
>> The ARP frames on the pcapng file are received on the DSA master, I captured
>> them with tcpdump, and put it in the attachments. Then I start pinging from
>> the DSA master and the malformed frames appear on the pcapng file.
>>
>> It'd be great if you could take a look this final issue.
> 
> What phy-mode does port@5 use when it doesn't work? What about the DSA master?

It's rgmii on port@5 and gmac1.

Arınç

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 20:35                   ` Arınç ÜNAL
@ 2023-02-06 20:42                     ` Vladimir Oltean
  2023-02-06 20:59                       ` Arınç ÜNAL
  0 siblings, 1 reply; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-06 20:42 UTC (permalink / raw)
  To: Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

On Mon, Feb 06, 2023 at 11:35:50PM +0300, Arınç ÜNAL wrote:
> On 06/02/2023 23:33, Vladimir Oltean wrote:
> > On Mon, Feb 06, 2023 at 10:41:47PM +0300, Arınç ÜNAL wrote:
> > > One last thing. Specific to MT7530 switch in MT7621 SoC, if port@5 is the
> > > only CPU port defined on the devicetree, frames sent from DSA master appears
> > > malformed on the user port. Packet capture on computer connected to the user
> > > port is attached.
> > > 
> > > The ARP frames on the pcapng file are received on the DSA master, I captured
> > > them with tcpdump, and put it in the attachments. Then I start pinging from
> > > the DSA master and the malformed frames appear on the pcapng file.
> > > 
> > > It'd be great if you could take a look this final issue.
> > 
> > What phy-mode does port@5 use when it doesn't work? What about the DSA master?
> 
> It's rgmii on port@5 and gmac1.

What kind of RGMII? Plain "rgmii" on both ends, with no internal delays?
With RGMII, somebody must add a skew to the clock signal relative to the
data signals, so that setup/hold times at the other end are not violated.
Either the transmitter or the receiver can add RGMII delays in each
direction of communication, but someone must do it, and no more than one
entity should do it.

So my question would be: could you retry after replacing phy-mode = "rgmii"
with phy-mode = "rgmii-id" on port@5? And if that doesn't change anything
(unlikely but possible), also try "rgmii-txid" and "rgmii-rxid" in port@5?
Don't change the phy-mode on gmac1.

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 20:42                     ` Vladimir Oltean
@ 2023-02-06 20:59                       ` Arınç ÜNAL
  0 siblings, 0 replies; 24+ messages in thread
From: Arınç ÜNAL @ 2023-02-06 20:59 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

[-- Attachment #1: Type: text/plain, Size: 2056 bytes --]

On 6.02.2023 23:42, Vladimir Oltean wrote:
> On Mon, Feb 06, 2023 at 11:35:50PM +0300, Arınç ÜNAL wrote:
>> On 06/02/2023 23:33, Vladimir Oltean wrote:
>>> On Mon, Feb 06, 2023 at 10:41:47PM +0300, Arınç ÜNAL wrote:
>>>> One last thing. Specific to MT7530 switch in MT7621 SoC, if port@5 is the
>>>> only CPU port defined on the devicetree, frames sent from DSA master appears
>>>> malformed on the user port. Packet capture on computer connected to the user
>>>> port is attached.
>>>>
>>>> The ARP frames on the pcapng file are received on the DSA master, I captured
>>>> them with tcpdump, and put it in the attachments. Then I start pinging from
>>>> the DSA master and the malformed frames appear on the pcapng file.
>>>>
>>>> It'd be great if you could take a look this final issue.
>>>
>>> What phy-mode does port@5 use when it doesn't work? What about the DSA master?
>>
>> It's rgmii on port@5 and gmac1.
> 
> What kind of RGMII? Plain "rgmii" on both ends, with no internal delays?
> With RGMII, somebody must add a skew to the clock signal relative to the
> data signals, so that setup/hold times at the other end are not violated.
> Either the transmitter or the receiver can add RGMII delays in each
> direction of communication, but someone must do it, and no more than one
> entity should do it.
> 
> So my question would be: could you retry after replacing phy-mode = "rgmii"
> with phy-mode = "rgmii-id" on port@5? And if that doesn't change anything
> (unlikely but possible), also try "rgmii-txid" and "rgmii-rxid" in port@5?
> Don't change the phy-mode on gmac1.

Still getting malformed frames. Packet capture for each phy-mode is 
attached. Made sure the phy-mode with:

# cat /proc/device-tree/ethernet@1e100000/mac@1/phy-mode
rgmii

# cat 
/proc/device-tree/ethernet@1e100000/mdio-bus/switch@1f/ports/port@5/phy-mode
rgmii-id

# cat 
/proc/device-tree/ethernet@1e100000/mdio-bus/switch@1f/ports/port@5/phy-mode
rgmii-txid

# cat 
/proc/device-tree/ethernet@1e100000/mdio-bus/switch@1f/ports/port@5/phy-mode
rgmii-rxid

Arınç

[-- Attachment #2: rgmii-id.pcapng --]
[-- Type: application/x-pcapng, Size: 1192 bytes --]

[-- Attachment #3: rgmii-rxid.pcapng --]
[-- Type: application/x-pcapng, Size: 1148 bytes --]

[-- Attachment #4: rgmii-txid.pcapng --]
[-- Type: application/x-pcapng, Size: 1192 bytes --]

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-06 17:46           ` Vladimir Oltean
  2023-02-06 18:41             ` Arınç ÜNAL
@ 2023-02-07 10:56             ` Paolo Abeni
  2023-02-07 12:39               ` Vladimir Oltean
  1 sibling, 1 reply; 24+ messages in thread
From: Paolo Abeni @ 2023-02-07 10:56 UTC (permalink / raw)
  To: Vladimir Oltean, Arınç ÜNAL
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski, Sean Wang,
	Landen Chao, DENG Qingfang, Andrew Lunn, Florian Fainelli,
	Matthias Brugger, AngeloGioacchino Del Regno, linux-kernel,
	linux-arm-kernel, linux-mediatek, Frank Wunderlich,
	erkin.bozoglu, richard

Hi,

On Mon, 2023-02-06 at 19:46 +0200, Vladimir Oltean wrote:
> On Mon, Feb 06, 2023 at 07:41:06PM +0300, Arınç ÜNAL wrote:
> > Finally I got time. It's been a seismically active day where I'm from.
> 
> My deepest condolences to those who experienced tragedies after today's
> earthquakes. A lot of people in neighboring countries are horrified
> thinking when this will happen to them. Hopefully you aren't living in
> Gaziantep or nearby cities.
> 
> > # ping 192.168.2.2
> > PING 192.168.2.2
> > [   39.508013] mtk_soc_eth 1b100000.ethernet eth1: dsa_switch_rcv: there is no metadata dst attached to skb 0xc2dfecc0
> > 
> > # ping 192.168.2.2
> > PING 192.168.2.2
> > [   22.674182] mtk_soc_eth 1b100000.ethernet eth1: mtk_poll_rx: received skb 0xc2d67840 without VLAN/DSA tag present
> 
> Thank you so much for testing. Would you mind cleaning everything up and
> testing with this patch instead (formatted on top of net-next)?
> Even if you need to adapt to your tree, hopefully you get the idea from
> the commit message.
> 
> From 218025fd0c33a06865e4202c5170bfc17e26cc75 Mon Sep 17 00:00:00 2001
> From: Vladimir Oltean <vladimir.oltean@nxp.com>
> Date: Mon, 6 Feb 2023 19:03:53 +0200
> Subject: [PATCH] net: ethernet: mtk_eth_soc: fix DSA TX tag hwaccel for switch
>  port 0
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> 
> Arınç reports that on his MT7621AT Unielec U7621-06 board and MT7623NI
> Bananapi BPI-R2, packets received by the CPU over mt7530 switch port 0
> (of which this driver acts as the DSA master) are not processed
> correctly by software. More precisely, they arrive without a DSA tag
> (in packet or in the hwaccel area - skb_metadata_dst()), so DSA cannot
> demux them towards the switch's interface for port 0. Traffic from other
> ports receives a skb_metadata_dst() with the correct port and is demuxed
> properly.
> 
> Looking at mtk_poll_rx(), it becomes apparent that this driver uses the
> skb vlan hwaccel area:
> 
> 	union {
> 		u32		vlan_all;
> 		struct {
> 			__be16	vlan_proto;
> 			__u16	vlan_tci;
> 		};
> 	};
> 
> as a temporary storage for the VLAN hwaccel tag, or the DSA hwaccel tag.
> If this is a DSA master it's a DSA hwaccel tag, and finally clears up
> the skb VLAN hwaccel header.
> 
> I'm guessing that the problem is the (mis)use of API.
> skb_vlan_tag_present() looks like this:
> 
>  #define skb_vlan_tag_present(__skb)	(!!(__skb)->vlan_all)
> 
> So if both vlan_proto and vlan_tci are zeroes, skb_vlan_tag_present()
> returns precisely false. I don't know for sure what is the format of the
> DSA hwaccel tag, but I surely know that lowermost 3 bits of vlan_proto
> are 0 when receiving from port 0:
> 
> 	unsigned int port = vlan_proto & GENMASK(2, 0);
> 
> If the RX descriptor has no other bits set to non-zero values in
> RX_DMA_VTAG, then the call to __vlan_hwaccel_put_tag() will not, in
> fact, make the subsequent skb_vlan_tag_present() return true, because
> it's implemented like this:
> 
> static inline void __vlan_hwaccel_put_tag(struct sk_buff *skb,
> 					  __be16 vlan_proto, u16 vlan_tci)
> {
> 	skb->vlan_proto = vlan_proto;
> 	skb->vlan_tci = vlan_tci;
> }
> 
> What we need to do to fix this problem (assuming this is the problem) is
> to stop using skb->vlan_all as temporary storage for driver affairs, and
> just create some local variables that serve the same purpose, but
> hopefully better. Instead of calling skb_vlan_tag_present(), let's look
> at a boolean has_hwaccel_tag which we set to true when the RX DMA
> descriptors have something. Disambiguate based on netdev_uses_dsa()
> whether this is a VLAN or DSA hwaccel tag, and only call
> __vlan_hwaccel_put_tag() if we're certain it's a VLAN tag.
> 
> Link: https://lore.kernel.org/netdev/704f3a72-fc9e-714a-db54-272e17612637@arinc9.com/
> Fixes: 2d7605a72906 ("net: ethernet: mtk_eth_soc: enable hardware DSA untagging")
> Reported-by: Arınç ÜNAL <arinc.unal@arinc9.com>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Thank you Vladimir for the quick turn-around! 

For future case, please avoid replying with new patches - tag area
included - to existing patch/thread, as it confuses tag propagation,
thanks!

Paolo


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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 14:07 [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware Vladimir Oltean
  2023-02-05 19:25 ` Arınç ÜNAL
  2023-02-06 18:05 ` Florian Fainelli
@ 2023-02-07 11:00 ` patchwork-bot+netdevbpf
  2023-02-11 18:04 ` Frank Wunderlich
  3 siblings, 0 replies; 24+ messages in thread
From: patchwork-bot+netdevbpf @ 2023-02-07 11:00 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: netdev, davem, edumazet, kuba, pabeni, sean.wang, Landen.Chao,
	dqfext, andrew, f.fainelli, matthias.bgg,
	angelogioacchino.delregno, linux-kernel, linux-arm-kernel,
	linux-mediatek, frank-w

Hello:

This patch was applied to netdev/net.git (master)
by Paolo Abeni <pabeni@redhat.com>:

On Sun,  5 Feb 2023 16:07:13 +0200 you wrote:
> Frank reports that in a mt7530 setup where some ports are standalone and
> some are in a VLAN-aware bridge, 8021q uppers of the standalone ports
> lose their VLAN tag on xmit, as seen by the link partner.
> 
> This seems to occur because once the other ports join the VLAN-aware
> bridge, mt7530_port_vlan_filtering() also calls
> mt7530_port_set_vlan_aware(ds, cpu_dp->index), and this affects the way
> that the switch processes the traffic of the standalone port.
> 
> [...]

Here is the summary with links:
  - [net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
    https://git.kernel.org/netdev/net/c/0b6d6425103a

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-07 10:56             ` Paolo Abeni
@ 2023-02-07 12:39               ` Vladimir Oltean
  2023-02-07 18:07                 ` Paolo Abeni
  0 siblings, 1 reply; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-07 12:39 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: Arınç ÜNAL, netdev, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Sean Wang, Landen Chao, DENG Qingfang,
	Andrew Lunn, Florian Fainelli, Matthias Brugger,
	AngeloGioacchino Del Regno, linux-kernel, linux-arm-kernel,
	linux-mediatek, Frank Wunderlich, erkin.bozoglu, richard

Hi Paolo,

On Tue, Feb 07, 2023 at 11:56:13AM +0100, Paolo Abeni wrote:
> Thank you Vladimir for the quick turn-around! 
> 
> For future case, please avoid replying with new patches - tag area
> included - to existing patch/thread, as it confuses tag propagation,
> thanks!

Ah, yes, I see (and thanks for fixing it up).

Although I need to ask, since I think I made legitimate use of the tools
given to me. What should I have done instead? Post an RFC patch (even
though I didn't know whether it worked or not) in a thread separate to
the debugging session? I didn't want to diverge from the thread reporting
the issue. Maybe we should have started a new thread, decoupled from the
patch?

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-07 12:39               ` Vladimir Oltean
@ 2023-02-07 18:07                 ` Paolo Abeni
  2023-02-08 20:14                   ` Vladimir Oltean
  0 siblings, 1 reply; 24+ messages in thread
From: Paolo Abeni @ 2023-02-07 18:07 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: Arınç ÜNAL, netdev, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Sean Wang, Landen Chao, DENG Qingfang,
	Andrew Lunn, Florian Fainelli, Matthias Brugger,
	AngeloGioacchino Del Regno, linux-kernel, linux-arm-kernel,
	linux-mediatek, Frank Wunderlich, erkin.bozoglu, richard

On Tue, 2023-02-07 at 14:39 +0200, Vladimir Oltean wrote:
> On Tue, Feb 07, 2023 at 11:56:13AM +0100, Paolo Abeni wrote:
> > Thank you Vladimir for the quick turn-around! 
> > 
> > For future case, please avoid replying with new patches - tag area
> > included - to existing patch/thread, as it confuses tag propagation,
> > thanks!
> 
> Ah, yes, I see (and thanks for fixing it up).
> 
> Although I need to ask, since I think I made legitimate use of the tools
> given to me. What should I have done instead? Post an RFC patch (even
> though I didn't know whether it worked or not) in a thread separate to
> the debugging session? I didn't want to diverge from the thread reporting
> the issue. Maybe we should have started a new thread, decoupled from the
> patch?

Here what specifically confused the bot were the additional tags
present in the debug patch. One possible alternative would have been
posting - in the same thread - the code of the tentative patch without
the formal commit message/tag area.

That option is quite convenient toome, as writing the changelog takes
me a measurable amount of time and I could spend that effort only when
the patch is finalize/tested.

Please let me know if the above makes sense to you.

Cheers,

Paolo


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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-07 18:07                 ` Paolo Abeni
@ 2023-02-08 20:14                   ` Vladimir Oltean
  0 siblings, 0 replies; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-08 20:14 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: Arınç ÜNAL, netdev, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Sean Wang, Landen Chao, DENG Qingfang,
	Andrew Lunn, Florian Fainelli, Matthias Brugger,
	AngeloGioacchino Del Regno, linux-kernel, linux-arm-kernel,
	linux-mediatek, Frank Wunderlich, erkin.bozoglu, richard

On Tue, Feb 07, 2023 at 07:07:14PM +0100, Paolo Abeni wrote:
> On Tue, 2023-02-07 at 14:39 +0200, Vladimir Oltean wrote:
> > On Tue, Feb 07, 2023 at 11:56:13AM +0100, Paolo Abeni wrote:
> > > Thank you Vladimir for the quick turn-around! 
> > > 
> > > For future case, please avoid replying with new patches - tag area
> > > included - to existing patch/thread, as it confuses tag propagation,
> > > thanks!
> > 
> > Ah, yes, I see (and thanks for fixing it up).
> > 
> > Although I need to ask, since I think I made legitimate use of the tools
> > given to me. What should I have done instead? Post an RFC patch (even
> > though I didn't know whether it worked or not) in a thread separate to
> > the debugging session? I didn't want to diverge from the thread reporting
> > the issue. Maybe we should have started a new thread, decoupled from the
> > patch?
> 
> Here what specifically confused the bot were the additional tags
> present in the debug patch. One possible alternative would have been
> posting - in the same thread - the code of the tentative patch without
> the formal commit message/tag area.
> 
> That option is quite convenient toome, as writing the changelog takes
> me a measurable amount of time and I could spend that effort only when
> the patch is finalize/tested.
> 
> Please let me know if the above makes sense to you.

I think even the Signed-off-by would confuse the patchwork bot, right?
I would have to send just the diff portion, and send the full patch as
an email attachment.

In any case, I'll pay attention to this next time.

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-05 14:07 [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware Vladimir Oltean
                   ` (2 preceding siblings ...)
  2023-02-07 11:00 ` patchwork-bot+netdevbpf
@ 2023-02-11 18:04 ` Frank Wunderlich
  2023-02-11 18:31   ` Vladimir Oltean
  3 siblings, 1 reply; 24+ messages in thread
From: Frank Wunderlich @ 2023-02-11 18:04 UTC (permalink / raw)
  To: Vladimir Oltean, netdev
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek

Hi,

Can this be applied to next too?

It looks like discussion about different issues in mt7530 driver prevents it picking it up.
regards Frank

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-11 18:04 ` Frank Wunderlich
@ 2023-02-11 18:31   ` Vladimir Oltean
  2023-02-11 19:02     ` Richard van Schagen
  0 siblings, 1 reply; 24+ messages in thread
From: Vladimir Oltean @ 2023-02-11 18:31 UTC (permalink / raw)
  To: Frank Wunderlich
  Cc: netdev, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Paolo Abeni, Sean Wang, Landen Chao, DENG Qingfang, Andrew Lunn,
	Florian Fainelli, Matthias Brugger, AngeloGioacchino Del Regno,
	linux-kernel, linux-arm-kernel, linux-mediatek

On Sat, Feb 11, 2023 at 07:04:14PM +0100, Frank Wunderlich wrote:
> Hi,
> 
> Can this be applied to next too?
> 
> It looks like discussion about different issues in mt7530 driver prevents it picking it up.
> regards Frank

https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=0b6d6425103a676e2b6a81f3fd35d7ea4f9b90ec

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

* Re: [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware
  2023-02-11 18:31   ` Vladimir Oltean
@ 2023-02-11 19:02     ` Richard van Schagen
  0 siblings, 0 replies; 24+ messages in thread
From: Richard van Schagen @ 2023-02-11 19:02 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: Frank Wunderlich, netdev, David S. Miller, Eric Dumazet,
	Jakub Kicinski, Paolo Abeni, Sean Wang, Landen Chao,
	DENG Qingfang, Andrew Lunn, Florian Fainelli, Matthias Brugger,
	AngeloGioacchino Del Regno, linux-kernel, linux-arm-kernel,
	linux-mediatek



> On 11 Feb 2023, at 19:31, Vladimir Oltean <vladimir.oltean@nxp.com> wrote:
> 
> On Sat, Feb 11, 2023 at 07:04:14PM +0100, Frank Wunderlich wrote:
>> Hi,
>> 
>> Can this be applied to next too?
>> 
>> It looks like discussion about different issues in mt7530 driver prevents it picking it up.
>> regards Frank
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=0b6d6425103a676e2b6a81f3fd35d7ea4f9b90ec

Sorry, that patch is wrong. In the shared tree with Arinc I have a different version. One without any need to set / change anything on the CPU port.

Let me check with Arinc before I send that one.

Richard

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

end of thread, other threads:[~2023-02-11 19:02 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-05 14:07 [PATCH net] net: dsa: mt7530: don't change PVC_EG_TAG when CPU port becomes VLAN-aware Vladimir Oltean
2023-02-05 19:25 ` Arınç ÜNAL
2023-02-05 20:39   ` Vladimir Oltean
2023-02-05 23:02     ` Arınç ÜNAL
2023-02-05 23:50       ` Vladimir Oltean
2023-02-06  7:35         ` Frank Wunderlich
2023-02-06  7:41           ` Arınç ÜNAL
2023-02-06 16:41         ` Arınç ÜNAL
2023-02-06 17:46           ` Vladimir Oltean
2023-02-06 18:41             ` Arınç ÜNAL
2023-02-06 19:41               ` Arınç ÜNAL
2023-02-06 20:33                 ` Vladimir Oltean
2023-02-06 20:35                   ` Arınç ÜNAL
2023-02-06 20:42                     ` Vladimir Oltean
2023-02-06 20:59                       ` Arınç ÜNAL
2023-02-07 10:56             ` Paolo Abeni
2023-02-07 12:39               ` Vladimir Oltean
2023-02-07 18:07                 ` Paolo Abeni
2023-02-08 20:14                   ` Vladimir Oltean
2023-02-06 18:05 ` Florian Fainelli
2023-02-07 11:00 ` patchwork-bot+netdevbpf
2023-02-11 18:04 ` Frank Wunderlich
2023-02-11 18:31   ` Vladimir Oltean
2023-02-11 19:02     ` Richard van Schagen

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).