Woran liegt es, dass mit der ELSA AirLancer ISA-11 nur Datenraten von 20Kb/s beim Internetzugang erreicht werden?
April 7th, 2008 by matthias
Situation: Gegeben ist ein DSL-Router mit fli4l-2.1.5 und drei ISA-Netzwerkkarten. Eine Karte ist mit dem DSL-Modem verbunden, eine mit einem kabelgebundenen Netzwerk und eine mit einem Wireless LAN. Letztere ist eine ELSA AirLancer ISA-11, d.h. eine MC-11 in einem mitgelieferten originalen ISA-Adapter.
Problem: Mit eingebundener WLAN-Karte beträgt die Downloadgeschwindigkeit im kabelgebundenen Netzwerk und im WLAN mit wget nur 20KB/s, nach einem “/usr/sbin/cardctl eject 0″ im kabelgebundenen Netzwerk jedoch 90 KB/s. An den Status-LEDs der Ethernet-Netzwerkkarte kann man beobachten, dass der Datentransfer etwa für die Hälfte der Zeit unterbrochen ist. Ähnliches gilt für die Status-LEDs der WLAN-Karte.
Woran es nicht liegt:
- Dies gilt sowohl wenn im BIOS die Interruptvergabe auf Auto oder auf Manual eingestellt wurde.
- Versuche, im BIOS alle IRQs auf ISA/PnP zu stellen außer denen, die für die anderen beiden Netzwerkkarten gebraucht werden (d.i. IRQ 3 und 5).
- Vermutung: der Treiber der WLAN-Karte erzeugt soviel Systemlast, dass der Prozessor gleichzeitig nur noch 20KB/s Datentransfer durch Routing bewältigen kann. Diese Systemlast wird nicht unbedingt in normalen Auslastungsanzeigen wie top angezeigt. Dort ist mit »System« nämlich nur die CPU-Last von systemnahen Prozessen gemeint, nicht jedoch die vom Kernel selbst. Mit der Interruptvergabe kann es eigentlich nichts zu tun haben, denn an den Interrupts der ISA-Karte ändert sich nichts wenn eine PCMCIA-Karte eingefügt wird. Es ist außerdem bekannt, dass für das Routing mindestens ein Pentium-I-Rechner benötigt wird. Viel Spielraum wird also nicht bleiben. Wenn es an Systemlast liegt, dann unabhängig davon ob die WLAN-Karte sendet oder nicht, denn bereits beim Einschieben in den DSL-Router besteht ja dieses Problem. Mit cat /proc/interrupts auf dem DSL-Router zeigt sich, dass das Modul orinoco_cs jede Sekunde etwas 20 Interrupts auslöst. Natürlich nur, wenn die Karte eingefügt ist. Das weist darauf hin, dass tatsächlich CPU-Last das Problem ist. Dem widerspricht, dass bei einer Analyse von cat /proc/uptime fast die gesamte CPU-Zeit für die idle task verwendet wird, selbst während eines Downloads mit der WLAN-Karte. Vgl. auch cat /proc/stat. Die 20 Interrupts der WLAN-Karte in jeder Sekunde sind also unproblematisch.
- Vermutung: Die 20 Interrupts der WLAN-Karte in jeder Sekunde bedeuten eine Auslastung des ISA-Bus, nicht der CPU.
- Es kann nicht an BIOS-Einstellungen liegen, da es mit den aktuellen EInstellungen möglich war.
- Versuche, eine Ethernet-PCMCIA-Karte im DSL-Router einzurichten. Wenn die Geschwindigkeit normal ist, liegt es nicht am PCMCIA-Controller sondern am Treiber der WLAN-Karte oder an der Betriebsart der WLAN-Karte (Buslast durch zu viele Interrupts o.ä.).
- Versuche, die PCI-11 in Joachims Rechner einzurichten. Wenn die Geschwindigkeit hier schnell ist, liegt es vermutlich an Buslast auf dem ISA-Bus.
- Erprobe die Übertragungsrate in einem Modus, in dem die MC-11 eingefügt ist aber keine Interrupts ausgelöst werden.
- Gibt es weitere relevante BIOS-Einstellungen?
- Hilft es, PCI-Ethernet-Karten statt ISA-Ethernet-Karten zu verwenden? Wenn das Problem an einer Überlastung des ISA-Bus liegt, könnte das die beste Lösung sein. Denn dann ist der PCMCIA-Controller die einzige ISA-Karte!
Woran es vermutlich liegt:
Überlastung des ISA-Busses durch drei ISA-Netzwerkkarten. Vielleicht würde das Problem behoben, wenn nur die AirLancer ISA-11 eine ISA-Netzwerkkarte ist, die anderen beiden jedoch PCI-Netzwerkkarten.
Posted in Suse Linux |