diff options
| author | Jakub Kicinski <kuba@kernel.org> | 2026-02-10 20:57:52 -0800 |
|---|---|---|
| committer | Jakub Kicinski <kuba@kernel.org> | 2026-02-10 20:57:53 -0800 |
| commit | 70f1fbee85a4ee1c4d9278dff30b51f16e1d99db (patch) | |
| tree | 8e7f893b02e7c9d44c143eae2c304a7a84e65c7e /include | |
| parent | 792aaea994537daa78f31a86c948ccbefa8f4706 (diff) | |
| parent | 97d7ae6e14c80ec0c2558d24d818212590f2d64f (diff) | |
Merge branch 'ipv6-tcp-no-longer-rebuild-fl6-at-each-transmit'
Eric Dumazet says:
====================
ipv6: tcp: no longer rebuild fl6 at each transmit
TCP v6 spends a good amount of time rebuilding a fresh fl6 at each
transmit in inet6_csk_xmit()/inet6_csk_route_socket().
TCP v4 caches the information in inet->cork.fl.u.ip4 instead.
This series changes TCP v6 to behave the same, saving cpu cycles
and reducing cache line misses and stack use.
====================
Link: https://patch.msgid.link/20260206173426.1638518-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/ipv6.h | 4 | ||||
| -rw-r--r-- | include/net/inet6_connection_sock.h | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index bdbd63f9a85e..443053a76dcf 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h @@ -230,6 +230,10 @@ struct ipv6_fl_socklist; struct ipv6_pinfo { /* Used in tx path (inet6_csk_route_socket(), ip6_xmit()) */ struct in6_addr saddr; + union { + struct in6_addr daddr; + struct in6_addr final; + }; __be32 flow_label; u32 dst_cookie; struct ipv6_txoptions __rcu *opt; diff --git a/include/net/inet6_connection_sock.h b/include/net/inet6_connection_sock.h index 745891d2e113..ece8dabd209a 100644 --- a/include/net/inet6_connection_sock.h +++ b/include/net/inet6_connection_sock.h @@ -18,7 +18,9 @@ struct sk_buff; struct sock; struct sockaddr; -struct dst_entry *inet6_csk_route_req(const struct sock *sk, struct flowi6 *fl6, +struct dst_entry *inet6_csk_route_req(const struct sock *sk, + struct dst_entry *dst, + struct flowi6 *fl6, const struct request_sock *req, u8 proto); int inet6_csk_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl); |
