[virtio] Replace virtio-net with native gPXE driver
authorStefan Hajnoczi <stefanha@gmail.com>
Fri, 2 Jul 2010 18:15:47 +0000 (19:15 +0100)
committerStefan Hajnoczi <stefanha@gmail.com>
Sat, 17 Jul 2010 14:13:06 +0000 (15:13 +0100)
commit180dcf4363bf1d8889a2398a4944e94ca150b311
treeeaf44525891f8ad0f90854691c6f3ea3b4f09f3e
parent199f3c650d369878180892f5c507d19dcdadfe50
[virtio] Replace virtio-net with native gPXE driver

This patch adds a native gPXE virtio-net driver and removes the legacy
Etherboot virtio-net driver.  The main reasons for doing this are:

1. Multiple virtio-net NICs are now supported by gPXE.  The legacy
   driver kept global state and caused issues in virtual machines with
   more than one virtio-net device.

2. Faster downloads.  The native gPXE driver downloads 100 MB over HTTP
   in 12s, the legacy Etherboot driver in 37s.  This simple benchmark
   uses KVM with tap networking and the Python SimpleHTTPServer both
   running on the same host.

Changes to core virtio code reduce vring descriptors to 256 (QEMU uses
128 for virtio-blk and 256 for virtio-net) and change the opaque token
from u16 to void*.  Lowering the descriptor count reduces memory
consumption.  The void* opaque token change makes driver code simpler.

Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>
src/drivers/bus/virtio-ring.c
src/drivers/net/virtio-net.c
src/include/gpxe/errfile.h
src/include/gpxe/virtio-pci.h
src/include/gpxe/virtio-ring.h