[gPXE] Legacy UNDI PXE driver and GPXE integration.

Marty Connor mdc at etherboot.org
Thu Jan 7 20:33:07 EST 2010


On 1/7/10 7:06 PM, Sivakumar Subramani wrote:
> Hi Marty,
> 
> We have vendor-specific UNDI ROM driver for our x3100 10GbE NIC, that
> works well with undionly.kpxe.

Hello Siva,

I think I am beginning to understand.  I was confused because I think
what you have is a PXE option ROM that contains a board-specific device
driver for your x3100 10Gbe NIC.

What you currently have in your card's option ROM is a proprietary
version of what gPXE is.  It can be replaced with gPXE.  A number of
10GBe vendors ship gPXE as their PXE option ROM now because they get PXE
compatibility plus SAN and HTTP booting, DNS, etc.

The device driver part or your current option ROM is what we would call
a gPXE native device driver, and uses a different API than Linux kernel
drivers and your proprietary device driver.

gPXE can chainload undionly.kpxe just like your current PXE option ROM,
since gPXE is PXE, plus additional features.

> However we would like to develop complete gPXE ROM and put it on the
> card, rather than use chainloading with undionly.kpxe. 

I'm sure your customers would like this very much as well :)

> We understand
> that conventional way of doing that is via a NIC driver similar to the
> ones in gpxe\src\drivers\net, but since we already have working UNDI
> driver that works with undioly.kpxe (as well as with other proprietary
> PXE code), we wonder if it is possible to compile it with gpxe files to
> produce a complete PXE ROM?

I don't believe this is going to be possible.  The code you are now
using is integrated as part of a common proprietary PXE platform.

gPXE is licensed as GPLv2.  We cannot accept code that is under an
incompatible license.

The good news is that it's not generally too hard to convert a Linux
kernel driver to a gPXE driver.  We have a number of them in our tree.

I have converted quite a few myself and have mentored students and
volunteers on how to do so.

A person skilled in driver writing might take 2 weeks, depending on the
availability of documentation, and the complexity of the driver.

The gPXE API is much simpler than the kernel API, so lots of code can be
removed, and the 7 core functions required to implement the gPXE network
driver API are very straightforward.

I have looked at what I believe is the source code of your driver:


http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=tree;f=drivers/net/vxge

and I don't immediately see any reason why converting it to a gPXE would
require extraordinary effort.  There appear to be only 2 variations of
the card supported:

static struct pci_device_id vxge_id_table[] __devinitdata = {
         {PCI_VENDOR_ID_S2IO, PCI_DEVICE_ID_TITAN_WIN, PCI_ANY_ID,
         PCI_ANY_ID},
         {PCI_VENDOR_ID_S2IO, PCI_DEVICE_ID_TITAN_UNI, PCI_ANY_ID,
         PCI_ANY_ID},
         {0}
};

Please feel free to email me privately if you have questions about
finding someone to help you with a Linux driver port.  As you can see
from our driver source code we have worked successfully with many
companies to enable them to create gPXE drivers for their NICs.

> Please let me know your view.

I hope the information in this message is helpful.  Please ask if you
have additional questions.

> Thanks,
> ~Siva

With Best Regards,

Marty

> -----Original Message-----
> From: Sivakumar Subramani 
> Sent: Thursday, January 07, 2010 2:25 PM
> To: 'Marty Connor'
> Subject: RE: [gPXE] Legacy UNDI PXE driver and GPXE integration.
> 
> Hi Marty,
> 
> Thanks for quick reply. 
> 
> Currently we have PXE driver for NIC which is based on EMBOOT UNDI SDK.
> I started porting our Linux driver to get it compiled with GPXE source
> code.
> Instead of that is it possible to integrate our PXE driver that we
> already( which complaint with EMBOOT UNDI pxe stack ) to work with GPXE.
> If so, How to integrate our current PXE driver with GPXE?
> 
> Sorry, if I am confusing you again.
> 
> Thanks,
> ~Siva
> 
> -----Original Message-----
> From: Marty Connor [mailto:mdc at etherboot.org] 
> Sent: Thursday, January 07, 2010 1:34 PM
> To: Sivakumar Subramani
> Cc: gpxe at etherboot.org
> Subject: Re: [gPXE] Legacy UNDI PXE driver and GPXE integration.
> 
>> On 1/7/10 4:26 PM, Sivakumar Subramani wrote:
>>> Hi,
>>> We have UNDI pxe driver working. We want to integrate it gPXE source
>>> code. I read about PXE chainloading. Our UNDI driver works fine with
> PXE
>>> chain loading. Instead of the around about, I want to directly
> integrate
>>> the UNDI driver with GPXE. Is that possible?  Is there any link (or)
>>> documentation that explains about it?
>>>
>>> Thanks,
>>> ~Sivakumar S
> 
> Hello Sivakumar,
> 
> I really am not sure what you are offering.  gPXE already has an UNDI
> driver called "undionly.kpxe".  Perhaps I misunderstand what you are
> describing.
> 
> It would help me if you could describe exactly what your software does.
> 
> Is it intended to be loaded by gPXE?
> 
> Thanks for explaining in more detail.
> 
> Thanks and Regards,
> 
> Marty
> 
> 



More information about the gPXE mailing list