Bug 72453

Summary: (NET NS83820)MB-3792G motherboard with ns83820 chip still doesn't work
Product: [Retired] Red Hat Linux Reporter: Rene Rask <rene>
Component: kernelAssignee: Jeff Garzik <jgarzik>
Status: CLOSED CURRENTRELEASE QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: peterm
Target Milestone: ---   
Target Release: ---   
Hardware: i686   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-09-30 15:39:52 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Rene Rask 2002-08-23 21:59:16 UTC
Description of Problem:
ns83830.o modules fails when trying to bring up the network.
This has been tested on Redhat 7.2 and 7.3.

Tested kernels included all applicable redhat kernel (default install and 
upgrades), various vanilla kernels including the lastest pre releases.

A partly working solution (patch) was found with the help of Benjamin 
LaHaise which applied to redhat 7.2.
This would allow me to start the network and have a working system. 
Bringing down the network would require me to rmmod the ns83820 module 
before bringing up the network again. 
This also affects the pci cards from
Trendware TEG-PCITX (http://www.trendware.com/products/TEG-PCITX.htm)
They can get an ip but not restart the network without rmmod ns83820

Version-Release number of selected component (if applicable):
all versions of the ns83820 driver in all kernels tested.

When I pull the network the kernel prints: eth0 now up. 10Mbs, half duplex.
When I insert the network cable again I get: eth0: network now down.
(on redhat 7.3 fresh install)

How Reproducible:
Buy a motherboard called MB-3792G and try to get 1 Gbit networking working.
MB-3792G motherboard (onboard ns83820 chip)
http://www.icpamerica.com/mb_3792g.php
I have 5 of them and it's the same every time.

Steps to Reproduce:
1. turn on computer
2. bring up networking (if not done automatically)
3. restart networking

Actual Results:
timeout when trying to get a network address

Expected Results:
a working network

Additional Information:
Benjamin LaHaise worked on this with me. A look at the source code gives me 
the impression that the patch was included but something else is now 
breaking the driver.

Comment 1 Arjan van de Ven 2002-08-23 22:03:13 UTC
Ben..?

Comment 2 Rene Rask 2002-08-23 22:25:08 UTC
Dammit.. Sorry I'm tired and frustrated. Just lost a servers root (raid5). 
Installed the redhat 7.3 instead of 7.2. Could not get networking running 
again. Checked the sources against a pathced 7.2 source. My fault on that 
one. Found out that both where unpatched. Still doesn't help me much.

I'll go apply the (right) patch and recompile so I might at least get 
networking up.
It still does nothing to help the start/stop bug.
Please let me know I you have anything I should test.

This was the patch Ben supplied me with
original: #define SSPDSTS_POLARITY (CFG_SPDSTS1 | CFG_SPDSTS0 | CFG_DUPSTS)
patched: #define SSPDSTS_POLARITY (CFG_SPDSTS1 | CFG_SPDSTS0 | CFG_DUPSTS | 
CFG_LNKSTS)

-Rene

Comment 3 Ben LaHaise 2002-09-24 21:55:52 UTC
Can you try out 0.20+fix of ns83820.c from http://www.kvack.org/~blah/ns83820.c
and insmod ns83820.o lnksts=1?  Then do a dmesg and provide the startup messages
of the driver.  Until I've got a workaround that can be used across all cards,
you'll have to use the lnksts=1 parameter.

Comment 4 Rene Rask 2002-09-25 03:48:14 UTC
I included all the output I could get.
"eth0: link now down" and down is the output I get when I try to restart
networking and until it times out.
(dmesg output is further down)

I've also noticed a new bug which seems to be related to this. Something that
happens when using Redhat 7.3 instead of Redhat 7.2 on a system.
This is a snippet from one of my logs. The logs are filled with this and they
only occur on redhat 7.3 when a user connects using Appletalk (netatalk). It's
not netatalk thats causing this. I've tested several versions.
It only happens when reading data, from the server, not the other way around,
and it seems to be harmless. No data corruption has occured.
Just an early warning, I'll try some older kernels and other stuff and report my
 findings if they still seem related.
