On 5 Jul 2019, at 10:56, Toke Høiland-Jørgensen wrote:
This series adds a new map type, devmap_hash, that works like the
existing
devmap type, but using a hash-based indexing scheme. This is useful
for the use
case where a devmap is indexed by ifindex (for instance for use with
the routing
table lookup helper). For this use case, the regular devmap needs to
be sized
after the maximum ifindex number, not the number of devices in it. A
hash-based
indexing scheme makes it possible to size the map after the number of
devices it
should contain instead.
This device hash map is sized at NETDEV_HASHENTRIES == 2^8 == 256. Is
this actually
smaller than an array? What ifindex values are you seeing?
--
Jonathan
This was previously part of my patch series that also turned the
regular
bpf_redirect() helper into a map-based one; for this series I just
pulled out
the patches that introduced the new map type.
Changelog:
Changes to these patches since the previous series:
- Rebase on top of the other devmap changes (makes this one simpler!)
- Don't enforce key==val, but allow arbitrary indexes.
- Rename the type to devmap_hash to reflect the fact that it's just a
hashmap now.
---
Toke Høiland-Jørgensen (3):
include/bpf.h: Remove map_insert_ctx() stubs
xdp: Refactor devmap allocation code for reuse
xdp: Add devmap_hash map type for looking up devices by hashed
index
include/linux/bpf.h | 11 -
include/linux/bpf_types.h | 1
include/trace/events/xdp.h | 3
include/uapi/linux/bpf.h | 7 -
kernel/bpf/devmap.c | 325
++++++++++++++++++++++++++-----
kernel/bpf/verifier.c | 2
net/core/filter.c | 9 +
tools/bpf/bpftool/map.c | 1
tools/include/uapi/linux/bpf.h | 7 -
tools/lib/bpf/libbpf_probes.c | 1
tools/testing/selftests/bpf/test_maps.c | 16 ++
11 files changed, 316 insertions(+), 67 deletions(-)