Loading net/tap.c +12 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,7 @@ static void tap_send(void *opaque) { TAPState *s = opaque; int size; int packets = 0; while (qemu_can_send_packet(&s->nc)) { uint8_t *buf = s->buf; Loading @@ -210,6 +211,17 @@ static void tap_send(void *opaque) } else if (size < 0) { break; } /* * When the host keeps receiving more packets while tap_send() is * running we can hog the QEMU global mutex. Limit the number of * packets that are processed per tap_send() callback to prevent * stalling the guest. */ packets++; if (packets >= 50) { break; } } } Loading Loading
net/tap.c +12 −0 Original line number Diff line number Diff line Loading @@ -189,6 +189,7 @@ static void tap_send(void *opaque) { TAPState *s = opaque; int size; int packets = 0; while (qemu_can_send_packet(&s->nc)) { uint8_t *buf = s->buf; Loading @@ -210,6 +211,17 @@ static void tap_send(void *opaque) } else if (size < 0) { break; } /* * When the host keeps receiving more packets while tap_send() is * running we can hog the QEMU global mutex. Limit the number of * packets that are processed per tap_send() callback to prevent * stalling the guest. */ packets++; if (packets >= 50) { break; } } } Loading