msquic
msquic copied to clipboard
Use virtualized buffered sends when GSO fails
On linux, if the datapath doesn't support GSO, we fall back to 1 buffer sends. However, since we have sendmmsg, we can actually segment a large buffer at the user code level virtually, and send the buffer down with 1 call. This means we could act like we always support gso to the core layer, and then manually segment if not supported. In addition, sometimes GSO sends can fail even if reported as supported, so this would also be the fallback path if the initial send fails.