On Tue, 11 Jul 2023 19:37:23 -0700 Alexei Starovoitov wrote: > > I hope I'm not misremembering but I think I suggested at the beginning > > to create a structure describing packet geometry and requested offloads, > > and for the prog fill that in. > > hmm. but that's what skb is for. skb == packet geometry == > layout of headers, payload, inner vs outer, csum partial, gso params. > > bpf at tc layer supposed to interact with that correctly. > If the packet is modified skb geometry should be adjusted accordingly. > Like BPF_F_RECOMPUTE_CSUM flag in bpf_skb_store_bytes(). > > > All operating systems I know end up doing that, we'll end up doing > > that as well. The question is whether we're willing to learn from > > experience or prefer to go on a wild ride first... > > I don't follow. This thread was aimed to add xdp layer knobs. > To me XDP is a driver level. Driver is not a layer of the networking stack, I don't think it's a useful or meaningful anchor point for the mental model. We're talking about a set of functionality, we can look at how that functionality was exposed in existing code. > 'struct xdp_md' along with > BPF_F_XDP_HAS_FRAGS is the best abstraction we could do generalizing > dma-buffers (page and multi-page) that drivers operate on. I think you're working against your own claim. xdp frags explicitly reuse struct skb_shared_info. > Everything else at driver level is too unique to generalize. > skb layer is already doing its job. How can you say that drivers are impossible to generalize and than that the skb layer "is doing its job" ie. generalizes them? > In that sense "generic XDP" is a feature for testing only. > Trying to make "generic XDP" fast is missing the point of XDP. That's a topic on its own. > AF_XDP is a different concept. Exposing timestamp, > csum, TSO to AF_XDP users is a different design challenge. > I'm all for doing that, but trying to combine "timestamp in xdp tx" > and "timestamp in AF_XDP" will lead to bad trade-off-s for both. > Which I think this patchset demonstrates. Too vague to agree or disagree with.