I saw that the tx timer was removed in your patch queue but you weren't notifying when full. I decided to do it here instead of in the error case on add_buf for really no great reason other than I thought it made more sense for it to happen in the notify(). Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 7fa1c72..57b7ad3 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -146,7 +146,8 @@ static void vring_kick(struct virtqueue *_vq) /* Need to update avail index before checking if we should notify */ mb(); - if (!(vq->vring.used->flags & VRING_USED_F_NO_NOTIFY)) + /* Always notify when the queue is full */ + if (!(vq->vring.used->flags & VRING_USED_F_NO_NOTIFY) || !vq->num_free) /* Prod other side to tell it about changes. */ vq->notify(&vq->vq);
On Wednesday 09 January 2008 07:54:10 Anthony Liguori wrote:> I saw that the tx timer was removed in your patch queue but you weren't > notifying when full. I decided to do it here instead of in the error case > on add_buf for really no great reason other than I thought it made more > sense for it to happen in the notify().Erk, my bad, I put a ->notify call in the get_buf fail path, not the add_buf fail path. Fixed in latest, thanks. Rusty.