# e100 / eth0 busted after kernel recompile for alsa

## phoeniks

A few months ago, after finally rectifying issues with sound and alsa, I just ended up creating more problems with my wired ethernet. Everything still sort of "worked", so fixing it wasn't dire until I had time to put into it, like I do now. Here's the situation; Gateway laptop, stage 3 2005.0 install using genkernel (but manual recompile for alsa) ,wired ethernet port using the e100 module, wireless intel centrino 2200BG  using wpa_supplicant and ipw2200. Before this problem appeared, the wired port was set up as eth0 and the wireless as eth1.  The initial install used genkernel, but in order to accommodate alsa, I had to manually recompile. In the end, the sound works, e100 seems to be broken as all hell, and the wireless setup thinks its eth0 despite the fact that its not defined as such anywhere. I can connect to an AP using 

```

wpa_supplicant -B -ieth0 -c /etc/wpa_supplicant.conf -Dipw

```

I just checked the kernel configuration through make menuconfig in /usr/src/linux--2.6.11-gentoo-r3, and ethernet (10 or 100Mbit) is built into the kernel as is Intel PRO/100+ support.

DMESG reported nothing about e100, but that makes sense if its no longer a module. I don't remember exactly what I tried before, but I did try all sorts of kernel configurations. I do remember trying to emerge e100 again and having it blow up in my face (the emerge never completed successfully). e100 is still listed as a module in /etc/modules.autoload.d/kernel-2.6 (and high on the list, above all the ipw2200 stuff ; i had a problem before with ipw taking over eth0 because it was above e100) I'm not sure if this is creating a conflict of sorts.

Set off any flags for anyone? If there's any more info anyone needs, please let me know. Until then , Thanks in advance.

----------

## NeddySeagoon

phoeniks,

Please post your 

```
lspci
```

output so we can check things out from the beginning.

Also, what interfaces do you have in

```
ifconfig -a
```

Just the names will do.

----------

## phoeniks

lspci

```
0000:00:00.0 Host bridge: Intel Corp. 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

0000:00:00.1 System peripheral: Intel Corp. 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

0000:00:00.3 System peripheral: Intel Corp. 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)

0000:00:02.0 VGA compatible controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02)

0000:00:02.1 Display controller: Intel Corp. 82852/855GM Integrated Graphics Device (rev 02)

0000:00:1d.0 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)

0000:00:1d.1 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)

0000:00:1d.2 USB Controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)

0000:00:1d.7 USB Controller: Intel Corp. 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)

0000:00:1e.0 PCI bridge: Intel Corp. 82801 Mobile PCI Bridge (rev 81)

0000:00:1f.0 ISA bridge: Intel Corp. 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)

0000:00:1f.1 IDE interface: Intel Corp. 82801DBM (ICH4-M) IDE Controller (rev 01)

0000:00:1f.3 SMBus: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)

0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)

0000:00:1f.6 Modem: Intel Corp. 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)

0000:02:03.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)

0000:02:03.1 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ac)

0000:02:03.2 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 04)

0000:02:07.0 Network controller: Intel Corp. PRO/Wireless 2200BG (rev 05)

0000:02:08.0 Ethernet controller: Intel Corp. 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 81)

```

and ifconfig -a  lists eth0, eth1, lo , and sit0

----------

## NeddySeagoon

phoeniks,

Ah, you have firewire - is the eth1394 module loaded or built into the kernel ?

Its possible that real Ethernet has been bumped to eth1.

Look with lsmod and  

```
grep 1394 /usr/src/linux/.config
```

Does eth0 have a strange HWAddress in ifconfig -a? 

Real network cards have a 48 bit (6 byte) MAC address.  Like this 

```
eth0      Link encap:Ethernet  HWaddr 00:50:BF:6D:3F:CA
```

----------

## phoeniks

I must say, that's a pretty astute pickup. lsmod produced eth1394 (probably the culprit if i'm following your logic correctly) ohci1394 and ieee1394. The kernel .config grep shows all 1394 options set to "=m" or (save for two =y) . I'm assuming this means module just as it does in menuconfig. Also, you were right on with the hw address, which reads

```
eth1      Link encap:UNSPEC  HWaddr 00-E0-B8-02-01-00-C0-5E-00-00-00-00-00-00-00-00

```

where to from here?

----------

## NeddySeagoon

phoeniks,

=M means module.

You either need to stop eth1394 from loading at all, make it load after your real network module or configure your network to use eth1.

