Skip to content

bpf: more sock_ops callbacks

Lawrence Brakmo netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest11 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/11bpf: Make SOCK_OPS_GET_TCP size independentnet/core/filter.c+8 -50 replies
2/11bpf: Make SOCK_OPS_GET_TCP struct independentnet/core/filter.c+9 -90 replies
3/11bpf: Add write access to tcp_sock and sock fieldsinclude/linux/filter.h include/net/tcp.h net/core/filter.c+50 -12 replies
4/11bpf: Support passing args to sock_ops bpf functioninclude/linux/filter.h include/net/tcp.h include/uapi/linux/bpf.h +3 more+66 -100 replies
5/11bpf: Adds field bpf_sock_ops_flags to tcp_sockinclude/linux/tcp.h include/uapi/linux/bpf.h net/core/filter.c+15 -00 replies
6/11bpf: Add sock_ops RTO callbackinclude/uapi/linux/bpf.h include/uapi/linux/tcp.h net/ipv4/tcp_timer.c+17 -00 replies
7/11bpf: Add support for reading sk_state and moreinclude/uapi/linux/bpf.h net/core/filter.c+114 -10 replies
8/11bpf: Add sock_ops R/W access to tclass & sk_txhashinclude/uapi/linux/bpf.h net/core/filter.c+47 -10 replies
9/11bpf: Add BPF_SOCK_OPS_RETRANS_CBinclude/uapi/linux/bpf.h include/uapi/linux/tcp.h net/ipv4/tcp_output.c+8 -00 replies
10/11bpf: Add BPF_SOCK_OPS_STATE_CBinclude/uapi/linux/bpf.h include/uapi/linux/tcp.h net/ipv4/tcp.c+7 -00 replies
11/11bpf: add selftest for tcpbpftools/include/uapi/linux/bpf.h tools/testing/selftests/bpf/Makefile tools/testing/selftests/bpf/tcp_client.py +3 more+438 -41 reply

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH bpf 0/11] bpf: more sock_ops callbacks

This patchset adds support for:

- direct R or R/W access to many tcp_sock fields
- passing up to 4 arguments to sock_ops BPF functions
- tcp_sock field bpf_sock_ops_flags for controlling callbacks
- optionally calling sock_ops BPF program when RTO fires
- optionally calling sock_ops BPF program when packet is retransmitted
- optionally calling sock_ops BPF program when TCP state changes
- access to tclass and sk_txhash
- new selftest

Consists of the following patches:
[PATCH bpf 01/11] bpf: Make SOCK_OPS_GET_TCP size independent [PATCH bpf 02/11] bpf: Make SOCK_OPS_GET_TCP struct independent [PATCH bpf 03/11] bpf: Add write access to tcp_sock and sock fields [PATCH bpf 04/11] bpf: Support passing args to sock_ops bpf function [PATCH bpf 05/11] bpf: Adds field bpf_sock_ops_flags to tcp_sock [PATCH bpf 06/11] bpf: Add sock_ops RTO callback
[PATCH bpf 07/11] bpf: Add support for reading sk_state and more [PATCH bpf 08/11] bpf: Add sock_ops R/W access to tclass & sk_txhash [PATCH bpf 09/11] bpf: Add BPF_SOCK_OPS_RETRANS_CB
[PATCH bpf 10/11] bpf: Add BPF_SOCK_OPS_STATE_CB
[PATCH bpf 11/11] bpf: add selftest for tcpbpf

include/linux/filter.h                         |   4 +
include/linux/tcp.h                            |   8 ++
include/net/tcp.h                              |  66 +++++++++-
include/uapi/linux/bpf.h                       |  39 +++++-
include/uapi/linux/tcp.h                       |   5 +
net/core/filter.c                              | 212 ++++++++++++++++++++++++++++++--
net/ipv4/tcp.c                                 |   4 +-
net/ipv4/tcp_nv.c                              |   2 +-
net/ipv4/tcp_output.c                          |   5 +-
net/ipv4/tcp_timer.c                           |   9 ++
tools/include/uapi/linux/bpf.h                 |  45 ++++++-
tools/testing/selftests/bpf/Makefile           |   5 +-
tools/testing/selftests/bpf/tcp_client.py      |  57 +++++++++
tools/testing/selftests/bpf/tcp_server.py      |  83 +++++++++++++
tools/testing/selftests/bpf/test_tcpbpf_kern.c | 133 ++++++++++++++++++++
tools/testing/selftests/bpf/test_tcpbpf_user.c | 119 ++++++++++++++++++
16 files changed, 772 insertions(+), 24 deletions(-)