iPXE - Open Source Boot Firmware

[virtio] Replace virtio-net with native iPXE driver
authorStefan Hajnoczi <stefanha@gmail.com>
Fri, 2 Jul 2010 18:15:47 +0000 (19:15 +0100)
committerMichael Brown <mcb30@ipxe.org>
Sat, 17 Jul 2010 16:07:14 +0000 (17:07 +0100)
commite4419ff97cdc6cf69c251ef1f768274f0a71c9d0
treed079c3c2255de618df612a7c6841a3c3ae81e80f
parent232c208882047210b0054d3d939ae5d45ab214f7
[virtio] Replace virtio-net with native iPXE driver

This patch adds a native iPXE 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 iPXE.  The legacy
   driver kept global state and caused issues in virtual machines with
   more than one virtio-net device.

2. Faster downloads.  The native iPXE 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>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/bus/virtio-ring.c
src/drivers/net/virtio-net.c
src/include/ipxe/errfile.h
src/include/ipxe/virtio-pci.h
src/include/ipxe/virtio-ring.h