Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(udp): handle multiple datagrams on GRO #1708

Merged
merged 4 commits into from
Mar 5, 2024

Commits on Mar 3, 2024

  1. Test multi packet GRO read

    mxinden committed Mar 3, 2024
    Configuration menu
    Copy the full SHA
    bc1659a View commit details
    Browse the repository at this point in the history
  2. fix(udp): handle multiple datagrams through gro

    Previously `Socket::recv` would at most return a single `Datagram` (i.e. `->
    Result<Option<Datagram>, io::Error>`). When supported by the OS, the underlying
    `quinn-udp` can use both recvMmsg and GRO, each with the ability to return one
    or more datagrams.
    
    As of today, `neqo_common::udp` does not make use of recvmmsg, i.e. it only
    provides a single `IoSliceMut` to write into. That said, that single
    `IoSliceMut` might contain multiple `Datagram`s through GRO. Previously this
    would have been provided as a single `Datagram` to the caller of `Socket::recv`.
    
    This commit makes sure to handle the case where many `Datagram`s are retrieved
    via GRO (see `meta.stride` flag). It updates `neqo_common::udp::Socket::recv`
    and `neqo-server` and `neqo-client` accordingly.
    mxinden committed Mar 3, 2024
    Configuration menu
    Copy the full SHA
    5db3ca8 View commit details
    Browse the repository at this point in the history
  3. fix: support single gso sendmmsg to result in multiple gro recvmmsg

    E.g. the case on CI on windows runner.
    mxinden committed Mar 3, 2024
    Configuration menu
    Copy the full SHA
    2249abd View commit details
    Browse the repository at this point in the history
  4. Reduce diff in client

    mxinden committed Mar 3, 2024
    Configuration menu
    Copy the full SHA
    bc0ee8f View commit details
    Browse the repository at this point in the history