301dbc56d0
The quic and wt (WebTransport) listeners wrap the raw UDP socket with net.PacketConn metrics/stats/admission/limiter wrappers before handing it to quic-go. WrapPacketConn returns a plain net.PacketConn, which hides the underlying *net.UDPConn. quic-go probes the conn for OOBCapablePacketConn (SyscallConn, SetReadBuffer, ReadMsgUDP, WriteMsgUDP); behind the wrapper that probe fails, so quic-go disables its kernel offloads and cannot size its receive buffer. Switch the non-cipher path of both listeners to WrapUDPConn variants, which forward SyscallConn/SetReadBuffer/ReadMsgUDP/WriteMsgUDP down to the underlying *net.UDPConn, so quic-go sees an OOBCapablePacketConn and keeps GSO/GRO + buffer sizing. The same metrics/stats/admission/ limiting still apply. The quic listener's cipher path keeps the net.PacketConn wrappers, since CipherPacketConn is not OOB-capable. +48% throughput (1.80 → 2.69 Gbit/s single-stream, loopback iperf3). The quic-go receive-buffer warning is gone.