Rework if_epair(4) to no longer use netisr and dpcpu.
Instead use mbufq and swi_net.
This simplifies the code and seems to make it work better and
no longer hang.
Also make sure that the maxqlen is not overrun but instead if the
queue is full drop the oldest packet instead (you can think of your
dma ring overwriting the odlest entry).
I started this at some point last year and wouldn't do some of
this the same anymore (e.g., probably not use swi_net anymore).
I ran a simplified test with 512 l-m-r jail-vnet setup on a
12 core CPU running 100k ping6 -f packets from l to r each
forwarded in m. That lead to about 18% packet drops.
I've put the full file as a drop-in replacement at
https://people.freebsd.org/~bz/tmp/20210706-01-epair.diff
Just putting this out so that other people can test or work
on it and improve it.