On Wed, 7 Aug 2019 15:09:09 -0700 Zvi Effron <zeffron@xxxxxxxxxxxxx> wrote: > On Wed, Aug 7, 2019 at 6:00 AM Jesper Dangaard Brouer <brouer@xxxxxxxxxx> wrote: > > > > Toke's devmap lookup improvement is first avail in kernel v5.3. > > Thus, not part of XDP-tutorial yet. > > > I probably missed this in an earlier email, but what are Toke's devmap > improvements? Performance? Capability? Toke's devmap and redirect improvements are primarily about usability. Currently, from BPF-context (kernel-side) you cannot read the contents of devmap (or cpumap or xskmap(AF_XDP)). Because for devmap you get the real pointer to the net_device ifindex, and we cannot allow you to write/change that from BPF (kernel would likely crash or be inconsistent). The work-around, is to keep a shadow map, that contains the "config" of the devmap, which you check/validate against instead. It is just a pain to maintain this shadow map. Toke's change allow you to read devmap from BPF-context. Thus, you can avoid this shadow map. Another improvement from Toke, is that the bpf_redirect_map() helper, now also check if the redirect index is valid in the map. If not, then it returns another value than XDP_REDIRECT. You can choose the alternative return value yourself, via "flags" e.g. XDP_PASS. Thus, you don't even need to check/validate devmap in your BPF-code, as it is part of the bpf_redirect_map() call now. action = bpf_redirect_map(&map, &index, flags_as_xdp_value) The default flags used in most programs today is 0, which maps to XDP_ABORTED. This is sort of a small UAPI change, but for the better. As today, the packet is dropped later, only diagnose/seen via tracepoint xdp:xdp_redirect_map_err. -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer