2.6.29 und forcedeth

28/03/2009 - 09:00 von Albert Zangerl | Report spam
Hallo allerseits!

Aus verschiedenen Gründen verwende ich gern den Vanilla-Kernel, im Moment
gerade 2.6.28.6.
Gestern wollte ich den neuen Kernel 2.6.29 installieren und bin an meinen
Netzwerkchips gescheitert.

Ich habe ein Asus M2N-SLI Motherboard mit dem Nvidia 560 Chipsatz. Darauf
sind zwei Netzwerkanschlüsse, die von lspci als nvidia MCP55
identifiziert werden.
Das Modul, das sich dafür zustàndig fühlt ist das als nicht gerade als
zuverlàssig bekannte forcedeth.
Allerdings hat das für mich immer funktioniert.

Ich habe den neuen Kernel auf die klassische Debian-Methode mit make-kpkg
gebaut und konnte ihn auch gleich starten.
Allerdings hatte ich kein Netz. Nach einigem rumprobieren merkte ich,
dass die LED am Router-Port dunkel war. Ethtool sagte mir auch, dass kein
Link da war. Auch das entladen und neu laden von forcedeth brachte keine
Besserung.

Da ich im Netz nach Informationen zu meinem Problem suchen wollte bootete
ich den alten Kernel. Allerdings blieben jetzt auch hier die LEDs am
Router dunkel. Das selbe Bild bei zwei Live-CDs (Knoppicillin und Ubuntu).
Auch nach dem deaktivieren und aktivieren der Netzwerkchips im BIOS trat
keine Änderung ein.

Ich dachte schon ich müsste noch schnell eine neue Netzwerkkarte kaufen,
aber ich konnte die Chips doch noch reaktivieren:
Dazu schaltete ich im BIOS die Funktion zum Booten übers Netz ein und
wàhlte im Boot-Menü diese Option aus. Dadurch leuchteten die LEDs am
Router wieder.

Zur Sicherheit habe ich nochmal den 2.6.29er gestartet, wieder das selbe
Bild.

Anschließend habe ich mir das Changelog zum 2.6.29-git1 Snapshot
angesehen und bemerkt, dass da einiges zu forcedeth aufgelistet ist.

Ich habe also die Kernel Quellen damit gepatcht und einen neuen Kernel
gebaut.

Die LEDs am Router blieben diesmal an, die Netzverbindung war allerdings
extrem unstabil und blieb höchstens ein paar Minuten bestehen.

Nun bin ich also wieder zurück zu meinem 2.6.28.6 Kernel, da funktioniert
wenigstens noch alles.

Ich habe bei bugzilla.kernel.org noch keinen Bugreport für dieses Problem
gefunden. Leider ist mein technisches Englisch nicht gut genug um selbst
einen Bugreport einzureichen, weiters wüsste ich auch nicht, welche
Logdateien (dmesg?) ich dafür angeben müsste.
Allerdings würde ich die Entwickler schon gerne wissen lassen, dass da
ein Fehler lauert.
Nicht, dass dann irgendwann auf Heise steht: Linux-Kernel zerstört
Netzwerkchips.

Habt ihr irgendwelche Tipps für mich oder eventuell schon das selbe
Problem beobachtet?

mfG,
A.
 

Lesen sie die antworten

#1 Roman Schreiber
28/03/2009 - 10:33 | Warnen spam
Albert Zangerl wrote:

Hallo allerseits!

Aus verschiedenen Gründen verwende ich gern den Vanilla-Kernel, im Moment
gerade 2.6.28.6.
Gestern wollte ich den neuen Kernel 2.6.29 installieren und bin an meinen
Netzwerkchips gescheitert.


...
zuverlàssig bekannte forcedeth.
Ich habe bei bugzilla.kernel.org noch keinen Bugreport für dieses Problem
gefunden. Leider ist mein technisches Englisch nicht gut genug um selbst


...

such mal auf der lkml, das problem ist bekannt und es wird sicher
bald ne stable version kommen (also 2.6.29.1)

alternativ, folgenden patch reverten:



gro: Fix legacy path napi_complete crash

On the legacy netif_rx path, I incorrectly tried to optimise
the napi_complete call by using __napi_complete before we reenable
IRQs. This simply doesn't work since we need to flush the held
GRO packets first.

This patch fixes it by doing the obvious thing of reenabling
IRQs first and then calling napi_complete.

Reported-by: Frank Blaschka
Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller


diff --git a/net/core/dev.c b/net/core/dev.c
index f112970..2565f6d 100644
a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2588,9 +2588,9 @@ static int process_backlog(struct napi_struct *napi,
int quota)
local_irq_disable();
skb = __skb_dequeue(&queue->input_pkt_queue);
if (!skb) {
- __napi_complete(napi);
local_irq_enable();
- break;
+ napi_complete(napi);
+ goto out;
}
local_irq_enable();

@@ -2599,6 +2599,7 @@ static int process_backlog(struct napi_struct *napi,
int quota)

napi_gro_flush(napi);

+out:
return work;
}

Ähnliche fragen