Merge branch 'devmap_hash'
authorAlexei Starovoitov <ast@kernel.org>
Mon, 29 Jul 2019 20:50:55 +0000 (13:50 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 29 Jul 2019 20:50:55 +0000 (13:50 -0700)
commitd3406913561c322323ec2898cc58f55e79786be7
treebb73276e8395f7b22d4e1095fb5ec1f6e27b6c3c
parent475e31f8da1b299099fc3d8d51d47b0e86410163
parent1375dc4a4579d5e767dd8c2d2abcd929ff59d0a7
Merge branch 'devmap_hash'

Toke Høiland-Jørgensen says:

====================
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 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:

v5:

- Dynamically set the number of hash buckets by rounding up max_entries to the
  nearest power of two (mirroring the regular hashmap), as suggested by Jesper.

v4:

- Remove check_memlock parameter that was left over from an earlier patch
  series.
- Reorder struct members to avoid holes.

v3:

- Rework the split into different patches
- Use spin_lock_irqsave()
- Also add documentation and bash completion definitions for bpftool

v2:

- Split commit adding the new map type so uapi and tools changes are separate.

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.
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>