[Barrelfish-users] [Barrelfish] Barrelfish networking and the rtl8029 driver

Andrew Baumann Andrew.Baumann at microsoft.com
Thu Jan 27 18:47:11 CET 2011


Hi Georgios,

> All three virtualization options available
> to me (Qemu, Vmware and Virtualbox) emulate a single network chipset for
> which there is a driver included in my snapshot and that is rtl8029. However,
> trying to build the driver has resulted in compilation errors which I do not
> really know how I should treat. After going through the source of the driver
> I've come to the conclusion that it is incomplete as there are data types being
> used that are not defined anywhere else in Barrelfish; I've relied on grep to
> verify this though. I include the GCC output at the end. Is it possible to
> somehow acquire the full version of the driver?

The bad news is that the rtl8029 driver has bit-rotted and hasn't compiled in a long time, as you've discovered, and the e1000n driver doesn't work with the version of the e1000 which is emulated by Qemu. As a result, we don't currently have a version of Barrelfish which runs with networking inside a VM environment -- we test networking on real hardware with newer e1000 cards.

Fixing both drivers has been on our TODO list for some time, but not high enough that it's received anyone's attention. It's hard for me to guess how much work would be involved. In the case of the rtl and tulip drivers, these were written for a model where the driver ran linked together with the network stack and application. The e1000n driver now runs in a separate domain and communicates with its clients over IDC channels, so there is a moderate amount of refactoring work needed to separate the driver-independent IDC code from the actual hardware driver, moving that to a library that can be used by all NIC drivers, and then porting the rtl8029 (and tulip) drivers to the new API.

> What about the emulated
> e1000 chipsets: 82540EM, 82543GC and 82545EM? How easy would it be to
> extend the e1000n driver to support them?

In the case of e1000, it's mainly a matter of reading the hardware specs, understanding the differences, and implementing them, probably in the existing driver. This ought to be straightforward, but with hardware involved it's always hard to tell where the unforseen problems lie.

> Finally, it would really help to
> know what to expect to see as output when a supported adapter is found by
> the PCI module and how addressing works inside Barrelfish.

We don't yet automatically load drivers based on PCI discovery, but the e1000 driver will print out the MAC address if it successfully initialises the card. I'm not sure what you mean by "how addressing works inside Barrelfish".

Cheers,
Andrew



More information about the Barrelfish-users mailing list