/* The routine to call when the Guest pings us, or timeout. */
        void (*handle_output)(struct virtqueue *me, bool timeout);
 
-       /* Outstanding buffers */
-       unsigned int inflight;
-
        /* Is this blocked awaiting a timer? */
        bool blocked;
 };
                        errx(1, "Looped descriptor");
        } while ((i = next_desc(vq, i)) != vq->vring.num);
 
-       vq->inflight++;
        return head;
 }
 
        /* Make sure buffer is written before we update index. */
        wmb();
        vq->vring.used->idx++;
-       vq->inflight--;
 }
 
 /* This actually sends the interrupt for this virtqueue */
 
        /* If they don't want an interrupt, don't send one, unless empty. */
        if ((vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)
-           && vq->inflight)
+           && lg_last_avail(vq) != vq->vring.avail->idx)
                return;
 
        /* Send the Guest an interrupt tell them we used something up. */
        vq->next = NULL;
        vq->last_avail_idx = 0;
        vq->dev = dev;
-       vq->inflight = 0;
        vq->blocked = false;
 
        /* Initialize the configuration. */