Messages in this thread | | | Date | Mon, 10 Sep 2018 05:04:46 +0200 | From | Andrew Lunn <> | Subject | Re: [PATCH net-next] net: dsa: Expose tagging protocol to user-space |
| |
On Sat, Sep 08, 2018 at 11:43:31AM +0200, Jiri Pirko wrote: > Fri, Sep 07, 2018 at 08:09:02PM CEST, f.fainelli@gmail.com wrote: > >There is no way for user-space to know what a given DSA network device's > >tagging protocol is. Expose this information through a dsa/tagging > >attribute which reflects the tagging protocol currently in use. > > > >This is helpful for configuration (e.g: none behaves dramatically > >different wrt. bridges) as well as for packet capture tools when there > >is not a proper Ethernet type available. > > > Hmm, I wonder. It this something that varies between ports of an > individual ASIC? Or is it rather something defined per-ASIC. If so, this > looks more like a devlink-api material.
Hi Jiri
This is between the CPU ethernet device and the switch port that interface is connect to.
For the Marvell devices, any switch port can be connected to the CPU Ethernet interface, and the same protocol is used. However, some switches have a special port which should be used to connect to the CPU ethernet and supports this tagging protocol. If the designer gets it wrong and uses a different port to connect the CPU, no tagging protocol can be used, which as Florian indicated, has a big impact on bridging, etc.
And just to make it more complex, Marvel has two tagging schemes. Older devices use DSA, newer devices uses EDSA. However, for the very new devices in the 6390 family, Marvell made a subtle change to how EDSA works, which broke it, so we had to go back to DSA.
Of the different tagging protocols used by the 50 or so switches Linux supports, only the EDSA tagging protocol makes use of an Ethertype. tcpdump knows how to decode these packets. For all the other tagging protocols, it has no idea, the Ethertype is all messed up, and it just prints hex. What i think Florian wants to do is stuff the tagging protocol into the pcap-ng header so that tcpdump knows what protocol is in use, and can put the correct protocol dissector in the chain.
And just for completeness, there potentially is a second tagging scheme when you have multiple switches connected together in a cluster, but that is internal to the cluster. The CPU is unaware of it. But if you are snooping on the traffic, you need to know what the protocol is, so you can decode the frames. In theory, that could be EDSA or DSA, and can be selected per intra-switch link. In practice, they are all DSA, and i've not heard of anybody actually snooping this traffic.
Andrew
| |