diff options
| author | David Howells <[email protected]> | 2025-02-12 11:21:24 +0000 |
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2025-02-13 18:00:12 +0000 |
| commit | 540cda75884a6ba4c289980c84392261b1f61a9c (patch) | |
| tree | 76c56bce8738059d57a1036fb5584ac33f49c5d8 /net | |
| parent | Merge tag 'for-net-2025-02-13' of git://git.kernel.org/pub/scm/linux/kernel/g... (diff) | |
| download | kernel-540cda75884a6ba4c289980c84392261b1f61a9c.tar.gz kernel-540cda75884a6ba4c289980c84392261b1f61a9c.zip | |
rxrpc: Fix ipv6 path MTU discovery
rxrpc path MTU discovery currently only makes use of ICMPv4, but not
ICMPv6, which means that pmtud for IPv6 doesn't work correctly. Fix it to
check for ICMPv6 messages also.
Fixes: eeaedc5449d9 ("rxrpc: Implement path-MTU probing using padded PING ACKs (RFC8899)")
Signed-off-by: David Howells <[email protected]>
cc: Marc Dionne <[email protected]>
cc: Simon Horman <[email protected]>
cc: [email protected]
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'net')
| -rw-r--r-- | net/rxrpc/peer_event.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/rxrpc/peer_event.c b/net/rxrpc/peer_event.c index e874c31fa901..bc283da9ee40 100644 --- a/net/rxrpc/peer_event.c +++ b/net/rxrpc/peer_event.c @@ -169,6 +169,13 @@ void rxrpc_input_error(struct rxrpc_local *local, struct sk_buff *skb) goto out; } + if ((serr->ee.ee_origin == SO_EE_ORIGIN_ICMP6 && + serr->ee.ee_type == ICMPV6_PKT_TOOBIG && + serr->ee.ee_code == 0)) { + rxrpc_adjust_mtu(peer, serr->ee.ee_info); + goto out; + } + rxrpc_store_error(peer, skb); out: rxrpc_put_peer(peer, rxrpc_peer_put_input_error); |
