feat(wireguard): WIREGUARD_GSO option to disable TUN vnet hdr batching (#3424)

This commit is contained in:
Tyler MacDonald
2026-08-04 21:31:22 -04:00
committed by GitHub
parent 297d6480d0
commit 0186f2ff4a
20 changed files with 260 additions and 11 deletions
+22 -1
View File
@@ -1,6 +1,7 @@
package wireguard
import (
"errors"
"testing"
"go.uber.org/mock/gomock"
@@ -13,7 +14,7 @@ func Test_makeDeviceLogger(t *testing.T) {
logger := NewMockLogger(ctrl)
deviceLogger := makeDeviceLogger(logger)
deviceLogger := makeDeviceLogger(logger, false)
logger.EXPECT().Debugf("test %d", 1)
deviceLogger.Verbosef("test %d", 1)
@@ -21,3 +22,23 @@ func Test_makeDeviceLogger(t *testing.T) {
logger.EXPECT().Errorf("test %d", 2)
deviceLogger.Errorf("test %d", 2)
}
func Test_makeDeviceLogger_gso_suggestion(t *testing.T) {
t.Parallel()
ctrl := gomock.NewController(t)
logger := NewMockLogger(ctrl)
deviceLogger := makeDeviceLogger(logger, true)
const format = "Failed to write packets to TUN device: %v"
writeError := errors.New("write /dev/net/tun: invalid argument")
logger.EXPECT().Errorf(format, writeError).Times(2)
logger.EXPECT().Warn("The kernel seems to reject GRO-coalesced writes to " +
"the TUN device; consider setting WIREGUARD_GSO=off").Times(1)
deviceLogger.Errorf(format, writeError)
// The suggestion is only logged once for repeated errors.
deviceLogger.Errorf(format, writeError)
}