#337 e1000e 1.1.2 - compilation errors for kernel

e1000e (107)

We planned to buy some Intel PCI-E LAN cards for our routers on 2.4.34 kernel, and now I tried to compile drivers for 2.4 kernel - in README declared that driver will compile on 2.4.*. But I discovered that compatibility with old kernels was broken (at least, there is trouble in headers and definitions).
I tried to fix that, and now driver is compiled successfully, There is patch, looks dirty, but should work. I don't actually looks into kernel revision history to find where appears one functions and disappears other - because I need only to make driver for one kernel. It touches only definitions - so I expect that driver will work, if nothing else was broken. Currently I can't test it - I haven't hardware.
Patch is attached.


  • Andrew

  • hm, I am unable to reproduce any problem, x86_64, gcc 3.4,
    [jbrandeb@jbrandeb-mobl3 ~]$ cd e1000e-1.1.2
    [jbrandeb@jbrandeb-mobl3 e1000e-1.1.2]$ cd src
    [jbrandeb@jbrandeb-mobl3 src]$ make K_VERSION=2.4 CC=gcc34 KSRC=../../linux-2.4.34
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o netdev.o netdev.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o ethtool.o ethtool.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o param.o param.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_82571.o e1000_82571.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_ich8lan.o e1000_ich8lan.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_80003es2lan.o e1000_80003es2lan.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_mac.o e1000_mac.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_nvm.o e1000_nvm.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_phy.o e1000_phy.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o e1000_manage.o e1000_manage.c
    gcc34 -mcmodel=kernel -mno-red-zone -DDRIVER_E1000E -DDRIVER_NAME=e1000e -DDRIVER_NAME_CAPS=E1000E -DLINUX -DKERNEL -DMODULE -O2 -pipe -Wall -I../../linux-2.4.34/include -I. -DMODVERSIONS -DEXPORT_SYMTAB -include ../../linux-2.4.34/include/linux/modversions.h -DSMP -fno-strict-aliasing -c -o kcompat.o kcompat.c

    e1000e.o built for 2.4.34
    SMP Enabled

  • Andrew

    Hm... One part of trouble was in EXTRA_CFLAGS specified for make - this option overrides such one in makefile (that's quite strange - I can't specify target CPU for gcc); but I still have errors caused by hlist_ redefinitions. gcc is 3.3.3.
    My kernel is actually - in changelog of 2.4.34 revisions I don't saw mentions about any improvements - just usual bugfixes, so I decide that bug will be present on all 2.4.34 branch, but during comparision I found that list_
    in list.h in 2.4.34 were renamed to hlist_* in

  • moved to bugs tracker, the driver really should build on both as well as 2.4.34

  • Todd Fujinaka
    Todd Fujinaka

    • status: open --> closed
  • Todd Fujinaka
    Todd Fujinaka