Build for Netgear R7800

@steom
some ideas for you, if you are still trying to use the master... I guess that you are reaching the performance limit somehow. Might be due to driver interrupt activity choking the CPU. (And the reason may well be wifi performance limitations made to master in March, but which limits are not in 17.01.) You might monitor CPU load with "top" while you have video problems. Likely SIRQ load is at 100%.

Some ideas that might mitigate the problem:

Great firmware, I still love using it.

Can someone tell me if MU-MIMO is supported?

Don't think MU-MIMO is supported, as it's not finished in the mainline linux wifi stack AFAIK.

You're not really losing anything though, unless you have 2 or more MU-MIMO capable devices connecting to your router.

Hnyman, I've tried latest stable firmware, and mtu jumbo frames works fine, by changing mtu on eth0 to 1508, but on your build ( I prefer your build) it still won't work
shows mtu as 1492 when tested. Also I've been getting latency spikes on PS4 with bf1, have it wired into router, using cake qos, any ideas? Router is not under load when ping spikes.

[quote="choppyc, post:340, topic:316"]
I've tried latest stable firmware, and mtu jumbo frames works fine, by changing mtu on eth0 to 1508, but on your build ( I prefer your build) it still won't work shows mtu as 1492 when tested.
[/quote]You mean that it works with release 17.01.2 but not with my master build, right?
17.01 branch is too far away to compare easily. There have been lots of changes since then. (Or did you mean my 17.01 build?)

My build has no build-specific items for switch driver code or config. So, I suspect that it is something more generic. You should check if the buildbot snapshot works for you with the same config (if you are talking about master).

But, I tried setting MTU to >1500 myself in master, and did not succeed. So, I guess that the symptom is real. (I have normally 1500 as the MTU, set automatically)

@hnyman: I'm pretty sure this has nothing to do with your build environment, but did you see my thread on IGMP snooping on this router? The switch seems to be dropping IGMP queries, but not other IGMP (or multicast) packets whenever IGMP snooping is enabled in the switch itself. Do you have any ideas on that one? Can you reproduce it on your router?

You may want to try this driver and check how igmp snooping works https://github.com/dissent1/r7800/commit/fd065e652c2d49db3fab42f800ff9002ce4993fa

You will have to unbridge eth0 and eth1 after this. You'll have lan1-4 and wan interfaces that correspond to relative physical port.

[quote="mroek, post:342, topic:316"]
did you see my thread on IGMP snooping on this router? The switch seems to be dropping IGMP queries, but not other IGMP (or multicast) packets whenever IGMP snooping is enabled in the switch itself. Do you have any ideas on that one?
[/quote]I saw that but did not comment, because I have nothing to say that would contribute. Not my specialty. You should get @blogic @dissent1 @mkresin (or somebody else who is really looking deeper into ipq806x) interested in the issue.

@dissent1: That's very interesting, but I'll have to admit I'm not sure how to get that into my build. Does the LuCI switch setup page still work with that driver? Not really a big deal, but more convenient.

And also, I'm using the 17.01 stable branch and not master (wifi is useless in master for me), which I guess is also troublesome.

Is your version 17.01 also including the patches of the official stable 17.01.2 and meant to be the daily driver?

I only used master so far and want a stable base. What should I go with?

No, it's a different conception, you don't need swconfig to configure the switch, you are getting native Linux tools instead. Each port is represented in kernel as a seperate interface, so you can do whatever kernel allows you to do with it.

Nope, only k4.9+

[quote="dissent1, post:347, topic:316, full:true"]

No, it's a different conception, you don't need swconfig to configure the switch, you are getting native Linux tools instead. Each port is represented in kernel as a seperate interface, so you can do whatever kernel allows you to do with it.[/quote]

Ok. But I guess that if master will be switching over to this new driver, there will need to be LuCI support for configuring it (VLANs and such). With the current state of affairs, I guess there isn't support in base UCI either? So any config needs to be manually scripted for now?

Did you test this yourself? Have you made a build which includes this new driver?

No need for that, it's native Linux tools - you just add interface with '.vlannumber' in luci as usual i.e. lan1.30 - it's lan port 1 tagged with 30 [quote="mroek, post:348, topic:316"]
Did you test this yourself? Have you made a build which includes this new driver?
[/quote]

Yep I'm running it for a pretty while

Ok, thanks. Sorry for being dense here, but to enable IGMP snooping on the switch, would you use sysctl for that, then?

In theory yes, but I don't need multicast to be forwarded, so I have not tested it myself.

Hi Dissent, I've been looking at your repo for a little while, what other goodies do you have in there, might attempt a build later

If the default is that IGMP snooping is off, then you're probably already having multicast forwarding enabled. But as long as you don't actually use multicast, it doesn't really matter. Could you take a peek in your router, and see what the default is?

Since I'm rather, shall we say inexperienced, in the build system, can I ask how I would go about to apply the driver commit from your repo to my own build environment (based on master)? Can it be downloaded as a patch and then applied, or do I have to use git to cherry pick that commit from your repo. Again, sorry for being dense, but hopefully I'll improve. And @hnyman, if you think these questions are inappropriate in your thread, I apologize.

Yes.
any github commit can be downloaded just by adding ".patch" to the and of it. Download it with wget,curl or ...whatever, then just apply the patch.

web page: https://github.com/dissent1/r7800/commit/fd065e652c2d49db3fab42f800ff9002ce4993fa
patch: https://github.com/dissent1/r7800/commit/fd065e652c2d49db3fab42f800ff9002ce4993fa.patch

You can first test it with "dry-run" quite normally, so that you see that it applies without errors. (run patch command from buildroot root)

patch --dry-run -p 1 -i patchname

(And I think that original for that is actually in blogic's staging tree (but dissent's version might have additional fixes, I haven't checked)
https://git.lede-project.org/?p=lede/blogic/staging.git;a=shortlog;h=refs/heads/qca8k

Yeah, you should take this kind of generic discussion to the R7800 exploration thread Netgear R7800 exploration (IPQ8065, QCA9984) (if the topic is R7800- or ipq806x-specific), or even better, start a new thread about IGMP snooping.

Two main reasons: this off-topic discussion clutters this topic, and even worse, you don't reach the attention of people who really know about IGMP snooping (as they likely are not interested in my R7800 build).

Ok, thanks. I'll stop polluting your thread. As you know, I did start a new thread about this issue, but I guess the people that really could answer is too busy to do so.

May I ask one more dumb question, but this one is related to your build environment:
I have used your script to recreate your build environment, and then made some minor customizations for myself (basically just creating my own .config.init-file with my preferred packages). I can then update and make as new commits are made, but if you make changes to your patches, and I want to stay current with those, how would I do that? Is the easiest method to just start over from scratch? Reversing the original patches and then reapplying the new ones is perhaps not a good idea?

There is no really easy way.

Maybe a good starting point is to store and compare the patch files that I publish along my build. Then you can make a diff of the old and new patches and see if anything has changed between the releases. I tweak the code pretty seldom, so usually there are no changes. If you spot changes, it is a question of the easiest method to apply them.

E.g. an one-line change to some script, might be easiest to edit by hand.

Also added new files / scripts are rather easy to spot and apply.

But a more complex change may require more work. If you have not touched the same files, reverting the original patches and applying the new ones may be viable.

If you have edited the same files, in a complex way, it may easiest to start over, and then first apply my new patches and then repeat your own editing.

If you can make diff patch out of your own changes, that will ease the updating.