netdev
[Top] [All Lists]

Re: [vortex] overrun problem

To: Andrew Morton <andrewm@xxxxxxxxxx>
Subject: Re: [vortex] overrun problem
From: David Fries <dfries@xxxxxxx>
Date: Sat, 23 Sep 2000 01:16:27 -0500
Cc: vortex@xxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20000922224120.C24813@d-131-151-189-65.dynamic.umr.edu>; from dfries@umr.edu on Fri, Sep 22, 2000 at 10:41:20PM -0500
References: <20000921002752.A10927@d-131-151-189-65.dynamic.umr.edu> <39CB524E.2EB250E0@uow.edu.au> <20000922153900.A24813@d-131-151-189-65.dynamic.umr.edu> <20000922224120.C24813@d-131-151-189-65.dynamic.umr.edu>
Sender: owner-netdev@xxxxxxxxxxx
User-agent: Mutt/1.2.5i
I've been hacking away at the driver to get some more information.
I've included my changes, they are against the driver in the
2.4.0-test9-pre4 kernel.

I've setup a timer to run every 20 seconds and if there are less than
20 packets sent go though the rx_ring and print out any status that
was not zero.  I then reset the card using vortex_down, vortex_up.
Like ifconfiging the interface down and back up, it seems to help, but
the network card isn't fully functional until I rmmod and insmod it.

Sep 22 23:45:33 spacedout kernel: Ring 1, status 0x803c
Sep 22 23:45:33 spacedout kernel: Ring 5, status 0x600085ea
Sep 22 23:45:33 spacedout kernel: Ring 23, status 0x803c
Sep 22 23:45:33 spacedout kernel: Ring 27, status 0x803c
Sep 22 23:45:33 spacedout kernel: Ring 29, status 0x803c

Sep 22 23:53:35 spacedout kernel: Ring 3, status 0x600085ea
Sep 22 23:53:35 spacedout kernel: Ring 5, status 0x600085ea
Sep 22 23:53:35 spacedout kernel: Ring 7, status 0x450008
Sep 22 23:53:35 spacedout kernel: Ring 8, status 0x978341bd
Sep 22 23:53:35 spacedout kernel: Ring 9, status 0x10808c88
Sep 22 23:53:35 spacedout kernel: Ring 10, status 0xd00d0ef
Sep 22 23:53:35 spacedout kernel: Packets diff 0

Sep 22 23:57:49 spacedout kernel: Ring 11, status 0x600085ea
Sep 22 23:57:49 spacedout kernel: Ring 13, status 0x450008
Sep 22 23:57:49 spacedout kernel: Ring 14, status 0x978341bd
Sep 22 23:57:49 spacedout kernel: Ring 15, status 0x108086ee
Sep 22 23:57:49 spacedout kernel: Ring 16, status 0xd004151
Sep 22 23:57:49 spacedout kernel: Packets diff 0

Sep 23 00:13:52 spacedout kernel: Ring 3, status 0x600085ea
Sep 23 00:13:52 spacedout kernel: Ring 5, status 0x450008
Sep 23 00:13:52 spacedout kernel: Ring 6, status 0x978341bd
Sep 23 00:13:52 spacedout kernel: Ring 7, status 0x1080c165
Sep 23 00:13:52 spacedout kernel: Ring 8, status 0xf00c0cc

What does rmmod and insmod do to the network card that vortex_down,
vortex_up doesn't?  Something is different.

I'll assume the problem is the fifo isn't being empied and overruns
for whatever reason (the video card is hoggin the bus?), what is
supposed to happen?  The NIC puts down the status, moves it's pointer
to the next ring entry, gets the next packet, signals that it uploaded
a packet, the driver wakes up, the while loop in boomerang_rx says
RxDComplete not set, it goes to sleep.  This keeps happening until the
NIC goes around the ring.

Maybe that senerio isn't quite right, but I'm not sure what is
supposed to happen next.

My feeling is there is some problem here.  I'll try working on it
tomorrow some more.

-- 
                +---------------------------------+
                |      David Fries                |
                |      dfries@xxxxxxx             |
                +---------------------------------+

Attachment: 3c59x.diff.gz
Description: Binary data

<Prev in Thread] Current Thread [Next in Thread>