Hello.

We just upgraded from 21.08 to 21.11 and it's rather astounding the number of incompatible changes in three months.  Not a big deal, just kind of a surprise, that's all.

Anyway, the problem is that the vmxnet3 driver is no longer functional on FreeBSD.  

In drivers/net/vmxnet3/vmxnet3_ethdev.c, vmxnet3_dev_start() gets an error calling rte_intr_enable().  So it logs "interrupt enable failed" and returns an error.

In lib/eal/freebsd/eal_interrupts.c, rte_intr_enable() is returning an error because rte_intr_dev_fd_get(intr_handle) is returning -1.

I don't see how that could ever return anything other than -1 since it appears that there is no code that ever calls rte_intr_dev_fd_set() with a value other than -1 on FreeBSD.  Also weird to me is that even if it didn't get an error, the switch statement that follows looks like it will return an error in every case.

Nonetheless, it worked in 21.08, and I can't quite see why the difference, so I must be missing something.

For the moment, I just commented the "return -EIO" in vmxnet3_ethdev.c, and it's now working again, but that's obviously not the correct solution.

Can someone who's knowledgable about this mechanism perhaps explain a little bit about what's going on?  I'll be happy to help troubleshoot.  It seems like it must be something simple, but I just don't see it yet.

Thanks,
lew