On Thu, Jan 25, 2018 at 04:14:04PM -0800, Lawrence Brakmo wrote: > 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.
Applied to bpf-next, thank you Larry. We'll make sure to send patch 1 to stable when 4.15 is released. Also there were few leftover comments in patch 12, please clean it up in the followup patch. Thanks