Skip to content

Conversation

@thomaseizinger
Copy link
Contributor

No description provided.

@thomaseizinger thomaseizinger marked this pull request as ready for review November 18, 2024 05:51
Copy link
Collaborator

@mxinden mxinden left a comment

Choose a reason for hiding this comment

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

I am not sure I understand the purpose of this new conditional.

If I understand your comment #2042 (comment) correctly, GSO always fails on Android. If that is indeed always the case, why not disable it all together on Android?

@thomaseizinger
Copy link
Contributor Author

If that is indeed always the case, why not disable it all together on Android?

It works fine when I am on WiFi and the unit tests also run on Android. It only fails on mobile data! That is the weird bit.

The purpose of the conditional is to actually make the "disable GSO on failure"-mechanism work.

@Ralith
Copy link
Collaborator

Ralith commented Nov 18, 2024

It works fine when I am on WiFi and the unit tests also run on Android. It only fails on mobile data! That is the weird bit.

We've seen this on other Linux as well, which is why the dynamic max_gso_segments fall-back path exists to begin with. I assume it's due to network driver support for GSO varying. I guess, furthermore, some drivers happily ignore a single segment and others don't want to see that cmsg at all...

Copy link
Collaborator

@Ralith Ralith left a comment

Choose a reason for hiding this comment

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

It looks like we already have similar logic in quinn-proto, which is probably why we've never noticed this problem before:

segment_size: match num_datagrams {
1 => None,
_ => Some(segment_size),
},

I don't particularly mind being a little more robust here, though.

@thomaseizinger
Copy link
Contributor Author

I assume it's due to network driver support for GSO varying

This is interesting. I don't know anything about how these network drivers are organised in the Linux kernel but the docs page (https://www.man7.org/linux/man-pages/man7/udp.7.html) says:

As late as possible, the large packet is split by segment size into a series of datagrams. This segmentation offload step is deferred to hardware if supported, else performed in software.

I guess, this still doesn't rule out that the particular software support is missing.

@thomaseizinger
Copy link
Contributor Author

It looks like we already have similar logic in quinn-proto, which is probably why we've never noticed this problem before:

Would you like me to remove this from quinn-proto as part of this patch-set then?

@thomaseizinger thomaseizinger force-pushed the chore/no-gso-segment-length branch from 9df74f1 to 0627e31 Compare November 19, 2024 03:52
@thomaseizinger thomaseizinger force-pushed the chore/no-gso-segment-length branch from 0627e31 to fa7849e Compare November 19, 2024 03:58
@Ralith
Copy link
Collaborator

Ralith commented Nov 19, 2024

Would you like me to remove this from quinn-proto as part of this patch-set then?

Nah, I don't think that's necessary. I see it as defense in depth, maybe. In theory quinn-proto can be used without quinn-udp, as well.

@Ralith Ralith added this pull request to the merge queue Nov 19, 2024
Merged via the queue into quinn-rs:main with commit 9386cde Nov 19, 2024
17 checks passed
moz-v2v-gh pushed a commit to mozilla/gecko-dev that referenced this pull request Dec 11, 2024
…chain-reviewers

`quinn-udp` `v0.5.8` contains an intermediary fix for Bug 1916558, see
quinn-rs/quinn#2071.

In addition `quinn-udp` `v0.5.8` Includes the following bugfixes:

- quinn-rs/quinn#2072
- quinn-rs/quinn#2073
- quinn-rs/quinn#2074
- quinn-rs/quinn#2050
- quinn-rs/quinn#2047

Differential Revision: https://phabricator.services.mozilla.com/D231505
i3roly pushed a commit to i3roly/firefox-dynasty that referenced this pull request Dec 12, 2024
…chain-reviewers

`quinn-udp` `v0.5.8` contains an intermediary fix for Bug 1916558, see
quinn-rs/quinn#2071.

In addition `quinn-udp` `v0.5.8` Includes the following bugfixes:

- quinn-rs/quinn#2072
- quinn-rs/quinn#2073
- quinn-rs/quinn#2074
- quinn-rs/quinn#2050
- quinn-rs/quinn#2047

Differential Revision: https://phabricator.services.mozilla.com/D231505
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified-and-comments-removed that referenced this pull request Dec 13, 2024
…chain-reviewers

`quinn-udp` `v0.5.8` contains an intermediary fix for Bug 1916558, see
quinn-rs/quinn#2071.

In addition `quinn-udp` `v0.5.8` Includes the following bugfixes:

- quinn-rs/quinn#2072
- quinn-rs/quinn#2073
- quinn-rs/quinn#2074
- quinn-rs/quinn#2050
- quinn-rs/quinn#2047

Differential Revision: https://phabricator.services.mozilla.com/D231505

UltraBlame original commit: a8cd98601fdff821fe9cc516ddb61f54c104fb58
gecko-dev-updater pushed a commit to marco-c/gecko-dev-comments-removed that referenced this pull request Dec 13, 2024
…chain-reviewers

`quinn-udp` `v0.5.8` contains an intermediary fix for Bug 1916558, see
quinn-rs/quinn#2071.

In addition `quinn-udp` `v0.5.8` Includes the following bugfixes:

- quinn-rs/quinn#2072
- quinn-rs/quinn#2073
- quinn-rs/quinn#2074
- quinn-rs/quinn#2050
- quinn-rs/quinn#2047

Differential Revision: https://phabricator.services.mozilla.com/D231505

UltraBlame original commit: a8cd98601fdff821fe9cc516ddb61f54c104fb58
gecko-dev-updater pushed a commit to marco-c/gecko-dev-wordified that referenced this pull request Dec 13, 2024
…chain-reviewers

`quinn-udp` `v0.5.8` contains an intermediary fix for Bug 1916558, see
quinn-rs/quinn#2071.

In addition `quinn-udp` `v0.5.8` Includes the following bugfixes:

- quinn-rs/quinn#2072
- quinn-rs/quinn#2073
- quinn-rs/quinn#2074
- quinn-rs/quinn#2050
- quinn-rs/quinn#2047

Differential Revision: https://phabricator.services.mozilla.com/D231505

UltraBlame original commit: a8cd98601fdff821fe9cc516ddb61f54c104fb58
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.

4 participants