kernel: frag: buf=07515000  page=00007515 offset=00000000
kernel: frag: buf=07515228  page=00007515 offset=00000228
kernel: frag: buf=075157dc  page=00007515 offset=000007dc
kernel: frag: buf=07515d90  page=00007515 offset=00000d90
kernel: frag: buf=07514000  page=00007514 offset=00000000

Dmesg output:
ns83820.c: National Semiconductor DP83820 10/100/1000 driver.
eth0: ns83820.c: 0x22c: 00000000, subsystem: 0000:0000
eth0: ns83820 v0.20: DP83820 v1.2: 00:40:f4:23:9c:fb io=0xdc000000 irq=18 f=sg
eth0: link now down.
eth0: ns83820_tx_watch: 0 1 1
eth0: tx_timeout: tx_done_idx=0 free_idx=1 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=1 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 1 1
eth0: tx_timeout: tx_done_idx=0 free_idx=1 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=1 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 2 2
eth0: tx_timeout: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 2 2
eth0: tx_timeout: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 2 2
eth0: tx_timeout: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 2 2
eth0: tx_timeout: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=2 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 3 3
eth0: tx_timeout: tx_done_idx=0 free_idx=3 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=3 cmdsts=a000024e
eth0: ns83820_tx_watch: 0 3 3
eth0: tx_timeout: tx_done_idx=0 free_idx=3 cmdsts=a000024e
eth0: after: tx_done_idx=0 free_idx=3 cmdsts=a000024e
eth0: ns83820_tx_watch: 3 4 1
eth0: tx_timeout: tx_done_idx=3 free_idx=4 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=4 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 4 1
eth0: tx_timeout: tx_done_idx=3 free_idx=4 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=4 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 5 2
eth0: tx_timeout: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 5 2
eth0: tx_timeout: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 5 2
eth0: tx_timeout: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 5 2
eth0: tx_timeout: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=5 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 6 3
eth0: tx_timeout: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=6 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 7 4
eth0: tx_timeout: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=7 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 8 5
eth0: tx_timeout: tx_done_idx=3 free_idx=8 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=8 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 8 5
eth0: tx_timeout: tx_done_idx=3 free_idx=8 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=8 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 9 6
eth0: tx_timeout: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 9 6
eth0: tx_timeout: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 9 6
eth0: tx_timeout: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 9 6
eth0: tx_timeout: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=9 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 10 7
eth0: tx_timeout: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=10 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: ns83820_tx_watch: 3 11 8
eth0: tx_timeout: tx_done_idx=3 free_idx=11 cmdsts=8000024e
eth0: after: tx_done_idx=3 free_idx=11 cmdsts=8000024e


Comment 5 Ben LaHaise 2002-09-25 15:46:33 UTC
v0.20 has several fixes to the transmit code that should address that problem. 
Please report back on how it works along with the startup messages needed.

Comment 6 Rene Rask 2002-09-25 16:56:31 UTC
Ok. The problems with fragsments seem to be gone. I tested with the latest
release of netatalk (1.5.5).
The one problem left with netatalk is that I have to run in allmulti or promisc
mode to get servers to show up the the apple Chooser program. This has caused
problems with stability which I've made workarounds for.
I was told that this problem was related to my NIC driver. I don't have to
expertise to say if that is true though.

What can I do to help fix the "rmmod ns83820 before restarting network" problem?

Thanks
-Rene

Comment 7 Ben LaHaise 2002-09-25 17:02:53 UTC
Hmmm, that sounds like a bug in the multicast code.  I'll have a look into it.

Comment 8 Bugzilla owner 2004-09-30 15:39:52 UTC
Thanks for the bug report. However, Red Hat no longer maintains this version of
the product. Please upgrade to the latest version and open a new bug if the problem
persists.

The Fedora Legacy project (http://fedoralegacy.org/) maintains some older releases, 
and if you believe this bug is interesting to them, please report the problem in
the bug tracker at: http://bugzilla.fedora.us/