mbox series

[net-next,00/11] tcp: remove code from tcp_create_openreq_child()

Message ID 20190117192342.71126-1-edumazet@google.com
Headers show
Series tcp: remove code from tcp_create_openreq_child() | expand

Message

Eric Dumazet Jan. 17, 2019, 7:23 p.m. UTC
tcp_create_openreq_child() is essentially cloning a listener, then
must initialize some fields that can not be inherited.

Listeners are either fresh sockets, or sockets that came through
tcp_disconnect() after a session that dirtied many fields.

By moving code to tcp_disconnect(), we can shorten time taken
to create a clone, since tcp_disconnect() operation is very
unlikely.

Eric Dumazet (11):
  tcp: do not set snd_ssthresh in tcp_create_openreq_child()
  tcp: move icsk_rto init to tcp_disconnect()
  tcp: do not clear packets_out in tcp_create_openreq_child()
  tcp: do not clear srtt_us in tcp_create_openreq_child
  tcp: move mdev_us init to tcp_disconnect()
  tcp: move snd_cwnd & snd_cwnd_cnt init to tcp_disconnect()
  tcp: do not clear urg_data in tcp_create_openreq_child
  tcp: move retrans_out,sacked_out,tlp_high_seq,last_oow_ack_time init
    to tcp_disconnect()
  tcp: move app_limited init to tcp_disconnect()
  tcp: move tp->rack init to tcp_disconnect()
  tcp: move rx_opt & syn_data_acked init to tcp_disconnect()

 net/ipv4/tcp.c           | 21 ++++++++++++++++++++-
 net/ipv4/tcp_minisocks.c | 34 ----------------------------------
 2 files changed, 20 insertions(+), 35 deletions(-)

Comments

Yuchung Cheng Jan. 17, 2019, 10:19 p.m. UTC | #1
On Thu, Jan 17, 2019 at 11:23 AM Eric Dumazet <edumazet@google.com> wrote:
>
> tcp_create_openreq_child() is essentially cloning a listener, then
> must initialize some fields that can not be inherited.
>
> Listeners are either fresh sockets, or sockets that came through
> tcp_disconnect() after a session that dirtied many fields.
>
> By moving code to tcp_disconnect(), we can shorten time taken
> to create a clone, since tcp_disconnect() operation is very
> unlikely.
>
> Eric Dumazet (11):
>   tcp: do not set snd_ssthresh in tcp_create_openreq_child()
>   tcp: move icsk_rto init to tcp_disconnect()
>   tcp: do not clear packets_out in tcp_create_openreq_child()
>   tcp: do not clear srtt_us in tcp_create_openreq_child
>   tcp: move mdev_us init to tcp_disconnect()
>   tcp: move snd_cwnd & snd_cwnd_cnt init to tcp_disconnect()
>   tcp: do not clear urg_data in tcp_create_openreq_child
>   tcp: move retrans_out,sacked_out,tlp_high_seq,last_oow_ack_time init
>     to tcp_disconnect()
>   tcp: move app_limited init to tcp_disconnect()
>   tcp: move tp->rack init to tcp_disconnect()
>   tcp: move rx_opt & syn_data_acked init to tcp_disconnect()
>
>  net/ipv4/tcp.c           | 21 ++++++++++++++++++++-
>  net/ipv4/tcp_minisocks.c | 34 ----------------------------------
>  2 files changed, 20 insertions(+), 35 deletions(-)
>
> --
Entire patch set looks great to me!

Acked-by: Yuchung Cheng <ycheng@google.com>

> 2.20.1.321.g9e740568ce-goog
>
Soheil Hassas Yeganeh Jan. 17, 2019, 10:42 p.m. UTC | #2
On Thu, Jan 17, 2019 at 5:20 PM Yuchung Cheng <ycheng@google.com> wrote:
>
> On Thu, Jan 17, 2019 at 11:23 AM Eric Dumazet <edumazet@google.com> wrote:
> >
> > tcp_create_openreq_child() is essentially cloning a listener, then
> > must initialize some fields that can not be inherited.
> >
> > Listeners are either fresh sockets, or sockets that came through
> > tcp_disconnect() after a session that dirtied many fields.
> >
> > By moving code to tcp_disconnect(), we can shorten time taken
> > to create a clone, since tcp_disconnect() operation is very
> > unlikely.
> >
> > Eric Dumazet (11):
> >   tcp: do not set snd_ssthresh in tcp_create_openreq_child()
> >   tcp: move icsk_rto init to tcp_disconnect()
> >   tcp: do not clear packets_out in tcp_create_openreq_child()
> >   tcp: do not clear srtt_us in tcp_create_openreq_child
> >   tcp: move mdev_us init to tcp_disconnect()
> >   tcp: move snd_cwnd & snd_cwnd_cnt init to tcp_disconnect()
> >   tcp: do not clear urg_data in tcp_create_openreq_child
> >   tcp: move retrans_out,sacked_out,tlp_high_seq,last_oow_ack_time init
> >     to tcp_disconnect()
> >   tcp: move app_limited init to tcp_disconnect()
> >   tcp: move tp->rack init to tcp_disconnect()
> >   tcp: move rx_opt & syn_data_acked init to tcp_disconnect()
> >
> >  net/ipv4/tcp.c           | 21 ++++++++++++++++++++-
> >  net/ipv4/tcp_minisocks.c | 34 ----------------------------------
> >  2 files changed, 20 insertions(+), 35 deletions(-)
> >
> > --
> Entire patch set looks great to me!
>
> Acked-by: Yuchung Cheng <ycheng@google.com>

Acked-by: Soheil Hassas Yeganeh <soheil@google.com>

Thank you very much, Eric, for the nice code removal!

> > 2.20.1.321.g9e740568ce-goog
> >
David Miller Jan. 18, 2019, 6:19 a.m. UTC | #3
From: Eric Dumazet <edumazet@google.com>
Date: Thu, 17 Jan 2019 11:23:31 -0800

> tcp_create_openreq_child() is essentially cloning a listener, then
> must initialize some fields that can not be inherited.
> 
> Listeners are either fresh sockets, or sockets that came through
> tcp_disconnect() after a session that dirtied many fields.
> 
> By moving code to tcp_disconnect(), we can shorten time taken
> to create a clone, since tcp_disconnect() operation is very
> unlikely.

Series applied, thanks Eric.