All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next v10 00/12] bpf: More sock_ops callbacks
@ 2018-01-26  0:14 Lawrence Brakmo
  2018-01-26  0:14 ` [PATCH bpf-next v10 01/12] bpf: Only reply field should be writeable Lawrence Brakmo
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: Lawrence Brakmo @ 2018-01-26  0:14 UTC (permalink / raw)
  To: netdev
  Cc: Kernel Team, Blake Matheny, Alexei Starovoitov, Daniel Borkmann,
	Eric Dumazet, Neal Cardwell, Yuchung Cheng

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_cb_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

v2: Fixed commit message 0/11. The commit is to "bpf-next" but the patch
    below used "bpf" and Patchwork didn't work correctly.
v3: Cleaned RTO callback as per  Yuchung's comment
    Added BPF enum for TCP states as per  Alexei's comment
v4: Fixed compile warnings related to detecting changes between TCP
    internal states and the BPF defined states.
v5: Fixed comment issues in some selftest files
    Fixed accesss issue with u64 fields in bpf_sock_ops struct
v6: Made fixes based on comments form Eric Dumazet:
    The field bpf_sock_ops_cb_flags was addded in a hole on 64bit kernels
    Field bpf_sock_ops_cb_flags is now set through a helper function
    which returns an error when a BPF program tries to set bits for
    callbacks that are not supported in the current kernel.
    Added a comment indicating that when adding fields to bpf_sock_ops_kern
    they should be added before the field named "temp" if they need to be
    cleared before calling the BPF function.  
v7: Enfornced fields "op" and "replylong[1] .. replylong[3]" not be writable
    based on comments form Eric Dumazet and Alexei Starovoitov.
    Filled 32 bit hole in bpf_sock_ops struct with sk_txhash based on
    comments from Daniel Borkmann.
    Removed unused functions (tcp_call_bpf_1arg, tcp_call_bpf_4arg) based
    on comments from Daniel Borkmann.
v8: Add commit message 00/12
    Add Acked-by as appropriate
v9: Moved the bug fix to the front of the patchset
    Changed RETRANS_CB so it is always called (before it was only called if
    the retransmit succeeded). It is now called with an extra argument, the
    return value of tcp_transmit_skb (0 => success). Based on comments
    from Yuchung Cheng.
    Added support for reading 2 new fields, sacked_out and lost_out, based on
    comments from Yuchung Cheng.
v10: Moved the callback flags from include/uapi/linux/tcp.h to
     include/uapi/linux/bpf.h
     Cleaned up the test in selftest. Added a timeout so it always completes,
     even if the client is not communicating with the server. Made it faster
     by removing the sleeps. Made sure it works even when called back-to-back
     20 times.

Consists of the following patches:
[PATCH bpf-next v10 01/12] bpf: Only reply field should be writeable
[PATCH bpf-next v10 02/12] bpf: Make SOCK_OPS_GET_TCP size
[PATCH bpf-next v10 03/12] bpf: Make SOCK_OPS_GET_TCP struct
[PATCH bpf-next v10 04/12] bpf: Add write access to tcp_sock and sock
[PATCH bpf-next v10 05/12] bpf: Support passing args to sock_ops bpf
[PATCH bpf-next v10 06/12] bpf: Adds field bpf_sock_ops_cb_flags to
[PATCH bpf-next v10 07/12] bpf: Add sock_ops RTO callback
[PATCH bpf-next v10 08/12] bpf: Add support for reading sk_state and
[PATCH bpf-next v10 09/12] bpf: Add sock_ops R/W access to tclass
[PATCH bpf-next v10 10/12] bpf: Add BPF_SOCK_OPS_RETRANS_CB
[PATCH bpf-next v10 11/12] bpf: Add BPF_SOCK_OPS_STATE_CB
[PATCH bpf-next v10 12/12] bpf: add selftest for tcpbpf

 include/linux/filter.h                         |  10 ++
 include/linux/tcp.h                            |  11 ++
 include/net/tcp.h                              |  42 ++++-
 include/uapi/linux/bpf.h                       |  84 ++++++++-
 net/core/filter.c                              | 290 ++++++++++++++++++++++++++++---
 net/ipv4/tcp.c                                 |  26 ++-
 net/ipv4/tcp_nv.c                              |   2 +-
 net/ipv4/tcp_output.c                          |   6 +-
 net/ipv4/tcp_timer.c                           |   7 +
 tools/include/uapi/linux/bpf.h                 |  86 ++++++++-
 tools/testing/selftests/bpf/Makefile           |   4 +-
 tools/testing/selftests/bpf/bpf_helpers.h      |   2 +
 tools/testing/selftests/bpf/tcp_client.py      |  51 ++++++
 tools/testing/selftests/bpf/tcp_server.py      |  83 +++++++++
 tools/testing/selftests/bpf/test_tcpbpf.h      |  16 ++
 tools/testing/selftests/bpf/test_tcpbpf_kern.c | 118 +++++++++++++
 tools/testing/selftests/bpf/test_tcpbpf_user.c | 126 ++++++++++++++
 17 files changed, 925 insertions(+), 39 deletions(-)

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2018-01-26  0:54 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-26  0:14 [PATCH bpf-next v10 00/12] bpf: More sock_ops callbacks Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 01/12] bpf: Only reply field should be writeable Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 02/12] bpf: Make SOCK_OPS_GET_TCP size independent Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 03/12] bpf: Make SOCK_OPS_GET_TCP struct independent Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 04/12] bpf: Add write access to tcp_sock and sock fields Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 05/12] bpf: Support passing args to sock_ops bpf function Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 06/12] bpf: Adds field bpf_sock_ops_cb_flags to tcp_sock Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 07/12] bpf: Add sock_ops RTO callback Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 08/12] bpf: Add support for reading sk_state and more Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 09/12] bpf: Add sock_ops R/W access to tclass Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 10/12] bpf: Add BPF_SOCK_OPS_RETRANS_CB Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 11/12] bpf: Add BPF_SOCK_OPS_STATE_CB Lawrence Brakmo
2018-01-26  0:14 ` [PATCH bpf-next v10 12/12] bpf: add selftest for tcpbpf Lawrence Brakmo
2018-01-26  0:54 ` [PATCH bpf-next v10 00/12] bpf: More sock_ops callbacks Alexei Starovoitov

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.