On Mon, 21 Oct 2019 at 17:43, Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > > Björn Töpel <bjorn.topel@xxxxxxxxx> writes: > > > On Mon, 21 Oct 2019 at 15:37, Björn Töpel <bjorn.topel@xxxxxxxxx> wrote: > >> > >> On Mon, 21 Oct 2019 at 14:19, Toke Høiland-Jørgensen <toke@xxxxxxxxxx> wrote: > >> > > >> > Björn Töpel <bjorn.topel@xxxxxxxxx> writes: > >> > > >> [...] > >> > > > >> > > bpf_redirect_map() returns a 32-bit signed int, so the upper 32-bit > >> > > will need to be cleared. Having an explicit AND is one instruction > >> > > less than two shifts. So, it's an optimization (every instruction is > >> > > sacred). > >> > > >> > OIC. Well, a comment explaining that might be nice (since you're doing > >> > per-instruction comments anyway)? :) > >> > > >> > >> Sure, I can do a v3 with a comment, unless someone has a better idea > >> avoiding both shifts and AND. > >> > >> Thanks for taking a look! > >> > > > > Now wait, there are the JMP32 instructions that Jiong added. So, > > shifts/AND can be avoided. Now, regarding backward compat... JMP32 is > > pretty new. I need to think a bit how to approach this. I mean, I'd > > like to be able to use new BPF instructions. > > Well, they went into kernel 5.1 AFAICT; does AF_XDP even work properly > in kernels older than that? For the xdp-tutorial we've just been telling > people to upgrade their kernels to use it (see, e.g., > https://github.com/xdp-project/xdp-tutorial/issues/76). > Yeah, let's take that route, i.e. using JMP32 and one program. One could argue that libbpf could do runtime checks and load the simpler program w/o the fallback for post-5.3 only, and avoiding the branching all together. Björn > -Toke >