eepro100: Unknown receiver error

Matthew Callaway <[email protected]> Wed, 21 May 2003 14:58:08 -0500 (CDT)
Newsgroups gmane.linux.drivers.eepro100.devel
Message-ID <[email protected]>
I'm running a system board with two built-in Intel 82559 10/100 ethernet
ports using the eepro100 driver version 1.25 (stock Scyld version).

The card reports several receiver errors per second beginning at about
32 Mbit/sec throughput.  I can reproduce this behavior by simply using
tcpreplay and a pcap dump file, setting the rate to ~30 Mbit/sec.

kernel: eth0: Unknown receiver error, status=0x5048.

The same traffic using the tulip interface causes:

kernel: eth2: Restarted Rx at 05751 / 105751.

Previous posters have noted this, and the following response was found:

--------
On Thu, 27 Jun 2002, G-man wrote:

> Hiyas..me again :).. So I'm getting these errors w/ the
> eepro100.c:v1.23
> 6/5/2002 driver..
>
> eth0: Unknown receiver error, status=0x5048.
> eth0: Unknown receiver error, status=0x5048.
> eth0: Unknown receiver error, status=0x7048.
> eth0: Unknown receiver error, status=0x7048.

These are reporting that the chip is out of "Rx resources".  This might
mean that there is heavy PCI bus contention. But I can't figure out why
it's newly appearing. The message has been in the driver for a few
versions, and I haven't changed any bus parameters.  Bottom line: I'm
still tracking it down.
--------

Has any progress been made?  The errors appear to mark the ceiling on
network throughput.  If I add more network load, the interfaces do not
report any more throughput (using iptraf to measure).

It was also suggested:

--------
If you are using a recent version of my driver release, you can
selectively enable driver status/error messages using
  mii-diag  eth0 --msg-level <value>
--------

Using mii-diag v2.06:

mii-diag.c:v2.06 8/7/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html

Trying to set the msg-level segfaults:

mii-diag eth0 -M 0x0040
Segmentation fault

May 21 19:54:50 kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000008
May 21 19:54:50 kernel: current->tss.cr3 = 0cca5000, %cr3 = 0cca5000
May 21 19:54:50 kernel: *pde = 00000000
May 21 19:54:50 kernel: Oops: 0000
May 21 19:54:50 kernel: CPU:    0
May 21 19:54:50 kernel: EIP:    0010:[<00000008>]
May 21 19:54:50 kernel: EFLAGS: 00010296
May 21 19:54:50 kernel: eax: 00000000   ebx: 000089f3   ecx: 00000000   edx: 0804e780
May 21 19:54:50 kernel: esi: 000089f3   edi: 0804e760   ebp: cd20e840   esp: cc8abf6c
May 21 19:54:50 kernel: ds: 0018   es: 0018   ss: 0018
May 21 19:54:50 kernel: Process mii-diag (pid: 15911, process nr: 61, stackpage=cc8ab000)
May 21 19:54:50 kernel: Stack: 000089f3 ffffffe7 0804e760 000089f3 400c3b40 c015ac8d ce0de538 000089f3
May 21 19:54:50 kernel:        0804e760 cea827e0 c012e395 ce0de498 cea827e0 000089f3 0804e760 cc8aa000
May 21 19:54:50 kernel:        0804e770 00000004 bffffc60 cbdd82a0 ce0de498 c0109128 00000003 000089f3
May 21 19:54:50 kernel: Call Trace: [sock_ioctl+29/36] [sys_ioctl+417/444] [system_call+52/56]
May 21 19:54:50 kernel: Code: <1>Unable to handle kernel NULL pointer dereference at virtual address 00000008
May 21 19:54:50 kernel: current->tss.cr3 = 0cca5000, %cr3 = 0cca5000
May 21 19:54:50 kernel: *pde = 00000000
May 21 19:54:50 kernel: Oops: 0000
May 21 19:54:50 kernel: CPU:    0
May 21 19:54:50 kernel: EIP:    0010:[show_registers+653/704]
May 21 19:54:50 kernel: EFLAGS: 00010046
May 21 19:54:50 kernel: eax: 00000000   ebx: 00000000   ecx: 00000008   edx: cf116000
May 21 19:54:50 kernel: esi: 0000002b   edi: cc8ac000   ebp: d0800000   esp: cc8abeac
May 21 19:54:50 kernel: ds: 0018   es: 0018   ss: 0018
May 21 19:54:50 kernel: Process mii-diag (pid: 15911, process nr: 61, stackpage=cc8ab000)
May 21 19:54:50 kernel: Stack: 00000008 08048000 c01ecc08 000089f3 0804e760 cd20e840 00000000 000089f3
May 21 19:54:50 kernel:        00000000 0804e780 00000008 00010296 00000009 d1000000 c010964c cc8abf30
May 21 19:54:50 kernel:        c01c37f6 c01c55ce 00000000 00000000 c010ed90 c01c55ce cc8abf30 00000000
May 21 19:54:50 kernel: Call Trace: [<d1000000>] [die+48/56] [stext_lock+6810/14820] [stext_lock+14450/14820] [do_page_fault+708/944] [stext_lock+14450/14820] [do_page_fault+0/944]
May 21 19:54:50 kernel:        [error_code+61/72] [sock_ioctl+29/36] [sys_ioctl+417/444] [system_call+52/56]
May 21 19:54:50 kernel: Code: 8a 04 0b 89 44 24 38
50 68 ee 37 1c c0 e8 1d a7 00 00 83 c4


