On Sat, 30 May 2020 00:19:50 -0700 Andrii Nakryiko <andrii.nakryiko@xxxxxxxxx> wrote: > On Fri, May 29, 2020 at 8:59 AM Jesper Dangaard Brouer > <brouer@xxxxxxxxxx> wrote: > > > > The devmap map-value can be read from BPF-prog side, and could be used for a > > storage area per device. This could e.g. contain info on headers that need > > If BPF program needs a storage area per device, why can't it just use > a separate map or just plain array (both keyed by ifindex) to store > whatever it needs per-device? It's not clear why this flexibility and > complexity is needed from the description above. Sorry I though it was obvious, it is for performance reasons and to reduce the number of maps needed. We do a lookup in the devmap anyhow, thus this memory will be cache-hot. Doing another lookup in a separate map, which is not guaranteed to be cache-hot, will be wasting cycles. > > to be added when packet egress this device. > > > > This patchset adds a dynamic storage member to struct bpf_devmap_val. More > > importantly the struct bpf_devmap_val is made dynamic via leveraging and > > requiring BTF for struct sizes above 4. The only mandatory struct member is > > 'ifindex' with a fixed offset of zero. > > > > Signed-off-by: Jesper Dangaard Brouer <brouer@xxxxxxxxxx> > > --- > > kernel/bpf/devmap.c | 216 ++++++++++++++++++++++++++++++++++++++++++++------- > > 1 file changed, 185 insertions(+), 31 deletions(-) > > > > [...] > -- Best regards, Jesper Dangaard Brouer MSc.CS, Principal Kernel Engineer at Red Hat LinkedIn: http://www.linkedin.com/in/brouer