-
-
Notifications
You must be signed in to change notification settings - Fork 396
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
udp: add support for ECN, local addrs, GSO, and GRO on Windows #1701
Conversation
a0cb3c8
to
b6db5c5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for digging into this!
23e5c7a
to
c9b82fc
Compare
c9b82fc
to
3a458ca
Compare
630fe20
to
b9c2a1b
Compare
I do think this should not be just one commit. I'd suggest at least some commits like this:
Instead of depending on once_cell, could we use |
Ok i can do that
Something like
Sure i can do that
In one commit ?
Yes i can do that, but this is your and @Ralith calls. |
Sorry, I meant splitting along the lines of the split you have now (so in this commit, just splitting
If you think there are multiple stages that can each compile and pass tests, that might be nice?
Let's see what @Ralith thinks. |
ec6d153
to
3e81595
Compare
I have taken into account @djc remarks. I still need to add Safety comments where needed. |
3e81595
to
bc35c86
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking pretty good!
Our rule of thumb is 6 months, right? 1.70 is just about there, so I'm fine with it. Tokio's still on 1.63, but probably they just haven't had any need to change, and there's no sense letting that hold us back arbitrarily. It's also a really trivial update, though, so I'm also happy to judge it non-blocking and handle it personally in a followup if @stormshield-damiend wants to stay focused. |
bc35c86
to
94596fa
Compare
Fine with me, lets keep the |
4cdb5ce
to
ea232b1
Compare
Added GSO and GRO support while I was at it. I wasn't able to observe GRO working in loopback tests, but at least it isn't hurting. Bulk benchmark on Windows has ~doubled performance with GSO. |
26aa6c6
to
8880b0d
Compare
0e7c39b
to
0b4e2ea
Compare
0b4e2ea
to
840114a
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(Not a full review, just reviewing for semver incompatibility changes -- I didn't spot any.)
This is not required for QUIC, and perhaps always incorrect. Further, Windows drops packets that we attempt to send with CE set.
840114a
to
31740e2
Compare
Thanks for taking care of this! This is a huge and long overdue improvement to our performance and reliability on Windows. |
This adds support for ECN on Windows using
WSARecvMsg()
andWSASendMsg()
from WinSock API.This solves #765.
Some points need to be discussed or done :
WSARecvMSG()
cannot be accessed directly, we need to retrieve its function pointer using a dedicated call toWSAIoctl()
. This detection may fail on old versions of windows (it seems to have been added as an extension in Windows XP). Do we keep the old API as a fallback (as currently done in the draft PR) ?Some possible long term tasks or benefits :
Feel free to comment on this draft.