Skip to content

Conversation

@rcgoodfellow
Copy link
Contributor

@rcgoodfellow rcgoodfellow commented Dec 26, 2025

This came up in IPv6 e2e testing with omicron probes.

Wiring up mc_multicst(9e) is required for omicron probes setting up addresses directly on opte devices. The NeighborAdvertisement HairpinAction expects multicast macs. But without mc_multicst(9e) plumbed, multicast macs will fall back to broadcast macs, the HairpinAction predicates will fail and ndp will go nowhere in the probe zone.

My read of mc_multicst(9e) is that it is both an opportunity for a driver to set up multicast filtering on a device, and to signal to the kernel that multicast addressing is supported for data links on said device. Since we're not doing any hardware-based multicast filtering at the moment, I think it's sufficient to simply signal multicast L2 address support to the kernel.

When we return ENOTSUP for the mc_multicst entry point, we see the following in the kernel logs when multicast addresses are assigned to OPTE data links.

ip: joining multicasts failed (4) on opte1 - will use link layer broadcasts for multicast

Which results in NDP traffic using broadcast macs instead of multicast macs.

I've taken this patch for a spin in a4x2. Everything comes up. NDP traffic flows over OPTE devices use multicast addressing and address setup works as expected.

@rcgoodfellow rcgoodfellow added this to the 18 milestone Dec 26, 2025
@rcgoodfellow rcgoodfellow changed the title Guest IPv6 odds and ends return success from mc_multicst(9e) Dec 26, 2025
needed for ndp solicitations on opte devices to use multicast dmacs
instead of broadcast dmacs?
@rcgoodfellow rcgoodfellow marked this pull request as ready for review December 26, 2025 21:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants