summaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_fastopen.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-02-01 21:03:08 -0800
committerDavid S. Miller <davem@davemloft.net>2016-02-06 03:11:59 -0500
commit9d691539eea2d977e3eb86766c389a19a9c13146 (patch)
tree21f14703c42c81bc67063ab7fd9fe0cdda86265b /net/ipv4/tcp_fastopen.c
parent61d2bcae99f66a640b3dd9632180209143fb5512 (diff)
downloadop-kernel-dev-9d691539eea2d977e3eb86766c389a19a9c13146.zip
op-kernel-dev-9d691539eea2d977e3eb86766c389a19a9c13146.tar.gz
tcp: do not enqueue skb with SYN flag
If we remove the SYN flag from the skbs that tcp_fastopen_add_skb() places in socket receive queue, then we can remove the test that tcp_recvmsg() has to perform in fast path. All we have to do is to adjust SEQ in the slow path. For the moment, we place an unlikely() and output a message if we find an skb having SYN flag set. Goal would be to get rid of the test completely. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Yuchung Cheng <ycheng@google.com> Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_fastopen.c')
-rw-r--r--net/ipv4/tcp_fastopen.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv4/tcp_fastopen.c b/net/ipv4/tcp_fastopen.c
index 467d3e9..6a6e11e 100644
--- a/net/ipv4/tcp_fastopen.c
+++ b/net/ipv4/tcp_fastopen.c
@@ -143,6 +143,9 @@ void tcp_fastopen_add_skb(struct sock *sk, struct sk_buff *skb)
__skb_pull(skb, tcp_hdrlen(skb));
skb_set_owner_r(skb, sk);
+ TCP_SKB_CB(skb)->seq++;
+ TCP_SKB_CB(skb)->tcp_flags &= ~TCPHDR_SYN;
+
tp->rcv_nxt = TCP_SKB_CB(skb)->end_seq;
__skb_queue_tail(&sk->sk_receive_queue, skb);
tp->syn_data_acked = 1;
OpenPOWER on IntegriCloud