[Etherboot-developers] UNDI driver
Brought to you by:
marty_connor,
stefanhajnoczi
|
From: Michael B. <mb...@fe...> - 2003-05-19 15:55:45
|
There is now a very-nearly working UNDI driver in 5.1 CVS under arch/i386/drivers/net. This driver allows Etherboot to work with any NIC for which an UNDI option ROM is provided. The driver does not require Etherboot to be started by chaining from PXE; it will scan for an UNDI ROM and initialise it fully from scratch. I have been testing by booting from floppy, which works fine. I imagine that PXE-chaining would also work, although I haven't tested it yet. Note that you cannot yet use the Etherboot UNDI driver to actually boot a kernel; although all the routines are working and the driver can get a DHCP lease and start downloading a file, it dies instantly because the downloaded file stomps right over the PXE UNDI driver. In order to fix this, I need to sort out a method for allocating base memory in Etherboot. Question 1: Is there currently any method for allocating base memory? I need space for three structures: 1. The PXE UNDI driver code segment (up to 64K, probably 16K) 2. The PXE UNDI driver data segment (up to 64K, probably 16K) 3. Temporary buffers that I can stick data into while calling the real-mode UNDI API (about 2-3K). I'm currently (as a quick "test-the-driver" method) dumping these at pseudo-random places in base memory, which works fine up to the point that a kernel image loads... :-) Question 2: I have an assembly routine _undi_call that is a wrapper around the real-mode UNDI API calls. I've placed this in pcbios.S but haven't yet checked it in because it seems like a bad place to put it; it would end up being compiled in to every Etherboot image, not just the UNDI one. Ideally, I'd like to create a file undi_wrapper.S in arch/i386/drivers/net and have this linked in. I suspect I'm going to have to edit genrules.pl to achieve this, unless anyone can suggest a quick and easy method? Michael |