virtio::net: Improve the Rx refill policy

Check for a refill condition and refill if needed from inside the loop
polling for completion and not outside it. In the later case there may be
the situation when the ring may become too empty causing undesirable delays
and packet dropps.

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
virtio::vring: make a refill condition less agressive

When a number of packets handled in each RX_BH wakeup is relatively small
(most common case) this will spread the overhead of allocations more evenly between
RX_BH wakeups. This is good for at least two reasons:
  - There won't be periodic "long" wakeups - those that fill half a ring with pages.
  - There will less stress on the memory management system since this patch will spread
    the refill operations between different CPUs.

This patch kills a vring::refill_ring_cond() function since it's been used only in virtio::net
and "opening" it up makes a code more readable.

Signed-off-by: Vlad Zolotarov <vladz@cloudius-systems.com>
Reviewed-by: Nadav Har'El <nyh@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>