Intel Corporation 82578DC Gigabit NIC support

Chris Turner c.turner at
Sat Jun 4 14:18:16 PDT 2011

On Wed, Jun 01, 2011 at 03:14:46PM +0530, Siju George wrote:
> Where do I put the PCI IDs in this file?
> O should I copy the FreeBSD driver files for this chipset and then add
> those files here?

Really, with all due respect to Sephe as he is the guru of this driver, 
I don't think this is igb - 
but instead is em, as outlined in my mail from 2011-05-31 - 

Our e1000/em contains what apppears to be the needed items for this card:       
em0 at pci0:0:25:0:        class=0x020000 card=0x80001025 chip=0x10f08086          
rev=0x06 hdr=0x00                                                               
e1000_api.c:    case E1000_DEV_ID_PCH_D_HV_DC:                                  
e1000_hw.h:#define E1000_DEV_ID_PCH_D_HV_DC              0x10F0                 
if_em.c:        { 0x8086, E1000_DEV_ID_PCH_D_HV_DC,     PCI_ANY_ID, PCI_ANY_ID, 

the 'pcidevs' output is your FreeBSD output - which probes as em0
rather than igb0, and as can be seen from the chip id - chip=0x10f08086 -
that is, chip 0x10F0 from vendor 0x8086 (Intel) - and as can be seen
from the 'grep' output, the related device ID confirugration is already 
referenced in our 'unbuilt' em copy (if_em.c, etc)
which resides in src/sys/dev/netif/e1000, as well as the freebsd dev/e1000
if_em.c , etc.

Again, the e1000/em copy is not built, but instead an older copy is built under
the path /src/sys/dev/netif/em.  

I'd again suggest first doing a manual build of /src/sys/dev/netif/e1000/em -
on a already built source tree:

  # cd /src/sys/dev/netif/e1000/em
  # wmake
  # ls if_em.ko

You can then test this 'if_em.ko' instead of the 'default' one -
but will need to build a kernel *without* the 'built' em (netif/em)
in order to be able to load this one (or will need to change the files 
so it has a different driver name).

If this happens to work - not counting on it becuase we have several DF 
specific fixes in the dev/netif/em copy, though I do know it compiles,
and alot of the code is modularized into common files used by the 
functional igb driver - so there is a chance -
from there it will be a matter of deciding how to merge the two 'em' copies
in the tree.

Alternately you could try to merge in the stuff from netif/e1000/em
into the dev/netif/em - but I think this might be a 'backwards' approach.

again I didn't dig enough in this driver or the history to be 100% sure
of all of this - but based on the file contents, the device id & probe 
you provided from your FreeBSD system and a limited check of our tree
this does appear to be the case.

Again I defer to Sephe if I'm completely missing something here, which
of course is possible.

Cheers & Good Luck,

- Chris

More information about the Kernel mailing list