[Eisfair] IP Zuordung der Netzwerkkarten nach letztem Kernelupdate getauscht

Marcus Roeckrath marcus.roeckrath at gmx.de
So Nov 6 10:30:54 CET 2016


Hallo Nils, hallo Holger,

Nils Lange wrote:

> jetzt ist das Problem wieder aufgetreten, allerdings während des
> Betriebs!

Das ist mir unerklärlich, wie sich die Konfiguration um Betrieb ändern kann.

Das es da irgendwie noch hakt, kann ich nach einem Test bestätigen.

Mein Server hat eine Onboard 3COM (skge) und eine PCI-Intel (e100)
Netzwerkkarte.

Beim Boot wird die skge, bislang nie benutzt und normalerweise blacklisted,
zuerst erkannt.

Habe in der Base-Konfiguration die Intel als eth0 die 3Com als eth1
definiert (über die Macs); udev-Regeln wurden korrekt erstellt.

Drei Boots ging alles gut, beim vierten war die 3Com plötzlich eth0.

In dmesg sieht das dann so aus:

1. Korrekte Abarbeitung der udev-Regeln:

[    0.000000] pci 0000:02:05.0: [10b7:1700] type 0 class 0x000200
[    0.000000] pci 0000:02:05.0: reg 10: [mem 0xf7eec000-0xf7eeffff]
[    0.000000] pci 0000:02:05.0: reg 14: [io  0xd800-0xd8ff]
[    0.000000] pci 0000:02:05.0: supports D1 D2
[    0.000000] pci 0000:02:05.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.000000] pci 0000:02:05.0: PME# disabled
[    0.000000] skge 0000:02:05.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[    0.000000] skge 0000:02:05.0: eth0: addr 01:0b:5e:e7:26:ef
[    0.000000] skge 0000:02:05.0: eth1: enabling interface

Die zuerst erkannte Karte ist zwar zunächst eth0 wird aber dann zu eth1,
womit für die nachgeladene e100 eth0 frei ist:

[    0.000000] pci 0000:02:0b.0: [8086:1229] type 0 class 0x000200
[    0.000000] pci 0000:02:0b.0: reg 10: [mem 0xf7eeb000-0xf7eebfff]
[    0.000000] pci 0000:02:0b.0: reg 14: [io  0xdf00-0xdf3f]
[    0.000000] pci 0000:02:0b.0: reg 18: [mem 0xf7ec0000-0xf7edffff]
[    0.000000] pci 0000:02:0b.0: reg 30: [mem 0xf7eb0000-0xf7ebffff pref]
[    0.000000] pci 0000:02:0b.0: supports D1 D2
[    0.000000] pci 0000:02:0b.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.000000] pci 0000:02:0b.0: PME# disabled
[    0.000000] pci 0000:02:0b.0: Firmware left e100 interrupts enabled;
disabling
[    0.000000] e100 0000:02:0b.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    0.000000] e100 0000:02:0b.0: PME# disabled
[    0.000000] e100 0000:02:0b.0: eth0: addr 0xf7eeb000, irq 23, MAC addr
00:20:f4:12:90:46
[    0.000000] e100 0000:02:0b.0: eth0: NIC Link is Up 100 Mbps Full Duplex

2. Keine Berücksichtigung der udev-Regeln:

[    0.000000] pci 0000:02:05.0: [10b7:1700] type 0 class 0x000200
[    0.000000] pci 0000:02:05.0: reg 10: [mem 0xf7eec000-0xf7eeffff]
[    0.000000] pci 0000:02:05.0: reg 14: [io  0xd800-0xd8ff]
[    0.000000] pci 0000:02:05.0: supports D1 D2
[    0.000000] pci 0000:02:05.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.000000] pci 0000:02:05.0: PME# disabled
[    0.000000] skge 0000:02:05.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22
[    0.000000] skge 0000:02:05.0: eth0: addr 01:0b:5e:e7:26:ef
[    0.000000] skge 0000:02:05.0: eth0: enabling interface

Die zuerst erkannte Karte ist eth0 und bleibt es, womit für die nachgeladene
e100 eth0 nicht mehr frei ist und sie somit zu eth1 wird:

[    0.000000] pci 0000:02:0b.0: [8086:1229] type 0 class 0x000200
[    0.000000] pci 0000:02:0b.0: reg 10: [mem 0xf7eeb000-0xf7eebfff]
[    0.000000] pci 0000:02:0b.0: reg 14: [io  0xdf00-0xdf3f]
[    0.000000] pci 0000:02:0b.0: reg 18: [mem 0xf7ec0000-0xf7edffff]
[    0.000000] pci 0000:02:0b.0: reg 30: [mem 0xf7eb0000-0xf7ebffff pref]
[    0.000000] pci 0000:02:0b.0: supports D1 D2
[    0.000000] pci 0000:02:0b.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.000000] pci 0000:02:0b.0: PME# disabled
[    0.000000] pci 0000:02:0b.0: Firmware left e100 interrupts enabled;
disabling
[    0.000000] e100 0000:02:0b.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23
[    0.000000] e100 0000:02:0b.0: PME# disabled
[    0.000000] e100 0000:02:0b.0: eth1: addr 0xf7eeb000, irq 23, MAC addr
00:20:f4:12:90:46
[    0.000000] e100 0000:02:0b.0: eth1: NIC Link is Up 100 Mbps Full Duplex

Timingproblem?

Wenn der erste Treiber zu lange braucht, sich zu initialisieren, greift der
sofort dahinter geladene e100 sich zunächst eth1.

eth0 ist noch blockiert, so dass der e100 nicht auf eth0 umgeswitcht werden
kann; gleichermaßen ist eth1 blockiert, so dass auch der skge nicht auf
eth1 switchen kann.

Wenn das so ist, darf der nächste Netzwerkkartentreiber erst dann loslegen,
wenn der vorige fertig ist.

Aber das ist jetzt reine Spekulation von mir, da die Interna an dieser
Stelle für mich komplett unbekannt sind.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair