A VALE switch fills slots that it has leased in a destination ring and
then not used with packets of length 0 (nm_vale_flush(), when the
sender does not hold the last lease). netmap_peek_recvlen() returned 0
for such a slot, which the frontends take for "nothing to receive", and
left it at the head of the ring. From then on the virtual NIC received
nothing, and the mevent thread spun on the ring's kevent with 100% CPU.
Skip empty packets at the head of the ring.
Signed-off-by: Wanpeng Qian <wanpengqian@gmail.com>
Sponsored by: keelos.dev