All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Fastabend <john.fastabend@gmail.com>
To: daniel@iogearbox.net, ast@kernel.org
Cc: netdev@vger.kernel.org, davem@davemloft.net,
	John Fastabend <john.fastabend@gmail.com>
Subject: [PATCH bpf-next v6 0/4] Hash support for sock
Date: Mon, 14 May 2018 10:00:15 -0700	[thread overview]
Message-ID: <1526317219-7752-1-git-send-email-john.fastabend@gmail.com> (raw)

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

             reply	other threads:[~2018-05-14 17:01 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-14 17:00 John Fastabend [this message]
2018-05-14 17:00 ` [PATCH bpf-next v6 1/4] bpf: sockmap, refactor sockmap routines to work with hashmap John Fastabend
2018-05-15 19:19   ` Daniel Borkmann
2018-05-16 21:46     ` John Fastabend
2018-05-14 17:00 ` [PATCH bpf-next v6 2/4] bpf: sockmap, add hash map support John Fastabend
2018-05-15 19:01   ` Daniel Borkmann
2018-05-15 21:09     ` Y Song
2018-05-16 20:08       ` Daniel Borkmann
2018-05-14 17:00 ` [PATCH bpf-next v6 3/4] bpf: selftest additions for SOCKHASH John Fastabend
2018-05-14 17:00 ` [PATCH bpf-next v6 4/4] bpf: bpftool, support for sockhash John Fastabend
2018-05-15 18:55 ` [PATCH bpf-next v6 0/4] Hash support for sock Daniel Borkmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1526317219-7752-1-git-send-email-john.fastabend@gmail.com \
    --to=john.fastabend@gmail.com \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.