[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Wed, 7 Jul 2021 22:16:53 +0000
From: Zvi Effron <zeffron@...tgames.com>
To: bpf@...r.kernel.org
Cc: Alexei Starovoitov <ast@...nel.org>,
"David S. Miller" <davem@...emloft.net>,
Daniel Borkmann <daniel@...earbox.net>,
Jesper Dangaard Brouer <hawk@...nel.org>,
Andrii Nakryiko <andrii.nakryiko@...il.com>,
Maciej Fijalkowski <maciej.fijalkowski@...el.com>,
Martin KaFai Lau <kafai@...com>, Yonghong Song <yhs@...com>,
netdev@...r.kernel.org, KP Singh <kpsingh@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>,
John Fastabend <john.fastabend@...il.com>,
Song Liu <songliubraving@...com>,
Jakub Kicinski <kuba@...nel.org>,
Zvi Effron <zeffron@...tgames.com>
Subject: [PATCH bpf-next v8 0/4] bpf: support input xdp_md context in BPF_PROG_TEST_RUN
This patchset adds support for passing an xdp_md via ctx_in/ctx_out in
bpf_attr for BPF_PROG_TEST_RUN of XDP programs.
Patch 1 adds a function to validate XDP meta data lengths.
Patch 2 adds initial support for passing XDP meta data in addition to
packet data.
Patch 3 adds support for also specifying the ingress interface and
rx queue.
Patch 4 adds selftests to ensure functionality is correct.
Changelog:
----------
v7->v8
v7: https://lore.kernel.org/bpf/20210624211304.90807-1-zeffron@riotgames.com/
* Fix too long comment line in patch 3
v6->v7
v6: https://lore.kernel.org/bpf/20210617232904.1899-1-zeffron@riotgames.com/
* Add Yonghong Song's Acked-by to commit message in patch 1
* Add Yonghong Song's Acked-by to commit message in patch 2
* Extracted the post-update of the xdp_md context into a function (again)
* Validate that the rx queue was registered with XDP info
* Decrement the reference count on a found netdevice on failure to find
a valid rx queue
* Decrement the reference count on a found netdevice after the XDP
program is run
* Drop Yonghong Song's Acked-By for patch 3 because of patch changes
* Improve a comment in the selftests
* Drop Yonghong Song's Acked-By for patch 4 because of patch changes
v5->v6
v5: https://lore.kernel.org/bpf/20210616224712.3243-1-zeffron@riotgames.com/
* Correct commit messages in patches 1 and 3
* Add Acked-by to commit message in patch 4
* Use gotos instead of returns to correctly free resources in
bpf_prog_test_run_xdp
* Rename xdp_metalen_valid to xdp_metalen_invalid
* Improve the function signature for xdp_metalen_invalid
* Merged declaration of ingress_ifindex and rx_queue_index into one line
v4->v5
v4: https://lore.kernel.org/bpf/20210604220235.6758-1-zeffron@riotgames.com/
* Add new patch to introduce xdp_metalen_valid inline function to avoid
duplicated code from net/core/filter.c
* Correct size of bad_ctx in selftests
* Make all declarations reverse Christmas tree
* Move data check from xdp_convert_md_to_buff to bpf_prog_test_run_xdp
* Merge xdp_convert_buff_to_md into bpf_prog_test_run_xdp
* Fix line too long
* Extracted common checks in selftests to a helper function
* Removed redundant assignment in selftests
* Reordered test cases in selftests
* Check data against 0 instead of data_meta in selftests
* Made selftests use EINVAL instead of hardcoded 22
* Dropped "_" from XDP function name
* Changed casts in XDP program from unsigned long to long
* Added a comment explaining the use of the loopback interface in selftests
* Change parameter order in xdp_convert_md_to_buff to be input first
* Assigned xdp->ingress_ifindex and xdp->rx_queue_index to local variables in
xdp_convert_md_to_buff
* Made use of "meta data" versus "metadata" consistent in comments and commit
messages
v3->v4
v3: https://lore.kernel.org/bpf/20210602190815.8096-1-zeffron@riotgames.com/
* Clean up nits
* Validate xdp_md->data_end in bpf_prog_test_run_xdp
* Remove intermediate metalen variables
v2 -> v3
v2: https://lore.kernel.org/bpf/20210527201341.7128-1-zeffron@riotgames.com/
* Check errno first in selftests
* Use DECLARE_LIBBPF_OPTS
* Rename tattr to opts in selftests
* Remove extra new line
* Rename convert_xdpmd_to_xdpb to xdp_convert_md_to_buff
* Rename convert_xdpb_to_xdpmd to xdp_convert_buff_to_md
* Move declaration of device and rxqueue in xdp_convert_md_to_buff to
patch 2
* Reorder the kfree calls in bpf_prog_test_run_xdp
v1 -> v2
v1: https://lore.kernel.org/bpf/20210524220555.251473-1-zeffron@riotgames.com
* Fix null pointer dereference with no context
* Use the BPF skeleton and replace CHECK with ASSERT macros
Zvi Effron (4):
bpf: add function for XDP meta data length check
bpf: support input xdp_md context in BPF_PROG_TEST_RUN
bpf: support specifying ingress via xdp_md context in
BPF_PROG_TEST_RUN
selftests/bpf: Add test for xdp_md context in BPF_PROG_TEST_RUN
include/net/xdp.h | 5 +
include/uapi/linux/bpf.h | 3 -
net/bpf/test_run.c | 109 ++++++++++++++++--
net/core/filter.c | 4 +-
.../bpf/prog_tests/xdp_context_test_run.c | 105 +++++++++++++++++
.../bpf/progs/test_xdp_context_test_run.c | 20 ++++
6 files changed, 233 insertions(+), 13 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/xdp_context_test_run.c
create mode 100644 tools/testing/selftests/bpf/progs/test_xdp_context_test_run.c
base-commit: 5e437416ff66981d8154687cfdf7de50b1d82bfc
--
2.31.1
Powered by blists - more mailing lists