summaryrefslogtreecommitdiffhomepage
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/batching/conn_linux.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/net/batching/conn_linux.go b/net/batching/conn_linux.go
index bd7ac25be..2bb002995 100644
--- a/net/batching/conn_linux.go
+++ b/net/batching/conn_linux.go
@@ -20,6 +20,7 @@ import (
"golang.org/x/net/ipv4"
"golang.org/x/net/ipv6"
"golang.org/x/sys/unix"
+ "tailscale.com/envknob"
"tailscale.com/hostinfo"
"tailscale.com/net/neterror"
"tailscale.com/net/packet"
@@ -328,10 +329,15 @@ func tryEnableUDPOffload(pconn nettype.PacketConn) (hasTX bool, hasRX bool) {
return
}
err = rc.Control(func(fd uintptr) {
- _, errSyscall := syscall.GetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_SEGMENT)
- hasTX = errSyscall == nil
- errSyscall = syscall.SetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_GRO, 1)
- hasRX = errSyscall == nil
+ var errSyscall error
+ if !envknob.Bool("TS_DEBUG_DISABLE_UDP_GSO") {
+ _, errSyscall = syscall.GetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_SEGMENT)
+ hasTX = errSyscall == nil
+ }
+ if !envknob.Bool("TS_DEBUG_DISABLE_UDP_GRO") {
+ errSyscall = syscall.SetsockoptInt(int(fd), unix.IPPROTO_UDP, unix.UDP_GRO, 1)
+ hasRX = errSyscall == nil
+ }
})
if err != nil {
return false, false