You will need to control the load order one day for sound or ethernet. May as well do it now.

The modules listed in /etc/modules.autolaod.d/kernel-2.6 are loaded first, in the order in which they are listed.

Later on, /etc/modules.conf and coldplug load more modules, if required.

List your real NIC at the top of /etc/modules.autolaod.d/kernel-2.6, just beneath the comments and example.

You can put eth1394 in on a line below if you want, so you are in control.

After your next reboot eth0 will be your real network card.

To test, modprobe -r both modules, modprobe your network module and run 

```
/etc/init.d/neth.eth0 restart 
```

with eth1394 out of the way, it should just work.

----------

## phoeniks

ok , where to start. 

in my modules.autoload.d file eth1394 was never above e100 (alredey close to the top). My Intel PRO/100+ support was built directly into the kernel, so the placement of e100 probably didn't even matter. To rectify this, I recompiled the kernel with Intel PRO/100+ support as a module. Reboot and the situation is still the same : wireless still takes eth0. after a grep of dmesg output, I remembered why this was a pain in the first place. The e100 module started acting funny after the recompile for alsa support. No idea what happened. this is the dmesg outuput

```
e100: Unknown symbol mii_ethtool_sset

e100: Unknown symbol mii_link_ok

e100: Unknown symbol mii_check_link

e100: Unknown symbol mii_nway_restart

e100: Unknown symbol generic_mii_ioctl

e100: Unknown symbol mii_ethtool_gset

```

now e100 is one above the mii module, but that only happened after your suggestions. The same thing was happening a few months ago when it was below it.

----------

## phoeniks

emerge --update e100 fails pretty terribly as well. any way i can get the e100 module off the live cd to replace the one on my box right now? Even if I can, will it even do anything?

----------

## NeddySeagoon

phoeniks,

You can't use the module from the liveCD. the version magic will not matach your own kernel.

It looks like you have a problem with the mii module.

If its needed by a module you have asked to load, then modprobe will load it first, since it satifies module dependancies.

Use the module in your own kernel - that will fix the dependancies for sure. Maybe the emerge doesn't ?

Do you know how to build a single module with doing a whole kernel build and install ?

----------

## phoeniks

 *NeddySeagoon wrote:*   

> phoeniks,
> 
> Use the module in your own kernel - that will fix the dependancies for sure. Maybe the emerge doesn't ?
> 
> Do you know how to build a single module with doing a whole kernel build and install ?

 

Not really sure what you mean by the first quoted sentence, and no, I don't know how build single modules. Google hasn't turned anything up yet.

----------

## NeddySeagoon

phoeniks,

You said you did 

```
emerge --update e100
```

I'm not completely sure what that does. It  amy or may not rebuild the module interdependancies file when it installs the kernel module. In any case, using 3rd party kernel modoules is generally a bad idea. They drop out every update.

Your kernel has a e100 module, its part of the kernel tree you just need to build it. There is no need to do a whole kernel build either, with all the risk of getting the content of /boot wrong. For your e100 module proceed as follows:-

```
cd /usr/src/linux

make menuconfig 
```

that gets you into the kernel source tree and opens the configuration utility. Navigate the following menus

```
Device Drivers

-> Network device support

   -> Ethernet (10 or 100Mbit)
```

Be sure that 

```
Generic Media Independent Interface device support
```

is set as either [*] (built in) or [M] (Module). If its, [ ], change it to  [M]

There are two modules that will suit your card, if you want to make them both modules [M] thats OK, they can then be modprobed seperately to see which one works best. They are

```
EtherExpressPro/100 support (eepro100, original Becker driver)     Which is modprobed as eepro100

Intel(R) PRO/100+ support   Which is modprobed as e100
```

If they are [Y] or [M] leave them alone, although both being [Y] is bad news.

Providing they are both [ ] set them both to [M]

Exit the configure program and save your changes.

Do

```
make modules

make modules_install 
```

to compile and install your new modules. There is no reboot required.

```
/etc/init.d/net.eth0 stop
```

stops eth0 in case it was started

```
modprobe -r e100
```

to remove the module that was installed when you booted.

```
modprobe e100
```

to load the one you just made.

```
/etc/init.d/net.eth0 start
```

attempts to start eth0 with your new module.

If its fails at any point, please say where are an quote the error message in full.

The end of dmesg can also be helpful.

----------

## phoeniks

```
FATAL: Error inserting e100 (/lib/modules/2.6.11-gentoo-r3/kernel/drivers/net/e100.ko): Unknown symbol in module, or unknown parameter (see dmesg)
```

