看板 DFBSD_kernel 關於我們 聯絡資訊
On Wed, Jun 1, 2011 at 7:08 AM, Sepherosa Ziehau <sepherosa@gmail.com> 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. urrently I > don't have enough time to put the whole thing into shape; the hardware > related bits will finally go into netif/ig_hal. 㗎owever, 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 /usr/src/sys/dev/netif/e1000/igb dfly-bkpsrv# ls Makefile 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 e1000_82543.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 ..ifndef BUILDING_WITH_KERNEL opt_polling.h: echo '#define DEVICE_POLLING 1' > ${.OBJDIR}/${.TARGET} ..endif ..include <bsd.kmod.mk> 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@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 0x0020 sys/dev/e1000/e1000_defines.h:#define I82578_EPSCR_DOWNSHIFT_COUNTER_MASK 0x001C 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 Thanks