vmxnet3 no longer functional on DPDK 21.11

Bruce Richardson bruce.richardson at intel.com
Tue Jan 9 11:21:04 CET 2024


On Sat, Jan 06, 2024 at 08:50:03AM -0600, Lewis Donzis wrote:
> Good morning.
> 
> I just wanted to mention that this problem still persists in 22.11.3, and we still have to patch the vmxnet3 driver every time we upgrade.
> 
> As mentioned before, ixgbe_ethdev.c is an example of a driver that ifdef's out the attempt to use interrupts on FreeBSD.
> 
> Thanks,
> lew
> 
> 
> ----- On Jun 3, 2022, at 8:19 AM, Lewis Donzis lew at perftech.com wrote:
> 
> > Hi, all.
> > 
> > Resurrecting this thread from six months ago, I apologize for not having more
> > time to dig into it, but in light of recent findings, I see numerous other
> > drivers and other parts of the code that have comments to the effect that
> > "FreeBSD doesn't support interrupts" and they effectively #ifdef out the
> > attempt.
> > 
> > Could this be as simple as needing to do the same in vmxnet3?  Empirically,
> > ignoring the error from rte_intr_enable() allows the driver to work normally,
> > for what that's worth.
> > 

I'm not at all familiar with the vmxnet3 driver, so apologies for the lack
of response up till now. Does something like the below simple fix work for
you? If so, I'm happy enough to submit as a patch for upstream merge and
then backport.

/Bruce

diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c b/drivers/net/vmxnet3/vmxnet3_ethdev.c
index e49191718a..d088b42d35 100644
--- a/drivers/net/vmxnet3/vmxnet3_ethdev.c
+++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c
@@ -1129,6 +1129,7 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
        /* Setting proper Rx Mode and issue Rx Mode Update command */
        vmxnet3_dev_set_rxmode(hw, VMXNET3_RXM_UCAST | VMXNET3_RXM_BCAST, 1);
 
+#ifndef RTE_EXEC_ENV_FREEBSD
        /* Setup interrupt callback  */
        rte_intr_callback_register(dev->intr_handle,
                                   vmxnet3_interrupt_handler, dev);
@@ -1140,6 +1141,7 @@ vmxnet3_dev_start(struct rte_eth_dev *dev)
 
        /* enable all intrs */
        vmxnet3_enable_all_intrs(hw);
+#endif
 
        vmxnet3_process_events(dev);
 


More information about the dev mailing list