[ipxe-devel] [PATCH] [ixgbevf] Add ixgbevf driver

Bernhard Kohl bernhard.kohl at nsn.com
Mon Jan 14 10:38:06 UTC 2013

Robin Smidsrød <robin at ...> writes:

> On 11.01.2013 23:29, Bernhard Kohl wrote:
> > Robin Smidsrød <robin at ...> writes:
> > 
> >>
> >> On 09.01.2013 18:51, Bernhard Kohl wrote:
> >>> Am 13.12.2012 14:26, schrieb Bernhard Kohl:
> >>>> From: Hermann Huy <hermann.huy at ...>
> >>>>
> >>>> Driver for Intel 82599 based virtual functions.
> >>>>
> >>>> Based on Intel's open source driver ixgbevf-2.6.2, available at:
> >>>> http://sourceforge.net/projects/e1000
> >>>>
> >>>> Based on iPXE's igbvf driver, file igbvf_main.c.
> >>>>
> >>>> Signed-off-by: Hermann Huy <hermann.huy at ...>
> >>>> Signed-off-by: Bernhard Kohl <bernhard.kohl at ...>
> > 
> >>>>
> >>> Did anybody already look at this and 2 more patches
> >>> I posted on Dec. 12th?
> >>
> >> I always thought that the ixgbevf was already supported by the intel
> >> driver. Is it not? And if it is not, isn't it easier to tweak the intel
> >> driver to include the necessary configuration bits, or is it a
> >> completely different architecture?
> >>
> > Also Intel has separate Linux drivers for the physical (igb, ixgbe) and
> > virtual functions (igbvf, ixgbevf). Until now only the ixgbevf exists for
> > iPXE. The PF and VF drivers are rather different. So we followed the
> > approach as used for the existing drivers.
> iPXE also used this approach until March 2012, when Michael Brown
> reimplemented the driver for Intel cards to unify them into one driver.

But he did not add the igbvf driver, which is the VF for the 80576,
to the new unified intel.c.

> From what I recall this shrunk the driver from something like 35K to
> 3.5K. Did you try to modify that driver (intel.c) to support these
> additional features before you created a new iPXE driver based on the
> Linux source? If you haven't already tried that, I'm going to assume
> that _that_ is what is needed, not another "almost same as Intel"
> driver. Code size is paramount in iPXE. If the ixgbevf is similar in
> architecture to most other Intel cards, you might just need to tweak the
> init/reset parts to support these cards as well.

Yes, we looked at this, and we found that SR-IOV enabled NICs need
a couple of extensions compared to regular NICS. This would make the
unified intel.c much more complicated. Also Michael Brown did not
combine the igbvf to the intel.c

> What are the PCI IDs of
> the card(s) you're trying to include support for? And do you have a link
> to the datasheet for the card(s)?

The PCI IDs supported by the ixgbevf are:
8086:10ED (tested and in use in our lab environment)
8086:1515 (not tested due to lack of hardware)

The documentation of the VF is part of the 82599 docs:
Intel 82599 10 GbE Controller: Datasheet
Intel 82599 SR-IOV Driver Companion Guide

More information about the ipxe-devel mailing list