mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-29 18:11:20 +00:00
[SOCK]: Introduce sk_setup_caps
From tcp_v4_setup_caps, that always is preceded by a call to __sk_dst_set, so coalesce this sequence into sk_setup_caps, removing one call to a TCP function in the IP layer. Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
614c6cb4f2
commit
6cbb0df788
5 changed files with 17 additions and 22 deletions
|
@ -1025,6 +1025,16 @@ sk_dst_check(struct sock *sk, u32 cookie)
|
||||||
return dst;
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void sk_setup_caps(struct sock *sk, struct dst_entry *dst)
|
||||||
|
{
|
||||||
|
__sk_dst_set(sk, dst);
|
||||||
|
sk->sk_route_caps = dst->dev->features;
|
||||||
|
if (sk->sk_route_caps & NETIF_F_TSO) {
|
||||||
|
if (sock_flag(sk, SOCK_NO_LARGESEND) || dst->header_len)
|
||||||
|
sk->sk_route_caps &= ~NETIF_F_TSO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline void sk_charge_skb(struct sock *sk, struct sk_buff *skb)
|
static inline void sk_charge_skb(struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
sk->sk_wmem_queued += skb->truesize;
|
sk->sk_wmem_queued += skb->truesize;
|
||||||
|
|
|
@ -1658,15 +1658,6 @@ static inline int tcp_paws_check(const struct tcp_options_received *rx_opt, int
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void tcp_v4_setup_caps(struct sock *sk, struct dst_entry *dst)
|
|
||||||
{
|
|
||||||
sk->sk_route_caps = dst->dev->features;
|
|
||||||
if (sk->sk_route_caps & NETIF_F_TSO) {
|
|
||||||
if (sock_flag(sk, SOCK_NO_LARGESEND) || dst->header_len)
|
|
||||||
sk->sk_route_caps &= ~NETIF_F_TSO;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define TCP_CHECK_TIMER(sk) do { } while (0)
|
#define TCP_CHECK_TIMER(sk) do { } while (0)
|
||||||
|
|
||||||
static inline int tcp_use_frto(const struct sock *sk)
|
static inline int tcp_use_frto(const struct sock *sk)
|
||||||
|
|
|
@ -69,13 +69,10 @@
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
#include <net/protocol.h>
|
#include <net/protocol.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <net/tcp.h>
|
|
||||||
#include <net/udp.h>
|
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/arp.h>
|
#include <net/arp.h>
|
||||||
#include <net/icmp.h>
|
#include <net/icmp.h>
|
||||||
#include <net/raw.h>
|
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
#include <net/inetpeer.h>
|
#include <net/inetpeer.h>
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
|
@ -84,6 +81,7 @@
|
||||||
#include <linux/netfilter_bridge.h>
|
#include <linux/netfilter_bridge.h>
|
||||||
#include <linux/mroute.h>
|
#include <linux/mroute.h>
|
||||||
#include <linux/netlink.h>
|
#include <linux/netlink.h>
|
||||||
|
#include <linux/tcp.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Shall we try to damage output packets if routing dev changes?
|
* Shall we try to damage output packets if routing dev changes?
|
||||||
|
@ -329,8 +327,7 @@ int ip_queue_xmit(struct sk_buff *skb, int ipfragok)
|
||||||
if (ip_route_output_flow(&rt, &fl, sk, 0))
|
if (ip_route_output_flow(&rt, &fl, sk, 0))
|
||||||
goto no_route;
|
goto no_route;
|
||||||
}
|
}
|
||||||
__sk_dst_set(sk, &rt->u.dst);
|
sk_setup_caps(sk, &rt->u.dst);
|
||||||
tcp_v4_setup_caps(sk, &rt->u.dst);
|
|
||||||
}
|
}
|
||||||
skb->dst = dst_clone(&rt->u.dst);
|
skb->dst = dst_clone(&rt->u.dst);
|
||||||
|
|
||||||
|
|
|
@ -837,8 +837,7 @@ int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||||
goto failure;
|
goto failure;
|
||||||
|
|
||||||
/* OK, now commit destination to socket. */
|
/* OK, now commit destination to socket. */
|
||||||
__sk_dst_set(sk, &rt->u.dst);
|
sk_setup_caps(sk, &rt->u.dst);
|
||||||
tcp_v4_setup_caps(sk, &rt->u.dst);
|
|
||||||
|
|
||||||
if (!tp->write_seq)
|
if (!tp->write_seq)
|
||||||
tp->write_seq = secure_tcp_sequence_number(inet->saddr,
|
tp->write_seq = secure_tcp_sequence_number(inet->saddr,
|
||||||
|
@ -1553,8 +1552,7 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
||||||
if (!newsk)
|
if (!newsk)
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
newsk->sk_dst_cache = dst;
|
sk_setup_caps(newsk, dst);
|
||||||
tcp_v4_setup_caps(newsk, dst);
|
|
||||||
|
|
||||||
newtp = tcp_sk(newsk);
|
newtp = tcp_sk(newsk);
|
||||||
newinet = inet_sk(newsk);
|
newinet = inet_sk(newsk);
|
||||||
|
@ -1855,8 +1853,7 @@ static int tcp_v4_reselect_saddr(struct sock *sk)
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
__sk_dst_set(sk, &rt->u.dst);
|
sk_setup_caps(sk, &rt->u.dst);
|
||||||
tcp_v4_setup_caps(sk, &rt->u.dst);
|
|
||||||
|
|
||||||
new_saddr = rt->rt_src;
|
new_saddr = rt->rt_src;
|
||||||
|
|
||||||
|
@ -1914,8 +1911,7 @@ int tcp_v4_rebuild_header(struct sock *sk)
|
||||||
err = ip_route_output_flow(&rt, &fl, sk, 0);
|
err = ip_route_output_flow(&rt, &fl, sk, 0);
|
||||||
}
|
}
|
||||||
if (!err) {
|
if (!err) {
|
||||||
__sk_dst_set(sk, &rt->u.dst);
|
sk_setup_caps(sk, &rt->u.dst);
|
||||||
tcp_v4_setup_caps(sk, &rt->u.dst);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -711,6 +711,7 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
|
||||||
bh_lock_sock(newsk);
|
bh_lock_sock(newsk);
|
||||||
|
|
||||||
rwlock_init(&newsk->sk_dst_lock);
|
rwlock_init(&newsk->sk_dst_lock);
|
||||||
|
newsk->sk_dst_cache = NULL;
|
||||||
atomic_set(&newsk->sk_rmem_alloc, 0);
|
atomic_set(&newsk->sk_rmem_alloc, 0);
|
||||||
skb_queue_head_init(&newsk->sk_receive_queue);
|
skb_queue_head_init(&newsk->sk_receive_queue);
|
||||||
atomic_set(&newsk->sk_wmem_alloc, 0);
|
atomic_set(&newsk->sk_wmem_alloc, 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue