Re: [PATCH net-next 2/5] net: dsa: add out-of-band tagging protocol

Florian Fainelli
2022-04-22T18:29:45Z

On 4/22/22 11:03, Maxime Chevallier wrote:
> This tagging protocol is designed for the situation where the link
> between the MAC and the Switch is designed such that the Destination
> Port, which is usually embedded in some part of the Ethernet Header, is
> sent out-of-band, and isn't present at all in the Ethernet frame.
>
> This can happen when the MAC and Switch are tightly integrated on an
> SoC, as is the case with the Qualcomm IPQ4019 for example, where the DSA
> tag is inserted directly into the DMA descriptors. In that case,
> the MAC driver is responsible for sending the tag to the switch using
> the out-of-band medium. To do so, the MAC driver needs to have the
> information of the destination port for that skb.
>
> This tagging protocol relies on a new set of fields in skb->shinfo to
> transmit the dsa tagging information to and from the MAC driver.
>
> Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>

First off, I am not a big fan of expanding skb::shared_info because it
is sensitive to cache line sizes and is critical for performance at much
higher speeds, I would expect Eric and Jakub to not be terribly happy
about it.

The Broadcom systemport (bcmsysport.c) has a mode where it can extract
the Broadcom tag and put it in front of the actual packet contents which
appears to be very similar here. From there on, you can have two strategies:

- have the Ethernet controller mangle the packet contents such that the
QCA tag is located in front of the actual Ethernet frame and create a
new tagging protocol variant for QCA, similar to the TAG_BRCM versus
TAG_BRCM_PREPEND

- provide the necessary information for the tagger to work using an out
of band mechanism, which is what you have done, in which case, maybe you
can use skb->cb[] instead of using skb::shared_info?
--
Florian