Intel Corporation 82578DC Gigabit NIC support

Siju George at
Wed Jun 1 02:47:28 PDT 2011

On Wed, Jun 1, 2011 at 7:08 AM, Sepherosa Ziehau <sepherosa at> wrote:
> Heh, netif/ig_hal (it was actually e1000 hardware related code from
> Intel) was added before I took a short break from dfly in 2009, while
> netif/e1000 code was added later to support igb only.  Currently I
> don't have enough time to put the whole thing into shape; the hardware
> related bits will finally go into netif/ig_hal.  However, as I have
> suggested, if you want 82578 to work, you probably need to change the
> stuffs under netif/e1000/igb instead of netif/em or netif/emx.

Now this is my first attempt at editing src :-)
so under igb there is only a Makefile

dfly-bkpsrv# cd igb
dfly-bkpsrv# pwd
dfly-bkpsrv# ls
dfly-bkpsrv# cat Makefile
. PATH:  ${.CURDIR}/../../../../dev/netif/e1000

KMOD=   if_igb
SRCS=   if_igb.c
SRCS+=  e1000_80003es2lan.c e1000_82540.c e1000_82541.c e1000_82542.c
SRCS+=  e1000_82571.c e1000_82575.c e1000_api.c e1000_ich8lan.c e1000_mac.c
SRCS+=  e1000_manage.c e1000_nvm.c e1000_osdep.c e1000_phy.c
SRCS+=  device_if.h bus_if.h pci_if.h
SRCS+=  opt_polling.h opt_ktr.h

        echo '#define DEVICE_POLLING 1' > ${.OBJDIR}/${.TARGET}
. endif

. include <>

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?

For FreeBSD the files is src are

sgeorge at icewalker:~/src$ grep -r "82578" sys
sys/dev/e1000/e1000_defines.h:#define I82578_E_PHY_ID 0x004DD040
sys/dev/e1000/e1000_defines.h:#define I82578_EPSCR_DOWNSHIFT_ENABLE
sys/dev/e1000/e1000_hw.h:	e1000_phy_82578,
sys/dev/e1000/e1000_phy.c:	if (phy->type == e1000_phy_82578) {
sys/dev/e1000/e1000_phy.c:		/* 82578 PHY - set the downshift count to 1x. */
sys/dev/e1000/e1000_phy.c:		phy_data |= I82578_EPSCR_DOWNSHIFT_ENABLE;
sys/dev/e1000/e1000_phy.c:		phy_data &= ~I82578_EPSCR_DOWNSHIFT_COUNTER_MASK;
sys/dev/e1000/e1000_phy.c:	case e1000_phy_82578:
sys/dev/e1000/e1000_phy.c:	case I82578_E_PHY_ID:
sys/dev/e1000/e1000_phy.c:		phy_type = e1000_phy_82578;
sys/dev/e1000/e1000_phy.c:	if ((hw->phy.type == e1000_phy_82578) &&
sys/dev/e1000/e1000_phy.c:	addr_reg = (hw->phy.type == e1000_phy_82578) ?
sys/dev/e1000/e1000_phy.c:	           I82578_ADDR_REG : I82577_ADDR_REG;
sys/dev/e1000/e1000_phy.c:	if (hw->phy.type != e1000_phy_82578)
sys/dev/e1000/e1000_ich8lan.c: * 82578DM Gigabit Network Connection
sys/dev/e1000/e1000_ich8lan.c: * 82578DC Gigabit Network Connection
sys/dev/e1000/e1000_ich8lan.c:	case e1000_phy_82578:
sys/dev/e1000/e1000_ich8lan.c:	if (hw->phy.type == e1000_phy_82578) {
sys/dev/e1000/e1000_ich8lan.c:		if (hw->phy.type == e1000_phy_82578) {
sys/dev/e1000/e1000_ich8lan.c:	    ((hw->phy.type == e1000_phy_82578)
&& (hw->phy.revision == 1))) {
sys/dev/e1000/e1000_ich8lan.c:	if (hw->phy.type == e1000_phy_82578) {
sys/dev/e1000/e1000_ich8lan.c:	 * The 82578 Rx buffer will stall if
wakeup is enabled in host and
sys/dev/e1000/e1000_ich8lan.c:	if (hw->phy.type == e1000_phy_82578) {
sys/dev/e1000/e1000_ich8lan.c:	if ((hw->phy.type == e1000_phy_82578) ||
sys/dev/e1000/e1000_ich8lan.c:	case e1000_phy_82578:
sys/dev/e1000/e1000_ich8lan.c:	if ((hw->phy.type == e1000_phy_82578) ||
sys/dev/e1000/e1000_phy.h:#define I82578_ADDR_REG


More information about the Kernel mailing list