12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- From 12a59abc22d6664f7d3944f625ceefee92de8820 Mon Sep 17 00:00:00 2001
- From: Eric Dumazet <edumazet@google.com>
- Date: Sat, 3 Dec 2016 11:14:55 -0800
- Subject: [PATCH 06/10] tcp: tcp_mtu_probe() is likely to exit early
- Adding a likely() in tcp_mtu_probe() moves its code which used to
- be inlined in front of tcp_write_xmit()
- We still have a cache line miss to access icsk->icsk_mtup.enabled,
- we will probably have to reorganize fields to help data locality.
- Signed-off-by: Eric Dumazet <edumazet@google.com>
- Signed-off-by: David S. Miller <davem@davemloft.net>
- ---
- net/ipv4/tcp_output.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
- --- a/net/ipv4/tcp_output.c
- +++ b/net/ipv4/tcp_output.c
- @@ -1960,26 +1960,26 @@ static bool tcp_can_coalesce_send_queue_
- */
- static int tcp_mtu_probe(struct sock *sk)
- {
- - struct tcp_sock *tp = tcp_sk(sk);
- struct inet_connection_sock *icsk = inet_csk(sk);
- + struct tcp_sock *tp = tcp_sk(sk);
- struct sk_buff *skb, *nskb, *next;
- struct net *net = sock_net(sk);
- - int len;
- int probe_size;
- int size_needed;
- - int copy;
- + int copy, len;
- int mss_now;
- int interval;
-
- /* Not currently probing/verifying,
- * not in recovery,
- * have enough cwnd, and
- - * not SACKing (the variable headers throw things off) */
- - if (!icsk->icsk_mtup.enabled ||
- - icsk->icsk_mtup.probe_size ||
- - inet_csk(sk)->icsk_ca_state != TCP_CA_Open ||
- - tp->snd_cwnd < 11 ||
- - tp->rx_opt.num_sacks || tp->rx_opt.dsack)
- + * not SACKing (the variable headers throw things off)
- + */
- + if (likely(!icsk->icsk_mtup.enabled ||
- + icsk->icsk_mtup.probe_size ||
- + inet_csk(sk)->icsk_ca_state != TCP_CA_Open ||
- + tp->snd_cwnd < 11 ||
- + tp->rx_opt.num_sacks || tp->rx_opt.dsack))
- return -1;
-
- /* Use binary search for probe_size between tcp_mss_base,
|