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): do not enable URO on Windows on ARM #2071

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Nov 28, 2024

On Windows on ARM with Windows Subsystem for Linux (WSL) WSA_RECVMSG does not return the segment size of coalesced UDP datagrams. See #2041 for details.

While lacking a fix for the root cause, don't enable URO, i.e. don't coalesce UDP datagrams, on Windows on ARM.

@mxinden mxinden force-pushed the no-uro-on-arm branch 4 times, most recently from 70ffc68 to c958ab5 Compare November 28, 2024 12:22
@mxinden mxinden marked this pull request as ready for review November 28, 2024 12:27
@mxinden
Copy link
Collaborator Author

mxinden commented Nov 28, 2024

Given your involvement on #2041, @thomaseizinger @stormshield-damiend do you have thoughts?

@valenting since you had the idea of using IsWow64Process2 ( 🙏 ), want to give this a review?

Copy link

@valenting valenting left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm glad this works!

quinn-udp/src/windows.rs Outdated Show resolved Hide resolved
quinn-udp/src/windows.rs Outdated Show resolved Hide resolved
quinn-udp/src/windows.rs Outdated Show resolved Hide resolved
@stormshield-damiend
Copy link
Contributor

Given your involvement on #2041, @thomaseizinger @stormshield-damiend do you have thoughts?

@valenting since you had the idea of using IsWow64Process2 ( 🙏 ), want to give this a review?

i am ok with this approach, this prevent issue for people that uses Windows ARM + WSL and gives us some time to understand the root cause.

On Windows on ARM with Windows Subsystem for Linux (WSL) `WSA_RECVMSG` does not
return the segment size of coalesced UDP datagrams. See
quinn-rs#2041 for details.

While lacking a fix for the root cause, don't enable URO, i.e. don't coalesce
UDP datagrams on Windows on ARM.
Copy link
Contributor

@thomaseizinger thomaseizinger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll have to double check but I think the user that ran into this with Firezone was on x64.

Happy for this to merge regardless.

We could also consider adding a config option, defaulting to disabled and with a warning that it may not work on all systems.

I think I'd rather disable GRO completely for Firezone on Windows until we get to the bottom of this. Or add some kind of compatibility switch.

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.

5 participants