virtio: force callback on empty.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 30 May 2008 20:09:45 +0000 (15:09 -0500)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 30 May 2008 05:09:46 +0000 (15:09 +1000)
commitb4f68be6c5d507afdcd74f5be3df0b1209cda503
tree85c0771058ff08c5dab5eedbf3395959dbafc878
parent7757f09c70af87887dfc195e6d6ddd54f5cc7c39
virtio: force callback on empty.

virtio allows drivers to suppress callbacks (ie. interrupts) for
efficiency (no locking, it's just an optimization).

There's a similar mechanism for the host to suppress notifications
coming from the guest: in that case, we ignore the suppression if the
ring is completely full.

It turns out that life is simpler if the host similarly ignores
callback suppression when the ring is completely empty: the network
driver wants to free up old packets in a timely manner, and otherwise
has to use a timer to poll.

We have to remove the code which ignores interrupts when the driver
has disabled them (again, it had no locking and hence was unreliable
anyway).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/virtio/virtio_ring.c
include/linux/virtio_config.h