Thanks for the feedback. Is there an interface on that device that is part of a bridge? As part of my debugging, I have discovered that the device gets the promiscuous mode bit set if it is used in a bridge, even though the PROMISC flag doesn't get set on the interface.
I did some more testing and the problem affects both eth0 and eth1 and all physical ports. I have also tried various hacks in the driver to test things out (see the bug report for more info) and have convinced myself it is a real hardware or firmware problem in the multicast filter in the device. It is easy for the driver to workround just by treating the device as if it had no multicast filter and receiving all multicast frames.
Does anyone know if the R7800 has firmware for the lan (dwmac) device? If so, I would be interested to test different versions if there are any.
If not, I will workround it in the driver. What is the best way in the lede world to have the driver work differently on a particular router? Conditional code in the driver? A specific patch which gets selected at build time? Is there a good way for the driver to work out at runtime which device it is running on to avoid having to have a specific image for the R7800? Or should I use a boot parameter?