Upgrading to Intel EM 6.6.6 Kernel - Custom Kernel or …?

  • Hey,

    For the past couple of days, I've been trying to get the 6.6.6 em drivers on pfsense.

    I've tried using the developer ISO to bootstrap and do a custom recompile of the kernel but what I noticed is that with the em-6.6.6.tar.gz drivers, they don't exactly work right with the 6.x series kernels even though its stated in the readme file of the em drivers.

    Interesting enough, the patch provided by Intel is incomplete! Giving it the wrong makefile for /sys/modules/em, all the way to missing entries in /conf/files to support their new shared source architecture.

    I kept getting undefined function but I figure this is due to the way the drivers are patched. So I decided to try something else.

    version 6.6.6 is available in the RELENG_6_3 branch so I did a CVS checkout in hopes to us it with a 6.2 system. Unfortunately something else is broken but at least it got passed the em compile. I can always fix this error if my next try fails.

    Third time.

    I figure, lets start off fresh and recompile a kernel with a fresh install of freebsd 6.2 stable so I decided to google for the pfsense kernel config. Incidentally, I found a link to Sullrich's own home path (http://www.pfsense.com/~sullrich/) that had a kernel without the em drivers and he also had the 6.6.6 em modules compiled.

    So I decided to try this kernel on a 1.2 RC3 install. It boots fine except it doesn't locate any em devices as expected because its no longer built into the kernel. I then tried to load the module by editing /boot/loader.conf to include if_em_load="yes" as recommended by Intel but doesn't seem to load it. Hm. Next I tried to boot off the pfsense install cd and login as a single user to see if I can mount the RC3 install and do a kldload manually. Success! It detected all three NICs (em0-2).

    For the life of me, I cannot get this module to work using the normal loader settings, anyone have any suggestions?

    The reason I need version 6.6.6 is because the 82566DM/G/etc/ is supported in FreeBSD 7 or well, that version of em.

    This is driving me insane!

    Edit: Spelling

  • Well after some work, I managed to get the latest em's compiled in. This works for 1.2 RC3 or at least until pfSense moves to REL 7.

    If anybody needs new Intel NIC support, this is the kernel to use.


    Rename your /boot dir. and untar the archive above.

    Edit: Link for prosperity.

  • Did you compile the driver into the kernel or is this a KLM?

  • The tarball I posted has the em drivers compiled into the kernel.

  • @jewps:

    The tarball I posted has the em drivers compiled into the kernel.

    What all did you do?  I tried to get them compiled in to no avail.  Adjused all the files to use the relative paths, etc and the linker still failed at the end.

  • I spent many days on the same problem as well only to realize the 6.6.6 provided by Intel doesn't work with the stock 6.x kernel.

    On the other hand I noticed in the 6_3 branch, this em version is already commited so I stole the em drives from there. Even then, some of the #ifdef's in 6_3 won't compile even if you use FreeBSD 6.3 so some modification was required there.

    Its really really stupid the way that Intel provides this driver. For one thing, the kern.patch they provided doesn't even patch the /conf/files correctly. Not to mention the Makefile in /modules/em/ doesn't even include one of the C files. Hence I took the em source from the already fixed FreeBSD branch.

    If you like, I can diff up my source with the pfSense development source so you can apply it to the next release. The base system used was actually a 1.2 Beta bootstrapped to 6.2.

  • It would be great if you could provide a source diff so we can build it. I don't think we want to put it in the default kernel, but having it available for those who need it would be great.

  • Here you go.


    Hope it helps somebody.

    • Ying

  • Thanks for sharing.  I also agree about Intels driver.  It could be handled a bit better but all in all I am just happy that Jack works on FreeBSD.

  • Yeah ditto.

    I guess I've always expected Intel to be a little better with their driver support. They're great with Windows NIC drivers as well as Linux. This is after all, my first time using their drivers for FreeBSD.

    Thanks for such a great product. It's the least I can do for this project.

  • The site http://ying.apdir.com seems to be down for quite a while now. Is there another location where I can download this custom kernel?
    Is it working with the final 1.2 release?

  • I'm looking for the same files as hertig.

  • Hey Guys,

    I apologize, the company I worked for migrated over some web servers and my own site there isn't a priority so I haven't had time to restore it yet.

    I can put it back up but the down side is I no longer have the em diff patch I sent to sullrich, but I do have a kernel compatiable with 1.2 release of pfSense, which I just tested today. I'll Upload that again and edit this post with a link.

    http://ying.apdir.com/pfsense/em_patch.diff.tar.bz2 <– Diff
    http://ying.apdir.com/pfsense/pfsense-custom-em-boot.tar.bz2 <-- Full Compiled Kernel

    I found the VMWare image I used to create them so I can put that up as well. Please just don't ask me to do this again because I completely forgot how to compile a BSD kernel heh...

    Good Luck.

  • I'm trying to get an Intel Pro/1000 GT Quad working with 1.2. Would this be the fix I'm looking for? If it is, I would really apppreciate some "I'm stupid, so hold my hand" instructions on how to implement this. I'm just not very good with FreeBSD.


  • Try testing a 1.2 / FreeBSD 6.3 image: http://cvs.pfsense.org/~sullrich/testing_images/6/FreeBSD_RELENG_6_3/pfSense_RELENG_1_2/

    However, this is not really supported ATM.

  • Thank you very much for the link. I downloaded it, but I'm not quite sure how to use it. It's not an ISO or IMG like I'm used to downloading. Sorry to be so ignorant on this.

  • download pfSense.iso.gz and unpack it ( i use 7-zip)

  • Thanks for the help. I got the image to work by renaming it to ISO instead of extracting it. Boots fine, but unfortunately it still doesn't detect the Intel Pro/1000 GT quad card. It is still only detecting the 4 Intel GB NICs on the motherboard. I can use it like that for now, as 4 ports are all I really need, but it would be nice to get the extra 4 ports working for expansion. I really don't plan on needing to touch this pfSense box for at least a year once it's running based off previous experiences with pfSense. If anyone has some more ideas, I'd love to hear them, otherwise I'll find another use for the quad gig card.

Log in to reply