inet: rename some inet_sock fields
In order to have better cache layouts of struct sock (separate zones for rx/tx paths), we need this preliminary patch. Goal is to transfert fields used at lookup time in the first read-mostly cache line (inside struct sock_common) and move sk_refcnt to a separate cache line (only written by rx path) This patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr, sport and id fields. This allows a future patch to define these fields as macros, like sk_refcnt, without name clashes. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
988ade6b8e
commit
c720c7e838
@@ -174,12 +174,12 @@ static int inet_autobind(struct sock *sk)
|
||||
/* We may need to bind the socket. */
|
||||
lock_sock(sk);
|
||||
inet = inet_sk(sk);
|
||||
if (!inet->num) {
|
||||
if (!inet->inet_num) {
|
||||
if (sk->sk_prot->get_port(sk, 0)) {
|
||||
release_sock(sk);
|
||||
return -EAGAIN;
|
||||
}
|
||||
inet->sport = htons(inet->num);
|
||||
inet->inet_sport = htons(inet->inet_num);
|
||||
}
|
||||
release_sock(sk);
|
||||
return 0;
|
||||
@@ -354,7 +354,7 @@ lookup_protocol:
|
||||
inet->is_icsk = (INET_PROTOSW_ICSK & answer_flags) != 0;
|
||||
|
||||
if (SOCK_RAW == sock->type) {
|
||||
inet->num = protocol;
|
||||
inet->inet_num = protocol;
|
||||
if (IPPROTO_RAW == protocol)
|
||||
inet->hdrincl = 1;
|
||||
}
|
||||
@@ -364,7 +364,7 @@ lookup_protocol:
|
||||
else
|
||||
inet->pmtudisc = IP_PMTUDISC_WANT;
|
||||
|
||||
inet->id = 0;
|
||||
inet->inet_id = 0;
|
||||
|
||||
sock_init_data(sock, sk);
|
||||
|
||||
@@ -381,13 +381,13 @@ lookup_protocol:
|
||||
|
||||
sk_refcnt_debug_inc(sk);
|
||||
|
||||
if (inet->num) {
|
||||
if (inet->inet_num) {
|
||||
/* It assumes that any protocol which allows
|
||||
* the user to assign a number at socket
|
||||
* creation time automatically
|
||||
* shares.
|
||||
*/
|
||||
inet->sport = htons(inet->num);
|
||||
inet->inet_sport = htons(inet->inet_num);
|
||||
/* Add to protocol hash chains. */
|
||||
sk->sk_prot->hash(sk);
|
||||
}
|
||||
@@ -494,27 +494,27 @@ int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
|
||||
|
||||
/* Check these errors (active socket, double bind). */
|
||||
err = -EINVAL;
|
||||
if (sk->sk_state != TCP_CLOSE || inet->num)
|
||||
if (sk->sk_state != TCP_CLOSE || inet->inet_num)
|
||||
goto out_release_sock;
|
||||
|
||||
inet->rcv_saddr = inet->saddr = addr->sin_addr.s_addr;
|
||||
inet->inet_rcv_saddr = inet->inet_saddr = addr->sin_addr.s_addr;
|
||||
if (chk_addr_ret == RTN_MULTICAST || chk_addr_ret == RTN_BROADCAST)
|
||||
inet->saddr = 0; /* Use device */
|
||||
inet->inet_saddr = 0; /* Use device */
|
||||
|
||||
/* Make sure we are allowed to bind here. */
|
||||
if (sk->sk_prot->get_port(sk, snum)) {
|
||||
inet->saddr = inet->rcv_saddr = 0;
|
||||
inet->inet_saddr = inet->inet_rcv_saddr = 0;
|
||||
err = -EADDRINUSE;
|
||||
goto out_release_sock;
|
||||
}
|
||||
|
||||
if (inet->rcv_saddr)
|
||||
if (inet->inet_rcv_saddr)
|
||||
sk->sk_userlocks |= SOCK_BINDADDR_LOCK;
|
||||
if (snum)
|
||||
sk->sk_userlocks |= SOCK_BINDPORT_LOCK;
|
||||
inet->sport = htons(inet->num);
|
||||
inet->daddr = 0;
|
||||
inet->dport = 0;
|
||||
inet->inet_sport = htons(inet->inet_num);
|
||||
inet->inet_daddr = 0;
|
||||
inet->inet_dport = 0;
|
||||
sk_dst_reset(sk);
|
||||
err = 0;
|
||||
out_release_sock:
|
||||
@@ -532,7 +532,7 @@ int inet_dgram_connect(struct socket *sock, struct sockaddr * uaddr,
|
||||
if (uaddr->sa_family == AF_UNSPEC)
|
||||
return sk->sk_prot->disconnect(sk, flags);
|
||||
|
||||
if (!inet_sk(sk)->num && inet_autobind(sk))
|
||||
if (!inet_sk(sk)->inet_num && inet_autobind(sk))
|
||||
return -EAGAIN;
|
||||
return sk->sk_prot->connect(sk, (struct sockaddr *)uaddr, addr_len);
|
||||
}
|
||||
@@ -689,17 +689,17 @@ int inet_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||
|
||||
sin->sin_family = AF_INET;
|
||||
if (peer) {
|
||||
if (!inet->dport ||
|
||||
if (!inet->inet_dport ||
|
||||
(((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_SYN_SENT)) &&
|
||||
peer == 1))
|
||||
return -ENOTCONN;
|
||||
sin->sin_port = inet->dport;
|
||||
sin->sin_addr.s_addr = inet->daddr;
|
||||
sin->sin_port = inet->inet_dport;
|
||||
sin->sin_addr.s_addr = inet->inet_daddr;
|
||||
} else {
|
||||
__be32 addr = inet->rcv_saddr;
|
||||
__be32 addr = inet->inet_rcv_saddr;
|
||||
if (!addr)
|
||||
addr = inet->saddr;
|
||||
sin->sin_port = inet->sport;
|
||||
addr = inet->inet_saddr;
|
||||
sin->sin_port = inet->inet_sport;
|
||||
sin->sin_addr.s_addr = addr;
|
||||
}
|
||||
memset(sin->sin_zero, 0, sizeof(sin->sin_zero));
|
||||
@@ -714,7 +714,7 @@ int inet_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
/* We may need to bind the socket. */
|
||||
if (!inet_sk(sk)->num && inet_autobind(sk))
|
||||
if (!inet_sk(sk)->inet_num && inet_autobind(sk))
|
||||
return -EAGAIN;
|
||||
|
||||
return sk->sk_prot->sendmsg(iocb, sk, msg, size);
|
||||
@@ -728,7 +728,7 @@ static ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
|
||||
struct sock *sk = sock->sk;
|
||||
|
||||
/* We may need to bind the socket. */
|
||||
if (!inet_sk(sk)->num && inet_autobind(sk))
|
||||
if (!inet_sk(sk)->inet_num && inet_autobind(sk))
|
||||
return -EAGAIN;
|
||||
|
||||
if (sk->sk_prot->sendpage)
|
||||
@@ -1059,9 +1059,9 @@ static int inet_sk_reselect_saddr(struct sock *sk)
|
||||
struct inet_sock *inet = inet_sk(sk);
|
||||
int err;
|
||||
struct rtable *rt;
|
||||
__be32 old_saddr = inet->saddr;
|
||||
__be32 old_saddr = inet->inet_saddr;
|
||||
__be32 new_saddr;
|
||||
__be32 daddr = inet->daddr;
|
||||
__be32 daddr = inet->inet_daddr;
|
||||
|
||||
if (inet->opt && inet->opt->srr)
|
||||
daddr = inet->opt->faddr;
|
||||
@@ -1071,7 +1071,7 @@ static int inet_sk_reselect_saddr(struct sock *sk)
|
||||
RT_CONN_FLAGS(sk),
|
||||
sk->sk_bound_dev_if,
|
||||
sk->sk_protocol,
|
||||
inet->sport, inet->dport, sk, 0);
|
||||
inet->inet_sport, inet->inet_dport, sk, 0);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@@ -1087,7 +1087,7 @@ static int inet_sk_reselect_saddr(struct sock *sk)
|
||||
__func__, &old_saddr, &new_saddr);
|
||||
}
|
||||
|
||||
inet->saddr = inet->rcv_saddr = new_saddr;
|
||||
inet->inet_saddr = inet->inet_rcv_saddr = new_saddr;
|
||||
|
||||
/*
|
||||
* XXX The only one ugly spot where we need to
|
||||
@@ -1113,7 +1113,7 @@ int inet_sk_rebuild_header(struct sock *sk)
|
||||
return 0;
|
||||
|
||||
/* Reroute. */
|
||||
daddr = inet->daddr;
|
||||
daddr = inet->inet_daddr;
|
||||
if (inet->opt && inet->opt->srr)
|
||||
daddr = inet->opt->faddr;
|
||||
{
|
||||
@@ -1123,7 +1123,7 @@ int inet_sk_rebuild_header(struct sock *sk)
|
||||
.nl_u = {
|
||||
.ip4_u = {
|
||||
.daddr = daddr,
|
||||
.saddr = inet->saddr,
|
||||
.saddr = inet->inet_saddr,
|
||||
.tos = RT_CONN_FLAGS(sk),
|
||||
},
|
||||
},
|
||||
@@ -1131,8 +1131,8 @@ int inet_sk_rebuild_header(struct sock *sk)
|
||||
.flags = inet_sk_flowi_flags(sk),
|
||||
.uli_u = {
|
||||
.ports = {
|
||||
.sport = inet->sport,
|
||||
.dport = inet->dport,
|
||||
.sport = inet->inet_sport,
|
||||
.dport = inet->inet_dport,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user