Skip to content

fix(unix): disable GSO after probing - #2584

Merged
djc merged 1 commit into
quinn-rs:mainfrom
thomaseizinger:fix/disable-global-gso
Mar 24, 2026
Merged

fix(unix): disable GSO after probing#2584
djc merged 1 commit into
quinn-rs:mainfrom
thomaseizinger:fix/disable-global-gso

Conversation

@thomaseizinger

Copy link
Copy Markdown
Collaborator

Resolves: #2575

After probing the given socket for GSO support, we need to disable this option
again to ensure we can selectively enable it via our cmsg codepaths.
@djc

djc commented Mar 24, 2026

Copy link
Copy Markdown
Member

@thomaseizinger thanks for all your contributions! Would you like to join as a quinn-udp maintainer?

@djc
djc added this pull request to the merge queue Mar 24, 2026
Merged via the queue into quinn-rs:main with commit 8acb578 Mar 24, 2026
19 checks passed
@mxinden

mxinden commented Mar 24, 2026

Copy link
Copy Markdown
Collaborator

Not that my opinion is worth much here, but I am in favor! :)

@thomaseizinger

Copy link
Copy Markdown
Collaborator Author

@thomaseizinger thanks for all your contributions! Would you like to join as a quinn-udp maintainer?

Yes that would be great!

dignifiedquire added a commit to n0-computer/noq that referenced this pull request Apr 22, 2026
Synced up to
quinn-rs/quinn@07ce61c

Closes #602 

### Commits applied in this PR

