diff options
author | Rusty Russell <rusty@rustcorp.com.au> | 2008-08-26 00:19:27 -0500 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-08-26 00:19:28 +1000 |
commit | 1dc3e3bcbfe335843ec938bfdddb34d10f4dd278 (patch) | |
tree | 8666189f7a285c8e4c6512784dff39971fefa30c /Documentation/lguest | |
parent | bf2002967775cbb233876d51ff94e8daa7e77858 (diff) | |
download | op-kernel-dev-1dc3e3bcbfe335843ec938bfdddb34d10f4dd278.zip op-kernel-dev-1dc3e3bcbfe335843ec938bfdddb34d10f4dd278.tar.gz |
lguest: update commentry
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'Documentation/lguest')
-rw-r--r-- | Documentation/lguest/lguest.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c index 6554148..7228369 100644 --- a/Documentation/lguest/lguest.c +++ b/Documentation/lguest/lguest.c @@ -895,6 +895,9 @@ static void handle_console_output(int fd, struct virtqueue *vq, bool timeout) } } +/* This is called when we no longer want to hear about Guest changes to a + * virtqueue. This is more efficient in high-traffic cases, but it means we + * have to set a timer to check if any more changes have occurred. */ static void block_vq(struct virtqueue *vq) { struct itimerval itm; @@ -939,6 +942,11 @@ static void handle_net_output(int fd, struct virtqueue *vq, bool timeout) if (!timeout && num) block_vq(vq); + /* We never quite know how long should we wait before we check the + * queue again for more packets. We start at 500 microseconds, and if + * we get fewer packets than last time, we assume we made the timeout + * too small and increase it by 10 microseconds. Otherwise, we drop it + * by one microsecond every time. It seems to work well enough. */ if (timeout) { if (num < last_timeout_num) timeout_usec += 10; |