Bug 2119

Summary: (net via-rhine) v1.1.19 network transfers slow (10k/sec) in one direction
Product: Drivers Reporter: David Butcher (davidbu)
Component: NetworkAssignee: Jeff Garzik (jgarzik)
Status: REJECTED INSUFFICIENT_DATA    
Severity: normal CC: amantia, bunk, rl, s.loeuillet
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: linux-2.4.23-4GB Subsystem:
Regression: --- Bisected commit-id:

Description David Butcher 2004-02-16 23:20:08 UTC
Distribution: SuSE 7.3 plus kernel from kernel.org: linux-2.4.23-4GB
Hardware Environment: AMD Duron, MHz 1595.517, motherboard is ECS K7VTA3
Software Environment: Linux both ends, nothing unusual on the "slow" end
Problem Description: The motherboard via rhine II network port will transfer 
at megabit speeds outbound but only 10k/sec (really, as slow as a modem) 
inbound.  Using a different networking card in the slow system (same cable, 
same remote system) results in transfers equally fast in both directions.

Steps to reproduce:
1. Wire two systems with crossover cable, both network cards/connections 
100Mb/sec.  Foreign system is SuSE Linux 7.1 (tested OK in both directions 
with other hardware)

via-rhine:
jazz:/usr/src/linux-2.4.23-4GB/drivers/net # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0D:87:54:57:8F
          inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20d:87ff:fe54:578f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2542 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3313 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1800206 (1.7 Mb)  TX bytes:1156389 (1.1 Mb)
          Interrupt:11 Base address:0xec00

Foreign: 
ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:02:E3:22:53:C3
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::202:e3ff:fe22:53c3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9781540 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4267905 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:1308724602 (1248.0 Mb)  TX bytes:318287014 (303.5 Mb)
          Interrupt:9 Base address:0xd000

NO errors are ever seen in any circumstances.  Data flows out of the via rhine 
at 839k/sec using scp and back in at 10-15k/sec.

debug=7 output from via-rhine module while receiving slowly:

Feb 16 21:49:55 jazz kernel: eth0: via_rhine_rx(), entry 14 status 005a8f00.
Feb 16 21:49:55 jazz kernel:   via_rhine_rx() status is 005a8f00.
Feb 16 21:49:55 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:49:55 jazz kernel: eth0: Transmit frame #695 queued in slot 7.
Feb 16 21:49:55 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:49:55 jazz kernel:  Tx scavenge 7 status 00000000.
Feb 16 21:49:55 jazz kernel: collisions: 0:0
Feb 16 21:49:55 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:00 jazz kernel: eth0: VIA Rhine monitor tick, status 0000.
Feb 16 21:50:00 jazz kernel: eth0: Transmit frame #696 queued in slot 8.
Feb 16 21:50:00 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:00 jazz kernel:  Tx scavenge 8 status 00000000.
Feb 16 21:50:00 jazz kernel: collisions: 0:0
Feb 16 21:50:00 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:01 jazz kernel: eth0: Transmit frame #697 queued in slot 9.
Feb 16 21:50:01 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:01 jazz kernel:  Tx scavenge 9 status 00000000.
Feb 16 21:50:01 jazz kernel: collisions: 0:0
Feb 16 21:50:01 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:01 jazz kernel: eth0: Transmit frame #698 queued in slot 10.
Feb 16 21:50:01 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:01 jazz kernel:  Tx scavenge 10 status 00000000.
Feb 16 21:50:01 jazz kernel: collisions: 0:0
Feb 16 21:50:01 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:02 jazz kernel: eth0: Transmit frame #699 queued in slot 11.
Feb 16 21:50:02 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:02 jazz kernel:  Tx scavenge 11 status 00000000.
Feb 16 21:50:02 jazz kernel: collisions: 0:0
Feb 16 21:50:02 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:03 jazz kernel: eth0: Transmit frame #700 queued in slot 12.
Feb 16 21:50:03 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:03 jazz kernel:  Tx scavenge 12 status 00000000.
Feb 16 21:50:03 jazz kernel: collisions: 0:0
Feb 16 21:50:03 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:07 jazz kernel: eth0: Transmit frame #701 queued in slot 13.
Feb 16 21:50:07 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:07 jazz kernel:  Tx scavenge 13 status 00000000.
Feb 16 21:50:07 jazz kernel: collisions: 0:0
Feb 16 21:50:07 jazz kernel: eth0: exiting interrupt, status=00000000.
Feb 16 21:50:10 jazz kernel: eth0: VIA Rhine monitor tick, status 0000.
Feb 16 21:50:14 jazz kernel: eth0: Transmit frame #702 queued in slot 14.
Feb 16 21:50:14 jazz kernel: eth0: Interrupt, status 00000002.
Feb 16 21:50:14 jazz kernel:  Tx scavenge 14 status 00000000.
Feb 16 21:50:14 jazz kernel: collisions: 0:0
Feb 16 21:50:14 jazz kernel: eth0: exiting interrupt, status=00000000.

Note the exetremely slow transfers.  I'm sorry, I am not very good at reading 
status, and can't tell if it is an underlying problem like PCI.

I am willing to run tests or help in any way, and I can provide any additional 
information needed for debugging.

Thanks
Comment 1 Christophe Combelles 2004-04-27 15:03:16 UTC
I have exactly the same kind of problem with all kernels 2.6 (including 2.6.5),
and 2.4.21.

There is more information on the thread of the Debian bug #245398:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=245398

Someone told about a similar proble on the LKML:
http://lkml.org/lkml/2004/3/29/179
Comment 2 Stephane Loeuillet 2004-05-08 13:28:54 UTC
got 2.6.5, a via-rhine II and i had this speed problem until my hosting company
changed a router.

this router was in 10Mb HD.

when connecting the machine to another router on 100Mb FD, traffic was ok

could it be because this driver handles Half-Duplex badly ??

could other people (including reporter) tell us if that occured on a FD or HD
network ?

i had this when it was not working : (was 10HD)
eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 0021.

and now i have that : (now on 100FD)
eth0: MII PHY found at address 1, status 0x7869 advertising 05e1 Link 41e1.

perhaps the router was faulty, or perhaps via-rhine II driver doesn't handle
10HD very well.

as a side not, i had lots of frame count and colision count shown with ifconfig.

i had the same speed problem when i tried 2.4.26 (but also had lots of lost packets)
Comment 3 Andras Mantia 2004-05-14 10:36:17 UTC
Same here on 2.6.4 with a RhineII VT6102. When transferring from a PCMCIA 
Xircom card the speed from Xircom->PCMCIA is about 850-900 KB/s, and in 
opposite direction around 100-200KB/s, but after some minutes it hangs and I 
need to restart the PCMCIA driver (or pull the card out and in) to restore the 
connection.  
 This is after I added full_duplex=1 to the via-rhine options, as otherwise the 
transfer speed were really low (<40KB/s). 
Comment 4 Andras Mantia 2004-05-14 10:38:06 UTC
Forgot to tell, but it's a logical conclusion: the PCMCIA card works well when 
I don't use the on-board VIA card, but an old RTL based one in the other 
machine. 
Comment 5 Adrian Bunk 2006-02-19 06:43:45 UTC
Is this problem still present in recent 2.6 kernels?
Comment 6 Adrian Bunk 2006-04-22 13:11:25 UTC
Please reopen this bug if it's still present in kernel 2.6.16.
Comment 7 Alex J. Ivasyuv 2008-02-05 18:37:46 UTC
Problem still in 2.6.24-rc7