Auto negotiation
Kürzlich sind mir nach einem Reboot folgende Log-Messages auf einem Server aufgefallen:
eth0: Transmit error, Tx status register 82. Probably a duplex mismatch. \ See Documentation/networking/vortex.txt Flags; bus-master 1, dirty 6819588(4) current 6819588(4) Transmit list 00000000 vs. f6a25300.
Das schöne an Fehlermeldungen unter Linux ist, dass sie oft sogar gleich einen Lösungsansatz mitliefern, wie hier also einen "duplex mismatch".
Zuerst war ich doch etwas verwundert, wie sowas in Zeiten von auto negotiation überhaupt noch passieren kann. Ich habe dann ein bißchen mit mii-diag geguckt (es ist eine 3com Karte, sonst hätte man ggf. auch ethtool nehmen können) wodran es liegen könnte.
Der Switch beim Provider hatte auto negotiation disabled und hat als Geschwindigkeit 100baseTX angegeben, laut Rücksprache mit dem Provider ist der Switch im Full Duplex Modus. Die Netzwerkkarte versteht diverse Modi, welche uns hier interessieren sind: 100baseTX, 100baseTX-HD, 100baseTX-FD.
Wie es aussieht hat die Netzwerkkarte also die 100BaseTX vom Switch als
Half-Duplex gedeutet, statt dem Full Duplex Mode - warum auch immer. Ob der
Fehler auf Seiten des Switches oder der Karte liegt müsste man noch mal im
Detail untersuchen, fürs erste genügt eine Lösung für das Problem.
Ein mii-diag eth0 -F 100baseTX-FD
hat das Problem behoben und nun sind
beide Seiten glücklich und laufen im 100mBit Full Duplex Modus.
Nachtrag: Gerade musste ich den Fix nochmal anwenden, diesmal mit mii-tool,
die Kommandozeile sah so aus: mii-tool eth0 -F 100baseTx-FD
.
Danke! Hat mir auch geholfen.
Hatte das Problem beim RedHatIPCop.
http://www.ipadd.de/binary.html
gruß
Carsten
Geschrieben von carsten 2 Monate, 3 Wochen nach Veröffentlichung des Blog-Eintrags am 15. Mai 2007, 14:26. Antworten