Commit 756ae78b authored by Wangkai (Kevin,C)'s avatar Wangkai (Kevin,C) Committed by Stefan Hajnoczi
Browse files

tap: fix vcpu long time io blocking on tap



[Adjusted doc comment for grammar.
--Stefan]

Signed-off-by: default avatarWangkai <wangkai86@huawei.com>
Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
parent 86b182ac
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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;
        }
    }
}