| upstream SHA | PR | subject | noq commit |
|---|---|---|---|
| 06f7f7d | [#2611](quinn-rs/quinn#2611) |
Take boxed connection ID generator factories | `167c709c7` |
| 404db1b | [#2495](quinn-rs/quinn#2495) |
Move the ref counts out | `e6772ea9f` (bundled) |
| 4b7a039 | [#2495](quinn-rs/quinn#2495) | Fix
the (pre-existing) rightward drift by inverting conditions | `e6772ea9f`
(bundled) |
| 475b55b | [#2495](quinn-rs/quinn#2495) |
Early return in `RecvStream::drop()` | `e6772ea9f` (bundled) |
| 803c814 | [#2541](quinn-rs/quinn#2541) |
Remove `RecvStream`s from `blocked_readers` on `stop` | `e6772ea9f`
(bundled) |
| 37625fe | [#2609](quinn-rs/quinn#2609) |
quinn: fix ref count logic for ConnectionRef and EndpointRef |
`e6772ea9f` (bundled) |
| 07ce61c | [#2612](quinn-rs/quinn#2612) |
Test cleanup of connections/endpoints when all references are dropped |
`e6772ea9f` (bundled) |
| 42de9dd | [#2469](quinn-rs/quinn#2469) |
refactor(quinn-udp): extract `decode_socket_addr` helper | `2e4effbe4` |
| 4742a70 | [#2469](quinn-rs/quinn#2469) |
refactor(quinn-udp): extract `ControlMetadata` helper | `6f5904350` |
| 2964782 | [#2472](quinn-rs/quinn#2472) |
refactor(quinn-udp): split fast&slow send/recv paths | `a17058e80` |
| 459c347 | [#2549](quinn-rs/quinn#2549) | add
metric for spurious congestion events | `0c78d6435` |
| f853e5e | [#2550](quinn-rs/quinn#2550) |
fix(perf): suppress table output in JSON mode | `0155ee3f6` |
| a0ec97a | [#2463](quinn-rs/quinn#2463) |
feat(quinn-udp): make Apple fast datapath opt-in | `412dc6684` |
| bb00530 | [#2560](quinn-rs/quinn#2560) |
docs: fix book build with mdbook 0.5.2 | `98cb0ad67` |
| ee8f946 | [#2565](quinn-rs/quinn#2565) |
fix: reuse existing socket for probing GRO/GSO support | `012530527` |
| 56bba7c | [#2565](quinn-rs/quinn#2565) |
refactor: remove `gro` module | `1174207fa` |
| 04ba57c | [#2565](quinn-rs/quinn#2565) |
fix: remove opportunistic GRO syscall | `35400c04e` |
| f0905db | [#2570](quinn-rs/quinn#2570) |
docs(quinn): improve `Connection::close_reason()` documentation |
`287fd2b63` |
| 0adcd20 | [#2573](quinn-rs/quinn#2573) |
docs: clarify that `Event::ConnectionLost` is not emitted on local close
| `7f34b4517` |
| b8e4d3b | [#2572](quinn-rs/quinn#2572) |
quinn: Make Endpoint::server dual-stack V6 by default | `461fe7f28` |
| 52c7ad1 | [#2583](quinn-rs/quinn#2583) |
refactor(quinn-udp): add `retry_if_interrupted` helper | `348b91383` |
| 8acb578 | [#2584](quinn-rs/quinn#2584) |
fix(unix): disable GSO after probing | `85c022d75` |
| e01f99e | [#2571](quinn-rs/quinn#2571) |
fix: Resolve `sendmsg_x`/`recvmsg_x` via `dlsym` | `881d6f151` |
| eff5572 | [#2579](quinn-rs/quinn#2579) |
proto: send STREAMS_BLOCKED when stream limit is hit | `e64abef10` |
| dc86400 | [#2556](quinn-rs/quinn#2556) |
Introduce `max_outgoing_bytes_per_second` option | `ffe5a5474` |
| bda24fd | [#2602](quinn-rs/quinn#2602) |
Upgrade rustls-platform-verifier to 0.7 | `e4570ea71` |

### Already present in noq 

| upstream SHA | PR | subject |
|---|---|---|
| 16e1aaa | [#2511](quinn-rs/quinn#2511) | Fix
unused_mut warning from Rust 1.93 |
| e96c279 | [#2533](quinn-rs/quinn#2533) |
quinn-proto: make cids_exhausted overflow-safe on 32-bit |
| 5db36fe | [#2534](quinn-rs/quinn#2534) |
docs: fix typo in EndpointStats |
| d305440 | [#2540](quinn-rs/quinn#2540) |
Upgrade fastbloom to 0.17 |
| 57b9d0a | [#2558](quinn-rs/quinn#2558) |
fuzz: add fuzzing target for parsing transport parameters |
| 655a8ad | [#2558](quinn-rs/quinn#2558) |
proto: avoid unwrapping varint decoding during parameters parsing |
| 7f7d9ea | [#2610](quinn-rs/quinn#2610) | Fix
clippy warnings from 1.95

### Skipped 

| upstream SHA | PR | subject | reason |
|---|---|---|---|
| e5b30f5 | [#2532](quinn-rs/quinn#2532) |
quinn-udp: make ECN best-effort on Windows (Wine/Proton) | noq already
has its own Wine/Proton ECN handling using `AtomicBool`
runtime-detection (noq PR
[#414](#414)); upstream's
static-bool approach would be redundant. |
| 70d083b | [#2540](quinn-rs/quinn#2540) |
Upgrade to qlog 0.16 | noq uses its own `n0-qlog` fork with a different
API. |
| d8db7a0 | [#2599](quinn-rs/quinn#2599) |
Upgrade to qlog 0.17 | Same reason as above. |
| 41bf1db | [#2564](quinn-rs/quinn#2564) |
fix: evaluate `max_gso_segments` for every socket on Windows | noq
already tracks `max_gso_segments` per-socket on an `AtomicUsize`. |
| 905e109 | [#2599](quinn-rs/quinn#2599) |
Bump MSRV to 1.82 (for qlog -> serde_with) | noq is already at MSRV
1.88. |
| 95863af | [#2602](quinn-rs/quinn#2602) |
Bump MSRV to 1.85 (for rustls-platform-verifier) | Same reason as above.
|

---------

Co-authored-by: Benjamin Saunders <ben.e.saunders@gmail.com>
Co-authored-by: Lars Eggert <lars@eggert.org>
Co-authored-by: Fabien SAVY <fabien.savy@stormshield.eu>
Co-authored-by: Zotyamester <szatmary.zoltan1222@gmail.com>
Co-authored-by: Dirkjan Ochtman <dirkjan@ochtman.nl>
Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: zphrs <z@zephiris.dev>
Co-authored-by: alexchenai <alexchenai@users.noreply.github.com>
Co-authored-by: Romain Roffé <r2@kyber.media>
Co-authored-by: cong-or <conchubhar.gannon@gmail.com>
Co-authored-by: Adolfo Ochagavía <github@adolfo.ochagavia.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Automatic GSO deactivation no longer works

4 participants