This is what I get when I try to modprobe either e100 or eepro100 (which I just added as a module). 

also, I've  seen references to this dm_get_table warning during compilations when trying to fix this problem. Wasn't sure if it had any baring.

```
*** Warning: "dm_table_get_size" [drivers/md/dm-snapshot.ko] undefined!

```

lastly, does it matter that I'm using the wireless connection on the box in question to correspond? Does this create a conflict when I'm trying to fix eth0?

----------

## NeddySeagoon

phoeniks,

The

```
*** Warning: "dm_table_get_size" [drivers/md/dm-snapshot.ko] undefined! 
```

indicates that one of the RAID modues for your kernel will not work. Its no related to ethernet.

What was at the end of demsg after the modprobe ?

What did you oahev to change in your kernek configuration ?

----------

## phoeniks

sorry, about that. That was kinda the whole point of the other post. at any rate, I got the same mii error messages for both eepro100 and e100.

```
e100: Unknown symbol mii_ethtool_sset

e100: Unknown symbol mii_link_ok

e100: Unknown symbol mii_check_link

e100: Unknown symbol mii_nway_restart

e100: Unknown symbol generic_mii_ioctl

e100: Unknown symbol mii_ethtool_gset

eepro100: Unknown symbol mii_ethtool_sset

eepro100: Unknown symbol mii_link_ok

eepro100: Unknown symbol mii_check_link

eepro100: Unknown symbol mii_nway_restart

eepro100: Unknown symbol mii_ethtool_gset

```

----------

## NeddySeagoon

phoeniks,

What do you get in dmesg if you 

```
modprobe mii
```

----------

## phoeniks

I get yelled at right off the bat trying to modprobe mii 

```
FATAL: Module mii not found.

```

dmesg didn't give me anything new after this, the last messages are still from eepro100 and e100. emerge -s mii returns only two listings: mii-diag and wmii.

----------

## NeddySeagoon

phoeniks,

You missed a step in my previous post then ...

 *Quote:*   

> Be sure that
> 
> Generic Media Independent Interface device support
> 
> is set as either [*] (built in) or [M] (Module). If its, [ ], change it to [M] 

 

Thats the mii module which your Ethernet kernel modules depend on for all the symbols with mii in their names.

Repeat the steps in that post to make the mii module.

----------

## phoeniks

that's the thing. I did check it and it was listed as built in 

```
<*>   Generic Media Independent Interface device support                                       
```

Should I recompile with it as a module?

----------

## NeddySeagoon

phoeniks,

You can but then you will have to do the compelte kernel build and install into /boot.

If its really built in it should be OK.

Have you had several goes at building and installing your kernel and either forgot to mount /boot,

or got the filename wrong in /boot?

The effect would be that you are not running the kernel you think you are.

Does 

```
uname -a
```

show the time and date you last did a full kernel compile and install ?

----------

## phoeniks

odd. I may not have been doing what I thought I was.

```
Linux tuxedo 2.6.11-gentoo-r3 #2 SMP Mon Aug 1 12:01:43 Local time zone must be set--see zic m i686 Intel(R) Pentium(R) M processor 1.50GHz GenuineIntel GNU/Linux

```

----------

## NeddySeagoon

phoeniks,

Your timezone setting is just a symbolic link in /etc/ for me its 

```
$ ls /etc/localtime -l

lrwxrwxrwx  1 root root 22 Dec  4  2004 /etc/localtime -> /usr/share/zoneinfo/GB
```

 Create the link for your timezone.

You have two places called /boot on your system. One is a directory on your root filesystem, which is what you see when the boot partition is not mounted there (ls /boot should be empty) and the boot partition, normally mounted at /boot that contains your kernels, ./grub and so on.

By defualt, Gentoo does not mount /boot. If you forget, your new kernel will go into the /boot directory on your root filesystem and grub won't see it.

The other common error to to get the kernel file name incorrect when you intended to overwrite an old kernel. In either case, you contine to boot an old kernel.

Its safer to give every kernel a new name and add boot blocks to grub.conf to boot the new kernel. Then :-

1. You know if something went wrong with the install - you get Error 15 from Grub

2. You can choose an old kernel from the menu - no harm done.

----------

## phoeniks

definitely something wrong. Error 15 from the new 2.6.12-gentoo-r10 kernel.

----------

## NeddySeagoon

phoeniks,

Post the contents of your grub.conf and the output of

