LAN not working after update 42.1 -> 42.2; RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller

The other day I did an upgrade installation from 42.1 to 42.2. The process was a bit rugged as I had to do the upgrade 3 times until the system was finding no more packages to upgrade and was finally able to boot up 42.2. Things run smooth by now, except for one annoying network problem:

  • The system (Notebook Acer Aspire E5-575G-55NS) has built in WiFi and standard LAN adapter.
  • With 42.1, the LAN was working, WiFi no way. I read that this is connected to the Kernel version, so I decided to do the upgrade to 42.2.
  • Now with 42.2, it’s the opposite ;-| WiFi works flawlessly, LAN not at all. The strange thing is, that during the update the system was fetching updated packages via LAN.
    03:00.0 Network controller [0280]: Qualcomm Atheros Device [168c:0042] (rev 31)
    Subsystem: Lite-On Communications Inc Device [11ad:08a6]
    Kernel driver in use: ath10k_pci
    Kernel modules: ath10k_pci

    04:00.1 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 12)
    Subsystem: Acer Incorporated [ALI] Device [1025:1094]
    Kernel modules: r8169
  • I tried both NetworkManager and wicked, no avail.

/sbin/lspci says:

03:00.0 Network controller [0280]: Qualcomm Atheros Device [168c:0042] (rev 31)
    Subsystem: Lite-On Communications Inc Device [11ad:08a6]
    Kernel driver in use: ath10k_pci
    Kernel modules: ath10k_pci
--
04:00.1 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 12)
    Subsystem: Acer Incorporated [ALI] Device [1025:1094]
    Kernel modules: r8169

What do I have to do in order to get the Kernel driver for the Ethernet controller working?

Thanx a lot for pointing me in the right direction :wink:

tuxEvangelist

With an ethernet cable connected, what is reported by the following?

ip link

Is there an ethernet device node present?

If using wicked, do you have a valid configuration? Check /etc/sysconfig/network/ifcfg-eth0

ip link with ethernet cable connected looks like this:

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
    link/ether 74:df:bf:97:bc:67 brd ff:ff:ff:ff:ff:ff

When switching to wicked, I cannot configure the Ethernet Controller at all, it says:

RTL8111/8168/8411 PCI Express Gigabit Ethernet ControllerBusID : 0000:04:00.1

Konfiguration der Netzwerkkarte nicht möglich, weil das Kernel-Gerät (eth0, wlan0) nicht verfügbar ist. Dies wird zumeist durch fehlende Firmware (für WLAN-Geräte) verursacht. Zu Einzelheiten s. die dmesg-Ausgabe.
(Rought translation: Configuration of the network adapter is not possible, because the Kernel device (eth0, wlan0) is not available. Mostly this is caused by missing firmware (for WiFi devices). For details see output of dmesg.)

I’ve checked dmesg, but I couldn’t get any further clues from there.

As a result (I suppose) /etc/sysconfig/network/ifcfg-eth0 is not existing:


# l
insgesamt 76
drwxr-xr-x 6 root root  4096 30. Mai 20:09 ./
drwxr-xr-x 5 root root  4096  2. Jun 22:27 ../
-rw-r--r-- 1 root root  9696 30. Mai 15:48 config
-rw-r--r-- 1 root root 11464 30. Mai 15:50 dhcp
-rw------- 1 root root   147 15. Mai 18:10 ifcfg-lo
-rw-r--r-- 1 root root 21738  7. Okt 2016  ifcfg.template
drwxr-xr-x 2 root root  4096 30. Mai 14:54 if-down.d/
drwxr-xr-x 2 root root  4096 30. Mai 15:48 if-up.d/
drwx------ 2 root root  4096  7. Okt 2016  providers/
drwxr-xr-x 2 root root  4096 30. Mai 15:50 scripts/

Please post:

