On Sat, Nov 12, 2022 at 12:13:15PM +0100, Felix Fietkau wrote:In that case it likely makes sense to disable DSA tag offloading whenever driver XDP is being used.
On 12.11.22 05:40, Jakub Kicinski wrote:
I don't really see a valid use case in running generic XDP, TC and NFT on a
DSA master dealing with packets before the tag receive function has been
run. And after the tag has been processed, the metadata DST is cleared from
the skb.
Oh, there are potentially many use cases, the problem is that maybe
there aren't as many actual implementations as ideas? At least XDP is,
I think, expected to be able to deal with DSA tags if run on a DSA
master (not sure how that applies when RX DSA tag is offloaded, but
whatever). Marek Behun had a prototype with Marvell tags, not sure how
far that went in the end:
https://www.mail-archive.com/netdev@xxxxxxxxxxxxxxx/msg381018.html
In general, forwarding a packet to another switch port belonging to the
same master via XDP_TX should be relatively efficient.
skb_dst_drop checks if refcounting was used for the skb dst pointer.How about this: I send a v4 which uses skb_dst_drop instead of skb_dst_set,
so that other drivers can use refcounting if it makes sense for them. For
mtk_eth_soc, I prefer to leave out refcounting for performance reasons.
Is that acceptable to you guys?
I don't think you can mix refcounting at consumer side with no-refcounting
at producer side, no?
I suppose that we could leave refcounting out for now, and bug you ifSounds good. I think I'll send v4 anyway to deal with the XDP case and to switch to skb_dst_drop.
someone comes with a real need later and complains. Right now it's a bit
hard for me to imagine all the possibilities. How does that sound?