From 8a4a574fc937ed166c199d0d6f16053da5d8f701 Mon Sep 17 00:00:00 2001 From: Kyle Simpson Date: Tue, 13 Jan 2026 18:33:12 +0000 Subject: [PATCH] Advertise `MAC_CAPAB_OVERLAY` This is a GLDv3-private capability, but stlouis will use this information to determine whether we should receive 10GbE equiavalent software fanout (i.e., up to 8 soft rings). Using this capability (with some stlouis changes to remove the VNIC requirement) should allow us to avoid having all fan-in from being serialised by a single softring worker thread. --- xde/src/mac/sys.rs | 1 + xde/src/xde.rs | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/xde/src/mac/sys.rs b/xde/src/mac/sys.rs index 3eb4875d..a8f3c48e 100644 --- a/xde/src/mac/sys.rs +++ b/xde/src/mac/sys.rs @@ -615,6 +615,7 @@ pub enum mac_capab_t { MAC_CAPAB_NO_ZCOPY = 0x00100000, /* boolean only, no data */ MAC_CAPAB_LEGACY = 0x00200000, /* data is mac_capab_legacy_t */ MAC_CAPAB_VRRP = 0x00400000, /* data is mac_capab_vrrp_t */ + MAC_CAPAB_OVERLAY = 0x00800000, /* boolean only, no data */ MAC_CAPAB_TRANSCEIVER = 0x01000000, /* mac_capab_transciever_t */ MAC_CAPAB_LED = 0x02000000, /* data is mac_capab_led_t */ } diff --git a/xde/src/xde.rs b/xde/src/xde.rs index 576f3c24..1c92974f 100644 --- a/xde/src/xde.rs +++ b/xde/src/xde.rs @@ -3096,6 +3096,13 @@ unsafe extern "C" fn xde_mc_getcapab( boolean_t::B_TRUE } + // We *are* an overlay device, and this helpfully convinces MAC + // to give us eight softrings without advertising MAC_CAPAB_RINGS + // (and pretending to have 8 physical rings, get polled by an SRS...). + // + // We want, in future, to dynamically size the softring count of + // an XDE port to 1-to-1 match the number of viona queues above it. + mac::mac_capab_t::MAC_CAPAB_OVERLAY => boolean_t::B_TRUE, _ => boolean_t::B_FALSE, } }