Some information about my system.

Linux kernel 2.2.25

Modules loading:

pci-scan.c:v1.10 7/13/2002  Donald Becker <[email protected]>
http://www.scyld.com/linux/drivers.html
eepro100.c:v1.25 8/27/2002 Donald Becker <[email protected]>
  http://www.scyld.com/network/eepro100.html
eth0: OEM Intel i82559 rev 8 at 0xd080d000, 00:90:FB:07:9C:F1, IRQ 5.
  Board assembly 558200-009, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
  General self-test: passed.
  Serial sub-system self-test: passed.
  Internal registers self-test: passed.
  ROM checksum self-test: passed (0x04f4518b).
eth1: OEM Intel i82559 rev 8 at 0xd080f000, 00:90:FB:07:9C:F2, IRQ 15.
  Board assembly 558200-009, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
  General self-test: passed.
  Serial sub-system self-test: passed.
  Internal registers self-test: passed.
  ROM checksum self-test: passed (0x04f4518b).

eepro100-diag:

[root@fs1 /root]# eepro100-diag -aemf -#1
eepro100-diag.c:v2.10 8/6/2002 Donald Becker ([email protected])
 http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xe000.
i82557 chip registers at 0xe000:
  00000050 0cd33010 00000000 00080002 182545e1 00000600
  No interrupt sources are pending.
   The transmit unit state is 'Suspended'.
   The receive unit state is 'Ready'.
  This status is normal for an activated but idle interface.
Intel EtherExpress Pro 10/100 EEPROM contents:
  Station address 00:90:FB:07:9C:F1.
  Board assembly 558200-009, Physical connectors present: RJ45
  Primary interface chip i82555 PHY #1.
Primary transceiver is MII PHY #1. MII PHY #1 transceiver registers:
   3000 782d 02a8 0154 05e1 45e1 0001 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0a03 0000 0001 0000 0000 0000 0000 0000
   0000 0000 0b10 0000 0000 0000 0000 0000.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x782d ... 782d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 00:aa:00:--:--:--, model 21 rev. 4.
   No specific information is known about this transceiver type.
 I'm advertising 05e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD
10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 45e1: Flow-control 100baseTx-FD 100baseTx
10baseT-FD 10baseT.
   Negotiation  completed.