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

kernel: bridge: readding MLD wakeup call feature #2365

Merged

Conversation

T-X
Copy link
Contributor

@T-X T-X commented Jan 1, 2022

With the update to OpenWrt 21.02 the bridge MLD wakeup call feature was
removed. However the issue with Android devices and MLD is still
present. Therefore readding the bridge MLD wakeup call patch and porting
it to Linux 5.10 / OpenWrt 22.03.

Link: https://issuetracker.google.com/issues/149630944
Fixes: aab2b91 ("modules: switch to OpenWrt 21.02")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>

@T-X T-X force-pushed the pr-bridge-readd-mld-wakeupcall branch from 351ae32 to f9fa35d Compare January 5, 2022 16:52
@T-X
Copy link
Contributor Author

T-X commented Jan 5, 2022

Changelog v2:

  • renamed 0008-kernel-bridge-Implement-MLD-Querier-wake-up-calls-Android-bug-workaround.patch to 0007 -> fixes a CI check failure

@neocturne neocturne added 2. status: merge conflict The merge has a conflict and needs rebasing 2. status: waiting-on-author Waiting on some action from the author labels May 27, 2022
@neocturne
Copy link
Member

As we have switched to 22.03, this needs another rebase now.

@T-X T-X added this to the 2022.1 milestone Jun 2, 2022
@T-X
Copy link
Contributor Author

T-X commented Jun 7, 2022

As we have switched to 22.03, this needs another rebase now.

I'm working on it. Mostly straight forward, but in Linux 5.10 there were some larger changes to the bridge multicast code to add MLDv2/IGMPv3 support. MLDv2/IGMPv3 is nice, but also a lot more complex than MLDv1/IGMPv2...

For our current configuration should not matter too much as the default for the Linux bridge and therefore for us too is still MLDv1/IGMPv2. But I would still like to get the rebased wakeupcall feature in a shape so that it should(tm) work, too, when setting the bridge to MLDv2/IGMPv3 (querier).

What I'm still trying to wrap my head around is retransmissions of multicast address specific or multicast address + source specific queries and the new suppress flag in MLDv2/IGMPv3. More precisely in which of these cases to send a wake-up call or not.


PS/Edit: net/bridge/br_multicast.c increased from ~2500 lines of code in Linux 5.9 to ~4000 in Linux 5.10. Should mostly be unused when using the default MLDv1/IGMPv2 mode. But still worth to keep an eye on for potential regressions in tests and in the field in general.

@T-X T-X force-pushed the pr-bridge-readd-mld-wakeupcall branch from f9fa35d to 94f69b3 Compare June 21, 2022 01:03
@T-X
Copy link
Contributor Author

T-X commented Jun 21, 2022

Changelog v3:

  • updated to Linux 5.10 / OpenWrt 22.03

@T-X T-X removed 2. status: merge conflict The merge has a conflict and needs rebasing 2. status: waiting-on-author Waiting on some action from the author labels Jul 7, 2022
With the update to OpenWrt 21.02 the bridge MLD wakeup call feature was
removed. However the issue with Android devices and MLD is still
present. Therefore readding the bridge MLD wakeup call patch and porting
it to Linux 5.10 / OpenWrt 22.03.

Link: https://issuetracker.google.com/issues/149630944
Fixes: aab2b91 ("modules: switch to OpenWrt 21.02")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
@T-X T-X force-pushed the pr-bridge-readd-mld-wakeupcall branch from 94f69b3 to f7bfed2 Compare July 7, 2022 22:03
@T-X
Copy link
Contributor Author

T-X commented Jul 7, 2022

Changelog v4:

  • rebased to current Gluon master: moved patch from 0004-... to 0007-...

@neocturne
Copy link
Member

How confident are we that the rebase didn't break anything? Is it a good idea to merge this when we're fairly close to a release?

@T-X
Copy link
Contributor Author

T-X commented Jul 9, 2022

How confident are we that the rebase didn't break anything? Is it a good idea to merge this when we're fairly close to a release?

I have it running on this node here, without any issues so far: https://vogtland.freifunk.net/map/#!/en/graph/e4956e440db5

And I see the ICMPv6 Echo Request / MLD exchange in Wireshark when connecting to it. So this feature is active on it.

I haven't changed anything in the parsing and packet allocation code. Only had to update a few variable names and the entry points in the end as some function parameters got changed with the MLDv2 addition in the Linux bridge. So to me compared to the previous version for OpenWrt 19.07 this shouldn't (tm) be that different / fragile.

But as earlier this gets merged the earlier others will test and verify it as well ;-).

@blocktrron blocktrron modified the milestones: 2022.1, 2022.1.1 Aug 9, 2022
@blocktrron blocktrron merged commit 0530b06 into freifunk-gluon:master Sep 5, 2022
@rotanid rotanid added 0. type: regression 5. needs: stable backport The changeset need to be backported to supported stable releases labels Oct 14, 2022
belzebub40k pushed a commit to belzebub40k/gluon that referenced this pull request Oct 20, 2022
With the update to OpenWrt 21.02 the bridge MLD wakeup call feature was
removed. However the issue with Android devices and MLD is still
present. Therefore readding the bridge MLD wakeup call patch and porting
it to Linux 5.10 / OpenWrt 22.03.

Link: https://issuetracker.google.com/issues/149630944
Fixes: aab2b91 ("modules: switch to OpenWrt 21.02")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
T-X added a commit to T-X/gluon that referenced this pull request Oct 23, 2022
With the update to OpenWrt 21.02 the bridge MLD wakeup call feature was
removed. However the issue with Android devices and MLD is still
present. Therefore readding the bridge MLD wakeup call patch and porting
it to Linux 5.10 / OpenWrt 22.03.

Link: https://issuetracker.google.com/issues/149630944
Fixes: aab2b91 ("modules: switch to OpenWrt 21.02")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
+- DEV_OPT_ARP_ACCEPT = (1ULL << 29),
+- DEV_OPT_SPEED = (1ULL << 30),
+- DEV_OPT_DUPLEX = (1ULL << 31),
++ DEV_OPT_MULTICAST_WAKEUPCALL = (1ULL << 15),
Copy link
Member

Choose a reason for hiding this comment

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

Potential future cleanup (for the next big rebase?):

Moving all these enum fields by 1 seems unnecessary. Maybe add the new flag at 1ULL << 63 instead?

JayBraker pushed a commit to JayBraker/gluon that referenced this pull request Apr 12, 2023
With the update to OpenWrt 21.02 the bridge MLD wakeup call feature was
removed. However the issue with Android devices and MLD is still
present. Therefore readding the bridge MLD wakeup call patch and porting
it to Linux 5.10 / OpenWrt 22.03.

Link: https://issuetracker.google.com/issues/149630944
Fixes: aab2b91 ("modules: switch to OpenWrt 21.02")
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>

Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0. type: regression 5. needs: stable backport The changeset need to be backported to supported stable releases
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants