Messages in this thread | | | Date | Sun, 06 Feb 2000 04:10:15 -0500 | From | Matt Yourst <> | Subject | PCMCIA ethernet problems (packet loss) remain in 2.3.41 |
| |
I've been trying the latest kernel builds and am having a problem with my laptop's ethernet adapter. Somewhere between 2.3.33 (works perfectly) and 2.3.38, the ethernet card (an IBM PCMCIA Ethernet adapter using pcnet_cs.o) reports constant receive errors as soon as I enable it, yet a few packets still get through. The system was a Dell Inspiron with the TI PCI-1220 (rev 02) CardBus controller. I understand that the PCMCIA/Cardbus code went through a big revision around 2.3.36, but it seems that some hardware-specific bugs still remain. As a test, I booted 2.3.41 to a shell (nothing else running) and started /etc/rc.d/init.d/pcmcia manually. As soon as I did this, ifconfig starts reporting errors:
eth0 ...after starting pcmcia... RX packets:11 errors:326 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 Interrupt:10 Base address:0x300 ...and a few seconds later... RX packets:11 errors:346 dropped:0 overruns:0 frame:0
This was on a fairly busy ethernet segment, so it appears that the driver is reporting errors for every packet it sees, regardless of whether or not the packet was intended for my system (in this test, I initiated no network activity at all.) When I do start heavy network activity (for instance, downloading a big file from a server on the same LAN), it's evident that packets are actually being discarded to the point where things slow down more and more until all packets are rejected.
For these tests, CONFIG_PCMCIA and CONFIG_CARDBUS were set and compiled into the kernel, and CONFIG_I82365 was left out. gcc 2.95.2-pgcc and pcmcia-utils 3.1.8 were also used. It appears that 8390.c is doing the rejection around a piece of code that's already received some attention regarding this:
/* Check for bogosity warned by 3c503 book: the status byte is never written. This happened a lot during testing! This code should be cleaned up someday. */ if (rx_frame.next != next_frame ... ei_local->stat.rx_errors++; continue; }
However, this code is virtually identical to 2.3.33's, so it's not clear where the problem lies. If anyone knows what the cause might be, just e-mail me for more information if needed.
- Matt Yourst
------------------------------------------------------------- Matt T. Yourst Massachusetts Institute of Technology yourst@mit.edu 617.225.7690 476 Memorial Drive Cambridge MA 02139 -------------------------------------------------------------
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |