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>