linux/include
Jiayuan Chen 2640e64195 net: advertise TCP MSS from the configured MTU, not the learned PMTU
The MSS a host puts in its SYN tells the peer how big a segment it may
send us. Right now we can shrink it with a PMTU we learned on our own
send path, which is the wrong direction entirely.

On asymmetric paths this bites - think DSR load balancers, where the
request side goes through a smaller-MTU overlay. We learn a small PMTU
going out, then advertise a small MSS, and the peer stays capped for the
whole connection even though its path back to us is wide. MSS only shows
up in the SYN and never grows back.

On symmetric paths we lose nothing by dropping it either: the peer runs
its own PMTU discovery and usually already knows the real path MTU.

So work out the advertised MSS from the configured route or device MTU
and ignore the learned PMTU. Our send side is unchanged, still clamped by
tcp_current_mss(). Add ip_dst_mtu_configured()/ip6_dst_mtu_configured()
and use them from the two default_advmss() paths.

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Fixes: 164a5e7ad5 ("ipv4: ipv4_default_advmss() should use route mtu")
Cc: stable@vger.kernel.org
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Link: https://patch.msgid.link/20260815070413.294559-1-jiayuan.chen@linux.dev
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-08-20 12:14:23 -07:00
..
acpi Driver core changes for 7.3-rc1 2026-08-19 10:42:18 -07:00
asm-generic audit/stable-7.3 PR 20260814 2026-08-19 16:21:32 -07:00
clocksource clocksource/drivers/samsung_pwm: Switch to raw_spinlock_t type 2026-08-13 18:13:15 +02:00
crypto This update includes the following changes: 2026-08-19 17:25:42 -07:00
cxl cxl: Support dpa without a mailbox 2026-06-29 10:55:47 -07:00
drm Revert "drm/sched: Remove FIFO and RR and simplify to a single run queue" 2026-08-11 17:34:10 +01:00
dt-bindings sound updates for 7.3-rc1 2026-08-19 10:04:59 -07:00
hyperv mshv: fix hv_input_get_system_property struct 2026-07-22 21:58:21 +00:00
keys
kunit gpio updates for v7.3-rc1 2026-08-19 09:10:07 -07:00
kvm KVM: arm64: vgic: Fix race between LPI release and re-registration 2026-07-23 09:56:57 +01:00
linux Networking changes for 7.3. 2026-08-20 08:16:04 -07:00
math-emu
media media: rppx1: Add framework to support Dreamchip RPPX1 ISP 2026-07-30 20:51:35 +03:00
memory
misc
net net: advertise TCP MSS from the configured MTU, not the learned PMTU 2026-08-20 12:14:23 -07:00
pcmcia Replace <linux/mod_devicetable.h> by more specific <linux/device-id/*.h> (headers) 2026-07-03 07:38:16 +02:00
ras
rdma RDMA v7.2 merge window 2026-06-18 08:16:21 -07:00
rv rv: Add KUnit tests for some LTL monitors 2026-07-31 16:27:46 +02:00
scsi ata changes for 7.3 2026-08-19 12:31:50 -07:00
soc regulator: Updates for v7.3 2026-08-19 09:36:58 -07:00
sound ASoC: Updates for v7.3 2026-08-18 08:35:39 +02:00
target
trace Networking changes for 7.3. 2026-08-20 08:16:04 -07:00
uapi Networking changes for 7.3. 2026-08-20 08:16:04 -07:00
ufs
vdso vDSO: Make clockmode constants available without CONFIG_GENERIC_GETTIMEOFDAY 2026-08-10 16:25:21 +02:00
video
xen xen: Drop CONFIG_XEN_AUTO_XLATE 2026-08-06 13:18:32 +02:00
Kbuild