From: Toke Høiland-Jørgensen <t...@redhat.com>

This adds a selftest, syncs the tools/ uapi header and adds the
devmap_hash name to bpftool for the new devmap_hash map type.

Signed-off-by: Toke Høiland-Jørgensen <t...@redhat.com>
---
 tools/bpf/bpftool/map.c                 |    1 +
 tools/include/uapi/linux/bpf.h          |    1 +
 tools/testing/selftests/bpf/test_maps.c |   16 ++++++++++++++++
 3 files changed, 18 insertions(+)

diff --git a/tools/bpf/bpftool/map.c b/tools/bpf/bpftool/map.c
index 5da5a7311f13..c345f819b840 100644
--- a/tools/bpf/bpftool/map.c
+++ b/tools/bpf/bpftool/map.c
@@ -37,6 +37,7 @@ const char * const map_type_name[] = {
        [BPF_MAP_TYPE_ARRAY_OF_MAPS]            = "array_of_maps",
        [BPF_MAP_TYPE_HASH_OF_MAPS]             = "hash_of_maps",
        [BPF_MAP_TYPE_DEVMAP]                   = "devmap",
+       [BPF_MAP_TYPE_DEVMAP_HASH]              = "devmap_hash",
        [BPF_MAP_TYPE_SOCKMAP]                  = "sockmap",
        [BPF_MAP_TYPE_CPUMAP]                   = "cpumap",
        [BPF_MAP_TYPE_XSKMAP]                   = "xskmap",
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index cecf42c871d4..8afaa0a19c67 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -134,6 +134,7 @@ enum bpf_map_type {
        BPF_MAP_TYPE_QUEUE,
        BPF_MAP_TYPE_STACK,
        BPF_MAP_TYPE_SK_STORAGE,
+       BPF_MAP_TYPE_DEVMAP_HASH,
 };
 
 /* Note that tracing related programs such as
diff --git a/tools/testing/selftests/bpf/test_maps.c 
b/tools/testing/selftests/bpf/test_maps.c
index a3fbc571280a..086319caf2d9 100644
--- a/tools/testing/selftests/bpf/test_maps.c
+++ b/tools/testing/selftests/bpf/test_maps.c
@@ -508,6 +508,21 @@ static void test_devmap(unsigned int task, void *data)
        close(fd);
 }
 
+static void test_devmap_hash(unsigned int task, void *data)
+{
+       int fd;
+       __u32 key, value;
+
+       fd = bpf_create_map(BPF_MAP_TYPE_DEVMAP_HASH, sizeof(key), 
sizeof(value),
+                           2, 0);
+       if (fd < 0) {
+               printf("Failed to create devmap_hash '%s'!\n", strerror(errno));
+               exit(1);
+       }
+
+       close(fd);
+}
+
 static void test_queuemap(unsigned int task, void *data)
 {
        const int MAP_SIZE = 32;
@@ -1675,6 +1690,7 @@ static void run_all_tests(void)
        test_arraymap_percpu_many_keys();
 
        test_devmap(0, NULL);
+       test_devmap_hash(0, NULL);
        test_sockmap(0, NULL);
 
        test_map_large();

Reply via email to