[ltp] T61: ipw3945 speed limited to 256 kbit/s?

Richard Neill linux-thinkpad@linux-thinkpad.org
Thu, 09 Aug 2007 21:14:59 +0100


Marius Gedminas wrote:
> Yesterday I bought a Lenovo T61.  Today I'm about halfway through
> configuring Ubuntu Gutsy on it (pain pain pain).
> 
> The worst problem at the moment is wireless speed: it seems to be
> limited to 32 kilobytes per second.  Ouch.  iwconfig eth1 shows
> "Bit Rate:54 Mb/s".  The card is an Intel 3945ABG, ipw3945 version is
> 1.2.1mp, according to dmesg.
> 
> Any ideas?
> 

I haven't seen this specific thing before, but I've seen the same sort 
of general "it works 3 orders of magnitude too slow" problem in other 
cases. Some troubleshooting suggestions:

1)Eliminate hardware errors as the cause - try it either in Windows, or 
with Knoppix. Then, hopefully you know the hardware works. It should 
also eliminate signal-strength problems as a root cause.

2)What's the CPU load doing? Something like the KDE "System Monitor" 
taskbar applet is very useful here - it shows usage of RAM/CPU/SWAP, and 
now it also shows IOWait.

3)Packet errors? I had a recent case where we had what turned out to be 
a faulty network switch. Our ADSL (switched through this) was running at 
  < 512kB/sec on the Windows machines, but was running fine at 1MB/sec 
(full speed for that phone line) on the Linux ones. Turns out, the Linux 
ones were handling packet errors more gracefully. Anyway, look at 
ifconfig, and see this sections:

   RX packets:66026 errors:0 dropped:0 overruns:0 frame:0
   TX packets:66026 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:0
   RX bytes:53313548 (50.8 MiB)  TX bytes:53313548 (50.8 MiB)

errors should be very low.

4) DMA? Is your hard drive causing I/O trouble due to having DMA off? 
(this is unlikely, but it can happen).

5) Interrupt storms? Look at /proc/interrupts. Except for the system 
timer, you shouldn't be getting huge numbers every second. [I had a 
motherboard recently which needed the graphics aperture to be set to a 
specific (non-default) value, or it would cause an interrupt storm.
For example:    for ((i=0; i< 10000; i++)); do echo $i > /dev/null; done
should take about 1 second. If it's very much slower, something else is 
wrong!

6) RAM. Do you have > 2GB? Again, a stupid thing I recently saw is a 
64-bit motherboard, with capacity for 8GB of RAM (4 slots) and a core-2 
quad CPU. If more than 6 GB is present, the system slows to a crawl (no 
idea why; again, the for loop above can take nearly a minute to execute).
Also, you could try memtest.

Hope that helps a bit,

Richard