Page MenuHomeFreeBSD

D60218.id188359.diff
No OneTemporary

D60218.id188359.diff

diff --git a/usr.sbin/bhyve/net_backend_netmap.c b/usr.sbin/bhyve/net_backend_netmap.c
--- a/usr.sbin/bhyve/net_backend_netmap.c
+++ b/usr.sbin/bhyve/net_backend_netmap.c
@@ -259,6 +259,19 @@
while (head != ring->tail) {
struct netmap_slot *slot = ring->slot + head;
+ /*
+ * A VALE switch fills the slots it has leased in this ring
+ * and then not used with empty packets. Drop them here: a
+ * length of 0 tells the caller that there is nothing to
+ * receive, and the slot would stay at the head of the ring
+ * forever.
+ */
+ if (totlen == 0 && slot->len == 0 &&
+ (slot->flags & NS_MOREFRAG) == 0) {
+ head = nm_ring_next(ring, head);
+ ring->head = ring->cur = head;
+ continue;
+ }
totlen += slot->len;
if ((slot->flags & NS_MOREFRAG) == 0)
break;

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 3, 6:45 AM (18 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40113624
Default Alt Text
D60218.id188359.diff (802 B)

Event Timeline