@planedrop yep its an older thread, i arrived here through googling the issue i was having and this was one of the top results.
whilst it is a virtualised environment, the commonality between them exists and my setup is largely indistinguishable from a non-virtualised setup. i'm using dedicated cores, binding IRQs to those cores, isolating them, using hardware passthrough.
theres a variety of other threads who have had similar experiences with SR-IOV too.
just to add this was with the default MTU of 1500 and rx / tx descriptors of 4k on the linux side
improving this on the freebsd side (by placing into the loader.conf.local)
#enable iflib overrides for ixv interfaces
dev.ixv.0.iflib.override_qs_enable="1"
dev.ixv.1.iflib.override_qs_enable="1"
# Set 4K descriptors
dev.ixv.0.iflib.override_nrxds="4096"
dev.ixv.0.iflib.override_ntxds="4096"
dev.ixv.1.iflib.override_nrxds="4096"
dev.ixv.1.iflib.override_ntxds="4096"
# Enable iflib overrides for ix interface
dev.ix.0.iflib.override_qs_enable="1"
# Set 4K descriptors for ix interface
dev.ix.0.iflib.override_nrxds="4096"
dev.ix.0.iflib.override_ntxds="4096"
seems to have helped out with regard to rx_no_dma_resources issues, you can generally check if you are having those same issues by looking at
sysctl dev.ix | grep -E "(r_drops|r_stalls|r_restarts|no_desc_avail|credits|override_n[rt]xds)"