mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 23:52:08 +02:00
tcp: inline __tcp_v4_send_check()
Inline __tcp_v4_send_check(), like __tcp_v6_send_check(). Move tcp_v4_send_check() to tcp_output.c close to its fast path caller (__tcp_transmit_skb()). Note __tcp_v4_send_check() is still out-of-line for tcp4_gso_segment() because it is called in an unlikely() section. $ scripts/bloat-o-meter -t vmlinux.0 vmlinux.1 add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-9 (-9) Function old new delta __tcp_v4_send_check 130 121 -9 Total: Before=25143100, After=25143091, chg -0.00% Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260223100729.3761597-2-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
f033335937
commit
bd5e5e1d41
|
|
@ -2382,7 +2382,15 @@ void tcp_gro_complete(struct sk_buff *skb);
|
|||
static inline void tcp_gro_complete(struct sk_buff *skb) { }
|
||||
#endif
|
||||
|
||||
void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr);
|
||||
static inline void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr,
|
||||
__be32 daddr)
|
||||
{
|
||||
struct tcphdr *th = tcp_hdr(skb);
|
||||
|
||||
th->check = ~tcp_v4_check(skb->len, saddr, daddr, 0);
|
||||
skb->csum_start = skb_transport_header(skb) - skb->head;
|
||||
skb->csum_offset = offsetof(struct tcphdr, check);
|
||||
}
|
||||
|
||||
static inline u32 tcp_notsent_lowat(const struct tcp_sock *tp)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -661,24 +661,6 @@ int tcp_v4_err(struct sk_buff *skb, u32 info)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr)
|
||||
{
|
||||
struct tcphdr *th = tcp_hdr(skb);
|
||||
|
||||
th->check = ~tcp_v4_check(skb->len, saddr, daddr, 0);
|
||||
skb->csum_start = skb_transport_header(skb) - skb->head;
|
||||
skb->csum_offset = offsetof(struct tcphdr, check);
|
||||
}
|
||||
|
||||
/* This routine computes an IPv4 TCP checksum. */
|
||||
void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
const struct inet_sock *inet = inet_sk(sk);
|
||||
|
||||
__tcp_v4_send_check(skb, inet->inet_saddr, inet->inet_daddr);
|
||||
}
|
||||
EXPORT_IPV6_MOD(tcp_v4_send_check);
|
||||
|
||||
#define REPLY_OPTIONS_LEN (MAX_TCP_OPTION_SPACE / sizeof(__be32))
|
||||
|
||||
static bool tcp_v4_ao_sign_reset(const struct sock *sk, struct sk_buff *skb,
|
||||
|
|
|
|||
|
|
@ -1496,7 +1496,15 @@ static void tcp_rate_skb_sent(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
INDIRECT_CALLABLE_DECLARE(int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
|
||||
INDIRECT_CALLABLE_DECLARE(int inet6_csk_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl));
|
||||
INDIRECT_CALLABLE_DECLARE(void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb));
|
||||
|
||||
/* This routine computes an IPv4 TCP checksum. */
|
||||
void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
const struct inet_sock *inet = inet_sk(sk);
|
||||
|
||||
__tcp_v4_send_check(skb, inet->inet_saddr, inet->inet_daddr);
|
||||
}
|
||||
EXPORT_IPV6_MOD(tcp_v4_send_check);
|
||||
|
||||
/* This routine actually transmits TCP packets queued in by
|
||||
* tcp_do_sendmsg(). This is used by both the initial
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user