On Wed, Sep 9, 2020 at 8:24 PM Neal Cardwell <ncardw...@google.com> wrote: > > On Wed, Sep 9, 2020 at 8:36 PM Martin KaFai Lau <ka...@fb.com> wrote: > > > > On Wed, Sep 09, 2020 at 02:15:52PM -0400, Neal Cardwell wrote: > > > This patch series reorganizes TCP congestion control initialization so > > > that if > > > EBPF code called by tcp_init_transfer() sets the congestion control > > > algorithm > > > by calling setsockopt(TCP_CONGESTION) then the TCP stack initializes the > > > congestion control module immediately, instead of having > > > tcp_init_transfer() > > > later initialize the congestion control module. > > > > > > This increases flexibility for the EBPF code that runs at connection > > > establishment time, and simplifies the code. > > > > > > This has the following benefits: > > > > > > (1) This allows CC module customizations made by the EBPF called in > > > tcp_init_transfer() to persist, and not be wiped out by a later > > > call to tcp_init_congestion_control() in tcp_init_transfer(). > > > > > > (2) Does not flip the order of EBPF and CC init, to avoid causing bugs > > > for existing code upstream that depends on the current order. > > > > > > (3) Does not cause 2 initializations for for CC in the case where the > > > EBPF called in tcp_init_transfer() wants to set the CC to a new CC > > > algorithm. > > > > > > (4) Allows follow-on simplifications to the code in net/core/filter.c > > > and net/ipv4/tcp_cong.c, which currently both have some complexity > > > to special-case CC initialization to avoid double CC > > > initialization if EBPF sets the CC. > > Thanks for this work. Only have one nit in patch 3 for consideration. > > > > Acked-by: Martin KaFai Lau <ka...@fb.com> > > Thanks for the review! I like your suggestion in patch 3 to further > simplify the code. Do you mind submitting your idea for a follow-on > clean-up/refactor as a separate follow-on commit?
I think it's better to be folded into this set. It needs rebase to bpf-next anyway.