diff options
author | Lawrence Brakmo <brakmo@fb.com> | 2016-05-06 20:35:35 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-05-09 00:03:26 -0400 |
commit | b75803d52a2ce1f6cbaf7ae0ae40a369210070cf (patch) | |
tree | 87760e042352445348961f6e4326d11a0e6b4a20 /include/net | |
parent | 7d945796754a0394b0c5c35d8f80a4a805c7dbb9 (diff) |
tcp: refactor struct tcp_skb_cb
Refactor tcp_skb_cb to create two overlaping areas to store
state for incoming or outgoing skbs based on comments by
Neal Cardwell to tcp_nv patch:
AFAICT this patch would not require an increase in the size of
sk_buff cb[] if it were to take advantage of the fact that the
tcp_skb_cb header.h4 and header.h6 fields are only used in the packet
reception code path, and this in_flight field is only used on the
transmit side.
Signed-off-by: Lawrence Brakmo <brakmo@fb.com>
Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/tcp.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index 24ec80483805..4775a1bba7f7 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -765,11 +765,16 @@ struct tcp_skb_cb { unused:6; __u32 ack_seq; /* Sequence number ACK'd */ union { - struct inet_skb_parm h4; + struct { + /* There is space for up to 20 bytes */ + } tx; /* only used for outgoing skbs */ + union { + struct inet_skb_parm h4; #if IS_ENABLED(CONFIG_IPV6) - struct inet6_skb_parm h6; + struct inet6_skb_parm h6; #endif - } header; /* For incoming frames */ + } header; /* For incoming skbs */ + }; }; #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) |