From a1ed0960673b6ca2e6b68835537f53cc86110a77 Mon Sep 17 00:00:00 2001 From: Ryan Goodfellow Date: Thu, 25 Dec 2025 21:42:01 -0800 Subject: [PATCH 1/2] wire up xde_mc_multicst needed for ndp solicitations on opte devices to use multicast dmacs instead of broadcast dmacs? --- xde/src/xde.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xde/src/xde.rs b/xde/src/xde.rs index 1a711ed4..c83cf47c 100644 --- a/xde/src/xde.rs +++ b/xde/src/xde.rs @@ -1995,7 +1995,7 @@ unsafe extern "C" fn xde_mc_multicst( _add: boolean_t, _addrp: *const u8, ) -> c_int { - ENOTSUP + 0 } #[unsafe(no_mangle)] From d9ed1d228907c006f82f097a4de50336a7d3e331 Mon Sep 17 00:00:00 2001 From: Ryan Goodfellow Date: Mon, 29 Dec 2025 17:41:50 +0000 Subject: [PATCH 2/2] add comment on xde_mc_multicst return value --- xde/src/xde.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/xde/src/xde.rs b/xde/src/xde.rs index c83cf47c..2f036762 100644 --- a/xde/src/xde.rs +++ b/xde/src/xde.rs @@ -1995,6 +1995,19 @@ unsafe extern "C" fn xde_mc_multicst( _add: boolean_t, _addrp: *const u8, ) -> c_int { + // The value returned to the mc_multicst(9e) entry point is both an + // opportunity for xde to set up multicast filtering and to signal to the + // kernel that multicast addresses are supported for opte data links. Since + // we're not doing any hardware-based multicast filtering at the moment, + // it's sufficient to signal to the kernel that multicast addresses are + // supported for opte data links. If we do not return success here, the + // kernel will assign broadcast macs where multicast macs would normally be + // used. This breaks protocols such as IPv6 NDP that expect multicast MACs + // to be used. + // + // In the future we may have a more sophisticated approach here that + // actually programs hardware multicast filters, either for things like NDP + // or in response to signals from the guest such as VIRTIO_NET_F_CTRL_RX. 0 }