On Tue, 2 Nov 2021 at 22:33, Thomas Ptacek <thomasptacek@xxxxxxxxx> wrote: > > Thanks for the context! > > I write back to the packet directly (I chain all the checksum updates > through a series of bpf_csum_diff() calls and then write back the > ultimate value). > > Since we have a mixed fleet right now, I'm guessing I'm going to need > multiple versions of the TC BPF .o binary, since it looks like > bpf_skb_net_shrink() EINVAL's on 5.6 with that > BPF_F_ADJ_ROOM_NO_CSUM_RESET flag. Funny, I saw your tweet and went "uh oh" :D Daniel will know better, but the way I understood it BPF_F_ADJ_ROOM_NO_CSUM_RESET just tells the kernel to not verify the checksum of the packet again as it goes through the network stack. If setting that flag fixes your problem it makes me suspect that something in your checksum code is wonky. Lorenz -- Lorenz Bauer | Systems Engineer 6th Floor, County Hall/The Riverside Building, SE1 7PB, UK www.cloudflare.com