[epic] epic100 problems with oversized ethernet frame

Anders K. Pedersen akp@akp.dk
Sun, 10 Sep 2000 12:14:52 +0200


I tried sending this to epic-bug yesterday, but apparently it never made
it to the list, so I'll try here.

One of our servers today reported the following error to the kernel log:

Sep 9 22:13:57 eising kernel: eth1: Oversized Ethernet frame, status 5fe
4097 bytes.

We are running a 2.2.16 kernel, and looking through the epic100.c file,
I noticed that status and packet size are exchanged, so that the above
should have been:

Sep 9 22:13:57 eising kernel: eth1: Oversized Ethernet frame, status
1001 1534 bytes.

This is fixed by the following patch:

--- epic100.c.orig      Thu May  4 02:16:41 2000
+++ epic100.c   Sun Sep 10 01:29:43 2000
@@ -1124,7 +1124,7 @@
                        if (pkt_len > PKT_BUF_SZ - 4) {
                                printk(KERN_ERR "%s: Oversized Ethernet
frame, status %x "
                                           "%d bytes.\n",
-                                          dev->name, pkt_len, status);
+                                          dev->name, status, pkt_len);
                                pkt_len = 1514;
                        /* Check if the packet is long enough to accept
without copying


After receiving this error, all connections to the server slowed down
considerably, and ping times were 500-3000 ms, while they under
normal circumstances are between 1 and 2 ms. After reloading the
driver, everything returned to normal. We've seen this behaviour
before with earlier kernels, but we haven't gotten around to
reporting it before now. Back then we fixed it be increasing
PKT_BUF_SZ from 1536 to 1540 (this made prevented the error from
occuring). I'm wondering if the "pkt_len = 1514" in the code above
is correct, but I'm not sufficiently familiar with the internals of
the kernel to be sure. Any ideas what could be causing this behaviour?

Anders K. Pedersen