diff options
author | Eric Dumazet <edumazet@google.com> | 2013-10-09 18:21:29 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-10-10 00:08:07 -0400 |
commit | 634fb979e8f3a70f04c1f2f519d0cd1142eb5c1a (patch) | |
tree | ffd7f7ef4a313c94859180d1bc20f2713a11f987 /include/net/inet_sock.h | |
parent | 8a29111c7ca68d928dfab58636f3f6acf0ac04f7 (diff) |
inet: includes a sock_common in request_sock
TCP listener refactoring, part 5 :
We want to be able to insert request sockets (SYN_RECV) into main
ehash table instead of the per listener hash table to allow RCU
lookups and remove listener lock contention.
This patch includes the needed struct sock_common in front
of struct request_sock
This means there is no more inet6_request_sock IPv6 specific
structure.
Following inet_request_sock fields were renamed as they became
macros to reference fields from struct sock_common.
Prefix ir_ was chosen to avoid name collisions.
loc_port -> ir_loc_port
loc_addr -> ir_loc_addr
rmt_addr -> ir_rmt_addr
rmt_port -> ir_rmt_port
iif -> ir_iif
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/inet_sock.h')
-rw-r--r-- | include/net/inet_sock.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index 6d9a7e6eb5a4..f91204442efa 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h | |||
@@ -70,13 +70,14 @@ struct ip_options_data { | |||
70 | 70 | ||
71 | struct inet_request_sock { | 71 | struct inet_request_sock { |
72 | struct request_sock req; | 72 | struct request_sock req; |
73 | #if IS_ENABLED(CONFIG_IPV6) | 73 | #define ir_loc_addr req.__req_common.skc_rcv_saddr |
74 | u16 inet6_rsk_offset; | 74 | #define ir_rmt_addr req.__req_common.skc_daddr |
75 | #endif | 75 | #define ir_loc_port req.__req_common.skc_num |
76 | __be16 loc_port; | 76 | #define ir_rmt_port req.__req_common.skc_dport |
77 | __be32 loc_addr; | 77 | #define ir_v6_rmt_addr req.__req_common.skc_v6_daddr |
78 | __be32 rmt_addr; | 78 | #define ir_v6_loc_addr req.__req_common.skc_v6_rcv_saddr |
79 | __be16 rmt_port; | 79 | #define ir_iif req.__req_common.skc_bound_dev_if |
80 | |||
80 | kmemcheck_bitfield_begin(flags); | 81 | kmemcheck_bitfield_begin(flags); |
81 | u16 snd_wscale : 4, | 82 | u16 snd_wscale : 4, |
82 | rcv_wscale : 4, | 83 | rcv_wscale : 4, |
@@ -88,6 +89,7 @@ struct inet_request_sock { | |||
88 | no_srccheck: 1; | 89 | no_srccheck: 1; |
89 | kmemcheck_bitfield_end(flags); | 90 | kmemcheck_bitfield_end(flags); |
90 | struct ip_options_rcu *opt; | 91 | struct ip_options_rcu *opt; |
92 | struct sk_buff *pktopts; | ||
91 | }; | 93 | }; |
92 | 94 | ||
93 | static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk) | 95 | static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk) |