```
ls -al /boot
```

for your boot partition.

You can looks at a mult-kernel install here http://62.3.120.141/Gentoo/ There are no initrd files sinceI don't use genkernel but the ideas is exactly the same for initrds as for kernels

----------

## phoeniks

ls -al

```
total 13808

drwxr-xr-x   4 root root    1024 Sep 20 11:03 .

drwxr-xr-x  20 root root     520 Aug  2 13:43 ..

lrwxrwxrwx   1 root root      27 Sep 20 11:03 System.map -> System.map-2.6.11-gentoo-r3

-rw-r--r--   1 root root  768506 Sep 20 11:03 System.map-2.6.11-gentoo-r3

-rw-r--r--   1 root root  768506 Sep 14 09:52 System.map-2.6.11-gentoo-r3.old

-rw-r--r--   1 root root  767088 Aug  2 10:14 System.map-genkernel-x86-2.6.11-gentoo-r3

lrwxrwxrwx   1 root root      31 Sep 20 11:03 System.map.old -> System.map-2.6.11-gentoo-r3.old

lrwxrwxrwx   1 root root       1 Jun 25 12:29 boot -> .

-rw-r--r--   1 root root     512 Aug  1 10:39 boot.0300

-rw-r--r--   1 root root 1696473 Aug  2 11:35 bzImage

lrwxrwxrwx   1 root root      23 Sep 20 11:03 config -> config-2.6.11-gentoo-r3

-rw-r--r--   1 root root   39379 Sep 20 11:03 config-2.6.11-gentoo-r3

-rw-r--r--   1 root root   39390 Sep 14 09:52 config-2.6.11-gentoo-r3.old

lrwxrwxrwx   1 root root      27 Sep 20 11:03 config.old -> config-2.6.11-gentoo-r3.old

drwxr-xr-x   2 root root    1024 Sep 20 12:02 grub

-rw-r--r--   1 root root 1693415 Aug  2 10:26 initramfs-genkernel-x86-2.6.11-gentoo-r3

-rw-r--r--   1 root root 1864076 Aug  1 11:32 initrd-2.6.11-gentoo-r3

-rw-r--r--   1 root root 1646800 Aug  1 12:02 kernel-2.6.11-gentoo-r3

-rw-r--r--   1 root root 1568196 Aug  2 10:14 kernel-genkernel-x86-2.6.11-gentoo-r3

drwx------   2 root root   12288 Jun 25 12:17 lost+found

-rw-------   1 root root   48640 Aug  1 10:39 map

lrwxrwxrwx   1 root root      24 Sep 20 11:03 vmlinuz -> vmlinuz-2.6.11-gentoo-r3

-rw-r--r--   1 root root 1572029 Sep 20 11:03 vmlinuz-2.6.11-gentoo-r3

-rw-r--r--   1 root root 1572074 Sep 14 09:52 vmlinuz-2.6.11-gentoo-r3.old

lrwxrwxrwx   1 root root      28 Sep 20 11:03 vmlinuz.old -> vmlinuz-2.6.11-gentoo-r3.old

```

grub.conf

```
default 0

timeout 30

splashimage=(hd0,0)/grub/splash.xpm.gz

title=Gentoo Linux 2.6.11-r3

root (hd0,0)

kernel /kernel-2.6.11-gentoo-r3 root=/dev/hda3

title=Gentoo linux-2.6.12-gentoo-r10

root (hd0,0)

kernel /kernel-2.6.12-gentoo-r10 root=/dev/hda3

```

----------

## NeddySeagoon

phoeniks,

grub is trying to load the file called 

```
kernel-2.6.12-gentoo-r10
```

from your /boot but its not there.

There are no kernel-2.6.12-gentoo-r10 related files in your /boot. That suggests that you didn't mount it before you did the copy.

Did you forget to update your symbolic link /usr/src/linux, then do everything right but in the old (2.6.11-gentoo-r3) kernel tree?

That would explain todays date (Sep 20) on your most recent kernel.

What does 

```
uname -a
```

suggest from the time and date and your knowledge of your last build of 2.6.11-gentoo-r3 ?

Do 

```
ls -al /usr/src/linux
```

to check the symlink.

----------

## phoeniks

that's probably got something to do with it. The dates from the two commands don't match, nor are any of them for today. This is after :

```
make && make modules_install

mount /boot  (yelled at me and said hda1 was already mounted)

make install
```

didn't update any symlinks. didn't know which file to update or how.

----------