grep -i 'blacklist r8169' /etc/modprobe.d/*
zypper lr -d
zypper se -si r816

Yes, good call. :slight_smile:

OK, let’s see:

# grep -i 'blacklist r8169' /etc/modprobe.d/*
/etc/modprobe.d/50-r8168-blacklist.conf:blacklist r8169


# zypper lr -d
Die Repository-Prioritäten sind ohne Effekt. Alle aktivierten Repositorys teilen sich die gleiche Priorität.

#  | Alias                           | Name                                                    | Aktiviert | GPG-Überprüfung | Aktualisierung | Priorität | Typ    | URI                                                                      | Dienst
---+---------------------------------+---------------------------------------------------------+-----------+-----------------+----------------+-----------+--------+--------------------------------------------------------------------------+-------
 1 | download.opensuse.org-non-oss   | Haupt-Repository (NON-OSS)                              | Ja        | (r ) Ja         | Ja             |   99      | yast2  | http://download.opensuse.org/distribution/leap/42.2/repo/non-oss/        |       
 2 | download.opensuse.org-non-oss_1 | Aktualisierungs-Repository (Nicht-Open-Source-Software) | Ja        | (r ) Ja         | Ja             |   99      | rpm-md | http://download.opensuse.org/update/leap/42.2/non-oss/                   |       
 3 | download.opensuse.org-oss       | Haupt-Repository (OSS)                                  | Ja        | (r ) Ja         | Ja             |   99      | yast2  | http://download.opensuse.org/distribution/leap/42.2/repo/oss/            |       
 4 | download.opensuse.org-oss_1     | Hauptaktualisierungs-Repository                         | Ja        | (r ) Ja         | Ja             |   99      | rpm-md | http://download.opensuse.org/update/leap/42.2/oss                        |       
 5 | openSUSE-42.2-0                 | openSUSE-42.2-0                                         | Nein      | ----            | ----           |   99      | yast2  | cd:///?devices=/dev/disk/by-id/ata-HL-DT-ST_DVDRAM_GUE1N_KXCG5KA0225     |       
 6 | opensuse-guide.org-repo         | Libdvdcss Repository                                    | Ja        | (r ) Ja         | Ja             |   99      | rpm-md | http://opensuse-guide.org/repo/openSUSE_Leap_42.2/                       |       
 7 | packman.inode.at-suse           | Packman Repository                                      | Ja        | (r ) Ja         | Ja             |   99      | rpm-md | http://packman.inode.at/suse/openSUSE_Leap_42.2/                         |       
 8 | repo-debug                      | openSUSE-Leap-42.2-Debug                                | Nein      | ----            | ----           |   99      | yast2  | http://download.opensuse.org/debug/distribution/leap/42.2/repo/oss/      |       
 9 | repo-debug-non-oss              | openSUSE-Leap-42.2-Debug-Non-Oss                        | Nein      | ----            | ----           |   99      | yast2  | http://download.opensuse.org/debug/distribution/leap/42.2/repo/non-oss/  |       
10 | repo-debug-update               | openSUSE-Leap-42.2-Update-Debug                         | Nein      | ----            | ----           |   99      | rpm-md | http://download.opensuse.org/debug/update/leap/42.2/oss/                 |       
11 | repo-debug-update-non-oss       | openSUSE-Leap-42.2-Update-Debug-Non-Oss                 | Nein      | ----            | ----           |   99      | rpm-md | http://download.opensuse.org/debug/update/leap/42.2/non-oss/             |       
12 | repo-source                     | openSUSE-Leap-42.2-Source                               | Nein      | ----            | ----           |   99      | yast2  | http://download.opensuse.org/source/distribution/leap/42.2/repo/oss/     |       
13 | repo-source-non-oss             | openSUSE-Leap-42.2-Source-Non-Oss                       | Nein      | ----            | ----           |   99      | yast2  | http://download.opensuse.org/source/distribution/leap/42.2/repo/non-oss/ | 


# zypper se -si r816
Metadaten von Repository 'Packman Repository' abrufen .................[fertig]
Cache für Repository 'Packman Repository' erzeugen ....................[fertig]
Repository-Daten werden geladen...
Installierte Pakete werden gelesen...

S | Name  | Typ   | Version       | Arch   | Repository    
--+-------+-------+---------------+--------+---------------
i | r8168 | Paket | 8.043.02-21.1 | x86_64 | (Systempakete)

Uhu… that’s interesting. Shouldn’t that be r8169?

That confirms that the r8169 kernel module is blacklisted due to the fact that you installed the ‘r8168’ package. Any reason you did so?

Am Sun, 04 Jun 2017 09:56:02 GMT
schrieb tuxEvangelist <tuxEvangelist@no-mx.forums.microfocus.com>:

> Sauerland;2825234 Wrote:
> > Please post:
> > >
> Code:
> --------------------
> > > grep -i ‘blacklist r8169’ /etc/modprobe.d/*
> --------------------
> > >
> > >
> Code:
> --------------------
> > > zypper lr -d
> --------------------
> > >
> > >
> Code:
> --------------------
> > > zypper se -si r816
> --------------------
> > >
>
> OK, let’s see:
>
>
> Code:
> --------------------
> # grep -i ‘blacklist r8169’ /etc/modprobe.d/*
> /etc/modprobe.d/50-r8168-blacklist.conf:blacklist r8169
>
>
> --------------------
>
>
>
> Code:
> --------------------
> # zypper lr -d
> Die Repository-Prioritäten sind ohne Effekt. Alle aktivierten Repositorys
> teilen sich die gleiche Priorität.
> # | Alias |
> Name | Aktiviert |
> GPG-Überprüfung | Aktualisierung | Priorität | Typ |
> URI |
> Dienst
> —±--------------------------------±--------------------------------------------------------±----------±----------------±---------------±----------±-------±-------------------------------------------------------------------------±------
> 1 | download.opensuse.org-non-oss | Haupt-Repository
> (NON-OSS) | Ja | (r ) Ja |
> Ja | 99 | yast2 |
> http://download.opensuse.org/distribution/leap/42.2/repo/non-oss/ | 2
> | download.opensuse.org-non-oss_1 | Aktualisierungs-Repository
> (Nicht-Open-Source-Software) | Ja | (r ) Ja | Ja
> | 99 | rpm-md |
> http://download.opensuse.org/update/leap/42.2/non-oss/ | 3
> | download.opensuse.org-oss | Haupt-Repository
> (OSS) | Ja | (r ) Ja |
> Ja | 99 | yast2 |
> http://download.opensuse.org/distribution/leap/42.2/repo/oss/ | 4
> | download.opensuse.org-oss_1 |
> Hauptaktualisierungs-Repository | Ja | (r )
> Ja | Ja | 99 | rpm-md |
> http://download.opensuse.org/update/leap/42.2/oss | 5
> | openSUSE-42.2-0 |
> openSUSE-42.2-0 | Nein |
> ---- | ---- | 99 | yast2 |
> cd:///?devices=/dev/disk/by-id/ata-HL-DT-ST_DVDRAM_GUE1N_KXCG5KA0225 | 6
> | opensuse-guide.org-repo | Libdvdcss
> Repository | Ja | (r ) Ja |
> Ja | 99 | rpm-md |
> http://opensuse-guide.org/repo/openSUSE_Leap_42.2/ | 7
> | packman.inode.at-suse | Packman
> Repository | Ja | (r ) Ja
> | Ja | 99 | rpm-md |
> http://packman.inode.at/suse/openSUSE_Leap_42.2/ | 8
> | repo-debug |
> openSUSE-Leap-42.2-Debug | Nein |
> ---- | ---- | 99 | yast2 |
> http://download.opensuse.org/debug/distribution/leap/42.2/repo/oss/ | 9
> | repo-debug-non-oss |
> openSUSE-Leap-42.2-Debug-Non-Oss | Nein |
> ---- | ---- | 99 | yast2 |
> http://download.opensuse.org/debug/distribution/leap/42.2/repo/non-oss/ | 10
> | repo-debug-update |
> openSUSE-Leap-42.2-Update-Debug | Nein |
> ---- | ---- | 99 | rpm-md |
> http://download.opensuse.org/debug/update/leap/42.2/oss/ | 11
> | repo-debug-update-non-oss |
> openSUSE-Leap-42.2-Update-Debug-Non-Oss | Nein |
> ---- | ---- | 99 | rpm-md |
> http://download.opensuse.org/debug/update/leap/42.2/non-oss/ | 12
> | repo-source |
> openSUSE-Leap-42.2-Source | Nein |
> ---- | ---- | 99 | yast2 |
> http://download.opensuse.org/source/distribution/leap/42.2/repo/oss/ | 13
> | repo-source-non-oss |
> openSUSE-Leap-42.2-Source-Non-Oss | Nein |
> ---- | ---- | 99 | yast2 |
> http://download.opensuse.org/source/distribution/leap/42.2/repo/non-oss/ |
> --------------------
>
>
>
> Code:
> --------------------
> # zypper se -si r816
> Metadaten von Repository ‘Packman Repository’
> abrufen …[fertig] Cache für Repository ‘Packman Repository’
> erzeugen …[fertig] Repository-Daten werden geladen…
> Installierte Pakete werden gelesen…
>
> S | Name | Typ | Version | Arch | Repository
> --±------±------±--------------±-------±--------------
> i | r8168 | Paket | 8.043.02-21.1 | x86_64 | (Systempakete)
>
> --------------------
>
>
>
> Uhu… that’s interesting. Shouldn’t that be r8169?
>
>

  1. run: /sbin/modprobe r8169

Your card should be working now.

To clean things up.

  1. run; zypper rm r8168

  2. run: mkinitrd

(all as root, of course)

  1. reboot

AK


Never attribute to malice that which can be adequately explained by stupidity.
(R.J. Hanlon)

Hoooray!!!

Works flawlessly now, I tested it also after the reboot.

Unfortunately I can’t see at the moment what the origin of the trouble was, so just a short summary of mine:

  • I did the upgrade from 42.1. to 42.2 via the DVD, before that I made sure that I had all latest updates from 42.1 on the machine. 42.1 was working like a charm, except for WiFi adapter not working.
  • After the upgrade finished, the machine was booting up 42.2, but not reaching the graphical login. It was somehow stuck in the green boot screen with the three dots below. After waiting quite a while I shut down and repeated the upgrade process. The upgrade process found several packages that still had to be upgraded, so I followed that suggestion - but same result as before. I did the same a third time, and then I finally got to the graphical login screen. All the time the machine was connected only via Ethernet, not via WiFi. I also saw that during the update it was downloading packages from the repos, not only using those from the DVD.
  • So I logged in and found that WiFi worked (what I wanted), but Ethernet no longer (something I definitely NOT wanted).
  • If I understood your solution right, the Kernel driver for r8169 got somehow blacklisted, something that I surely did not do actively by myself…

Well, still IT is full of miracles, but then again, everything is feasible with the support of a forum like this.

A big THANKS!!! to all of you.
#:wink: tuxEvangelist

Am Sun, 04 Jun 2017 12:26:01 GMT
schrieb tuxEvangelist <tuxEvangelist@no-mx.forums.microfocus.com>:

> - So I logged in and found that WiFi worked (what I wanted), but
> Ethernet no longer (something I definitely NOT wanted).
> - If I understood your solution right, the Kernel driver for r8169 got
> somehow blacklisted, something that I surely did not do actively by
> myself…

Actually, you did.

Let me speculate how things happened:

  • You installed 42.1 and (for some reason) decided to use the r8168 packages
    (maybe from Sauerland’s repo?) for LAN

  • This installed two (sic!) packages

r8168-kmp-SOMETHING (most likely SOMETHING=“default”)

AND

r8168

containing a few text files which amongst other things blacklisted r8169 kernel
module.

The reason for this is simple. Realtek releases three different source code
packages for their more or less recent cards.

  • r8169 for Gigabit PCI devices

  • r8168 for Gigabit PCIE (!) devices

  • r8101 for 100Mbit PCIE devices

The resulting drivers are called r8169.ko, r8168.ko and r8101.ko, while the
in-kernel driver r8169.ko is a combined driver covering the three above
(which is a good idea as they share a lot of code).

So you see the problem, first there would be a name collision (r8169.ko) for
one of the drivers (which is bad enough as the “r8169.ko” from Realtek only
covers very few devices) and if you choose one of r8101.ko or r8168.ko there is
another more problem, as you now have two drivers for the same device which
is a loud call for trouble.

So the packager of the r8168-RPMs you installed did something pretty simple and
smart.

She/he added a dependency to all r8168-kmp packages which “automagically” pulled
in the second package “r8168” with some text files that blacklist the in-kernel
driver.

Due to this little trick you install another driver and rpm/zypper take care of
of the rest.

So far, so good, and now what “went wrong”.

When updating the system from 42.1 to 42.2 the old r8168-kmp package was removed
as the r8168-kmp package was built for the kernel of 42.1 (4.1.X) while 42.2
has a newer kernel (4.4.x) and the driver would not work with that one.

But the small package containing the text files that blacklisted r8169 are not
incompatible with the new kernel, they are just some configuration, so that
package “survived” the upgrade to 42.2, the blacklisting of r8169 was still
there and as you didn’t have a compatible r8168.ko for 4.4.x, no driver was
loaded.

However, blacklisting only disables automatic loading of a module, the
modprobe command loaded the driver r8169.ko manually and your device “came to
life”.

After removing the r8168 package the blacklisting rule was gone from your file
system, and the final run of mkinitrd was just to be sure to also remove a copy
of that file inside the initial ramdisk (which I strongly suspect there was
one).

Moral of the story:

After upgrading to a new system version, always look for “left-overs” (which
is why Sauerland asked for the commands in his answer, they exactly show you
those).

AK


Never attribute to malice that which can be adequately explained by stupidity.
(R.J. Hanlon)

Always glad to learn something new :wink:

Thanx!

#:wink: tuxEvangelist