tailscale/wgengine/magicsock
James Tucker 25b8ed8d9e control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO
Add four control-plane node attributes that let us disable UDP GSO/GRO
on the magicsock UDP socket and UDP/TCP GRO on the Tailscale TUN
device.

These complement the pre-existing TS_DEBUG_DISABLE_UDP_{GRO,GSO} and
TS_TUN_DISABLE_{UDP,TCP}_GRO envknobs. They exist so we can mitigate
upstream Linux kernel regressions on a deployed fleet without
requiring a client release, after two incidents (#13041, #19777) where
buggy kernel patches landed upstream and the fix took an excessively
long time to reach downstream distros.

Knob changes are reacted to in setNetworkMapInternal / SetNetworkMap via
a comparison against a cached "last applied" value and only an actual
transition triggers work: magicsock Rebind()+ReSTUN for UDP,
ApplyGROKnobs for TUN. The TUN side is gated by buildfeatures.HasGRO and
is one-way (wireguard-go GRO disablement is sticky); re-enabling
requires a client restart.

Updates #13041
Updates #19777

Change-Id: I802993070afa659cc06809bb0bfbb7f8a0cdb273
Signed-off-by: James Tucker <james@tailscale.com>
2026-05-27 17:10:14 -07:00
..
blockforever_conn.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
debughttp.go wgengine/magicsock: replace peers slice with peersByID map; add Upsert/RemovePeer 2026-04-22 15:07:11 -07:00
debugknobs_stubs.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
debugknobs.go wgengine/magicsock: make debugNeverDirectUDP influence remote peer decisions 2026-01-30 13:16:46 -08:00
derp_test.go wgengine/magicsock: fix data race in TestSetDERPMapDoReStun 2026-05-21 08:51:50 -07:00
derp.go wgengine/magicsock: restore SetDERPMap signature, add SetDERPMapWithoutReSTUN 2026-04-29 12:46:15 -07:00
disco_atomic_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
disco_atomic.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
discopingpurpose_string.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
endpoint_default.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
endpoint_stub.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
endpoint_test.go magicsock: invalidate endpoint on trust timeout (#19415) 2026-04-15 19:22:07 -07:00
endpoint_tracker_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
endpoint_tracker.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
endpoint.go wgengine/{,magicsock},tstest/natlab/vmtest: send disco on cached netmap (#19878) 2026-05-27 13:05:12 -04:00
magicsock_default.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
magicsock_linux_test.go cmd/vet: add subtestnames analyzer; fix all existing violations 2026-04-05 15:52:51 -07:00
magicsock_linux.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
magicsock_notplan9.go ipn/localapi: stop logging "broken pipe" errors (#18487) 2026-01-26 16:41:03 -08:00
magicsock_plan9.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
magicsock_test.go control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO 2026-05-27 17:10:14 -07:00
magicsock.go control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO 2026-05-27 17:10:14 -07:00
peermap_test.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermap.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermtu_darwin.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermtu_linux.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermtu_stubs.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermtu_unix.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
peermtu.go all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
rebinding_conn.go control/controlknobs,net/{batching,tstun},wgengine: add nodecaps to disable UDP & TUN GRO/GSO 2026-05-27 17:10:14 -07:00
relaymanager_test.go cmd/vet: add subtestnames analyzer; fix all existing violations 2026-04-05 15:52:51 -07:00
relaymanager.go wgengine/magicsock: replace peers slice with peersByID map; add Upsert/RemovePeer 2026-04-22 15:07:11 -07:00