[PATCH 01/12] kvm: qemu: Fix virtio_net tx timer

Mark McLoughlin
2008-08-11T20:12:33Z

The current virtio_net tx timer is 2ns, which doesn't make
any sense. Set it to a more reasonable 250us instead.

However, even though we were requesting a 2ns tx timer, it
was actually getting limited to MIN_TIMER_REARM_US which is
currently 250us.

So, even though the timer itself would only fire after
250us, expire_time was only set to +2ns, so we'd get the
timeout callback next time qemu_run_timers() was called from
the mainloop.

This probably accounted for a lot of the jitter in the
throughput numbers - the effective tx timer length was
anywhere between 2ns and 250us depending on e.g. whether
there was rx data available on the tap fd.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
---
qemu/hw/virtio-net.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/qemu/hw/virtio-net.c b/qemu/hw/virtio-net.c
index 2e57e5a..3a39c8f 100644
--- a/qemu/hw/virtio-net.c
+++ b/qemu/hw/virtio-net.c
@@ -26,7 +26,7 @@
#define VIRTIO_NET_F_MAC 5
#define VIRTIO_NET_F_GS0 6

-#define TX_TIMER_INTERVAL (1000 / 500)
+#define TX_TIMER_INTERVAL 250000 /* 250 us */

/* The config defining mac address (6 bytes) */
struct virtio_net_config
--
1.5.4.1