quinn-rs / quinn

Async-friendly QUIC implementation in Rust
Apache License 2.0
3.76k stars 380 forks source link

udp: disable GSO on EINVAL #1637

Closed Ralith closed 1 year ago

Ralith commented 1 year ago

Linux 5.15 was observed to emit an EINVAL when attempting to transmit UDP with GSO over IPv6 on a virtio net interface, which apparently only supports UDP GSO on IPv6 as of Linux 6.2. 6.1 was also observed to emit EINVAL, though only after EIO. In both cases, EINVAL was suppressed by disabling GSO.

Companion change to #1636. I don't fully understand why Linux is returning EINVAL in these cases, so I'm not 100% certain this is the correct fix, but at the very least it won't hurt.