On 7/23/20 2:27 PM, Chris Packham wrote: > Hi Marek, > > On 24/07/20 2:46 am, Marek BehĂșn wrote: >> Hi, >> >> a customer of ours filed a ticket saying that when using upstream kernel >> (5.8.0-rc6 on Debian 10) on Turris MOX (88e6190 switch) with DSA with >> default configuration, the switch is losing DHCPv6 solicit packets / >> IPv6 multicast packets sent to ff02::1::2 address. >> >>> Specifically, it seems the 88E6190 hardware switches in the Peridot >>> module is swallowing IPv6 multicast packets (sent to ff02::1:2 ). >>> We tested this by mirroring the Mox LAN port on the switch and saw the >>> DHCPv6 solicit packet arriving out of the switch but the Mox kernel >>> didn't see it (using tcpdump). >> Is this issue known? > > I can't speak to the Peridot specifically but other Marvell silicon I've > dealt with does try to avoid trapping packets to the CPU. Normally you > would set specific registers/table entries to declare interest in > particular reserved multicast groups. > > I had a quick skim of the Peridot docs and the references to reserved > multicast I see are all about the 802.1D BPDUs. > > It might be necessary to configure MLD snooping or add an FDB entry to > get the ff02::1::2 packets to the CPU. > > There is also the possibility that the CPUs Ethernet port is dropping > the packets for similar reasons. I'd expect Linux to handle that > correctly put perhaps with a DSA configuration it skips the multicast > reception config. > > As another thought do you know what DHCPv6 client/server is being used. > There was a fairly recent bugfix for busybox that was needed because the > v6 code was using the wrong MAC address.
Unlike standalone Ethernet NICs, DSA network devices do not currently filter multicast or unicast using their ndo_set_rx_mode() at the switch level, however they do program the DSA master network device's RX filter, so this could be a source of bugs as well, possibly. There is work in progress to address that by Vladimir [1], however by default the switch is expected to flood unknown MC and UC towards the CPU port. [1]: https://patchwork.ozlabs.org/project/netdev/list/?series=178540 -- Florian