feat/stm32: disable multicast filtering on eth v2

Initially, this was feature-gated, but has been requested
to be changed to be unconditional, see PR 3488 for reasons.

When filtering is enabled, it intercepts and drops silently
ipv6 packets, possibly somewhere around
smoltcp::iface::interface::ipv6 lines 36, 44 in current head
sha e9b66eadaeacef758ebc4a12378f8d2162144cf4

With filtering disabled (this patch), packets are received
and communication over ipv6 is possible, neighbor discovery works.

related: #2496

Signed-off-by: Krzysztof Królczyk <Krzysztof.Krolczyk@o2.pl>
This commit is contained in:
Krzysztof Królczyk 2024-11-01 11:51:11 +01:00
parent 10a9766046
commit e93ac532ac
No known key found for this signature in database
GPG Key ID: FDAE017682FDBEDC

View File

@ -192,6 +192,9 @@ impl<'d, T: Instance, P: PHY> Ethernet<'d, T, P> {
// TODO: Carrier sense ? ECRSFD // TODO: Carrier sense ? ECRSFD
}); });
// Disable multicast filter
mac.macpfr().modify(|w| w.set_pm(true));
// Note: Writing to LR triggers synchronisation of both LR and HR into the MAC core, // Note: Writing to LR triggers synchronisation of both LR and HR into the MAC core,
// so the LR write must happen after the HR write. // so the LR write must happen after the HR write.
mac.maca0hr() mac.maca0hr()