From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Fastabend Subject: [PATCH bpf-next v6 0/4] Hash support for sock Date: Mon, 14 May 2018 10:00:15 -0700 Message-ID: <1526317219-7752-1-git-send-email-john.fastabend@gmail.com> Cc: netdev@vger.kernel.org, davem@davemloft.net, John Fastabend To: daniel@iogearbox.net, ast@kernel.org Return-path: Received: from mail-it0-f68.google.com ([209.85.214.68]:35561 "EHLO mail-it0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754052AbeENRBK (ORCPT ); Mon, 14 May 2018 13:01:10 -0400 Received: by mail-it0-f68.google.com with SMTP id q72-v6so12667452itc.0 for ; Mon, 14 May 2018 10:01:10 -0700 (PDT) Sender: netdev-owner@vger.kernel.org List-ID: In the original sockmap implementation we got away with using an array similar to devmap. However, unlike devmap where an ifindex has a nice 1:1 function into the map we have found some use cases with sockets that need to be referenced using longer keys. This series adds support for a sockhash map reusing as much of the sockmap code as possible. I made the decision to add sockhash specific helpers vs trying to generalize the existing helpers because (a) they have sockmap in the name and (b) the keys are different types. I prefer to be explicit here rather than play type games or do something else tricky. To test this we duplicate all the sockmap testing except swap out the sockmap with a sockhash. v2: fix file stats and add v2 tag v3: move tool updates into test patch, move bpftool updates into its own patch, and fixup the test patch stats to catch the renamed file and provide only diffs +/- on that. v4: Add documentation to UAPI bpf.h v5: Add documentation to tools UAPI bpf.h v6: 'git add' test_sockhash_kern.c which was previously missing but was not causing issues because of typo in test script, noticed by Daniel. After this the git format-patch -M option no longer tracks the rename of the test_sockmap_kern files for some reason. I guess the diff has exceeded some threshold. Just a note I pushed Dave's Acks through v4 into v5 due to small size of changes. John Fastabend (4): bpf: sockmap, refactor sockmap routines to work with hashmap bpf: sockmap, add hash map support bpf: selftest additions for SOCKHASH bpf: bpftool, support for sockhash include/linux/bpf.h | 8 + include/linux/bpf_types.h | 1 + include/linux/filter.h | 3 +- include/net/tcp.h | 3 +- include/uapi/linux/bpf.h | 52 +- kernel/bpf/core.c | 1 + kernel/bpf/sockmap.c | 638 ++++++++++++++++++++--- kernel/bpf/verifier.c | 14 +- net/core/filter.c | 89 +++- tools/bpf/bpftool/map.c | 1 + tools/include/uapi/linux/bpf.h | 52 +- tools/testing/selftests/bpf/Makefile | 2 +- tools/testing/selftests/bpf/bpf_helpers.h | 8 + tools/testing/selftests/bpf/test_sockhash_kern.c | 5 + tools/testing/selftests/bpf/test_sockmap.c | 27 +- tools/testing/selftests/bpf/test_sockmap_kern.c | 343 +----------- tools/testing/selftests/bpf/test_sockmap_kern.h | 363 +++++++++++++ 17 files changed, 1159 insertions(+), 451 deletions(-) create mode 100644 tools/testing/selftests/bpf/test_sockhash_kern.c create mode 100644 tools/testing/selftests/bpf/test_sockmap_kern.h -- 1.9.1