Building latest e1000 driver against 2.6.10-ssi_3develsmp kernel fails

Isaac Colley <[email protected]>
Newsgroups gmane.linux.cluster.ssic.user
Message-ID <[email protected]>
Hello,

Does anyone know of instructions on how to successfully build the latest
Intel e1000 driver against the Fedora Core 3 2.6.10-ssi_3develsmp kernel
(or any thing else that will work)?

I am trying to PXE boot a node that uses the e1000 NIC drivers.
However, after retrieving and booting initrd, I get an error stating
"Could not find the NIC used to add this node to the cluster".  This is
because the e1000 driver (5.5.4-k2-NAPI) with the FC3
2.6.10-ssi_3develsmp kernel does not support my Intel PRO/1000 PL NIC.

I have followed the install document dilligently.  An e1000 alias has
been added to /etc/modprobe.conf and I have correctly done a
mkinird/ssi-ksync.  In fact, I mounted the initrd in /tftpboot and
verified the lib/e1000.ko module and the 'insmod e1000.ko' line in the
linuxrc script.

Here is my setup:
Distro:  Fedora Core 3
Kernel:  2.6.10-ssi_3develsmp
gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
glibc-2.3.3

The entry for the NIC in this version of /usr/share/hwdata/pci.ids does
not exist, but in a newer version of hwdata (e.g.
hwdata-0.200-1.fc7.noarch.rpm) would read:
109a 82573L Gigabit Ethernet Controller
	8086 109a PRO/1000 PL Network Connection

If I can get the driver compiled, I will hack the hwdata file manually
(because newer hwdata rpms required upgrading glibc).

So, I downloaded and tried to install the newest e1000 driver
(7.6.5-NAPI) from Intel. Using these steps:

rpm -i kernel-ssi-2.6.10-ssi_3devel.src.rpm
rpmbuild -tb e1000-7.6.5.tar.gz  (fails)

+ make -C src INSTALL_MOD_PATH=/var/tmp/e1000-7.6.5-root
MANDIR=/usr/share/man install
make: Entering directory `/usr/src/redhat/BUILD/e1000-7.6.5/src'
make -C /lib/modules/2.6.10-ssi_3develsmp/build
SUBDIRS=/usr/src/redhat/BUILD/e1000-7.6.5/src modules
make[1]: Entering directory `/lib/modules/2.6.10-ssi_3develsmp/build'
  CC [M]  /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.o
In file included from include/linux/module.h:10,
                 from /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.c:29:
include/linux/sched.h:38:33: cluster/synch_types.h: No such file or
directory
include/linux/sched.h:45:43: cluster/ssi/mosixll/mosixtask.h: No such
file or directory
In file included from include/linux/module.h:10,
                 from /usr/src/redhat/BUILD/e1000-7.6.5/src/e1000_main.c:29:
include/linux/sched.h:632: error: syntax error before "EVENT_T"
include/linux/sched.h:632: warning: no semicolon at end of struct or union
include/linux/sched.h:654: error: syntax error before ':' token
include/linux/sched.h:749: error: syntax error before '}' token
include/linux/sched.h: In function `process_group':
include/linux/sched.h:753: error: dereferencing pointer to incomplete type
include/linux/sched.h: In function `pid_alive':
...

It appears that the errors are coming from within the SSI modified
kernel headers (Maybe some gcc flags that are too strict?).

I tried to "make install" the e1000 drivers manually, and got the same
errors.  I even commented out the cluster/synch_types.h
cluster/ssi/mosixll/mosixtask.h include directives in sched.h, but still
got the "warning: no semicolon at end of struct or union" error/warning.

Finally, I tried to compile the module against a vanilla 2.6.10 from
kernel.org and force insmod to load it:
bunzip2 linux-2.6.10.tar.bz2
tar zxf linux-2.6.10.tar
ln -s /root/linux-2.6.10 /usr/src/linux
cd /root/e1000-7.6.5/src
  (edit the e1000 Makefile to use the headers in /usr/src/linux first)
make install
  (no errors!)
install -D -m 644 e1000.ko
/lib/modules/2.6.10-ssi_3develsmp/kernel/drivers/net/e1000/e1000.ko
mkinitrd --cfs -f /boot/initrd-2.6.10-ssi_3develsmp.img 2.6.10-ssi_3develsmp
ssi-ksync
zcat /tftpboot/initrd > /tmp/initrd.img
mount -o loop /tmp/initrd.img /mnt
cd /mnt
  (edit linuxrc to:
   insmod e1000.ko --force)
umount /mnt
gzip -9 /tmp/initrd.img
mv /tmp/initrd.img.gz /tftpboot/initrd
  (boot the PXE node...
   Fails insmod struct_module version mismatch
   "Could not find the NIC used to add this node to the cluster")

Sorry for being so painfully detailed, I have run out of ideas on how to
get my NIC recognized.  Any suggestions?

Thanks,
Isaac Colley
eSoft, Inc



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.