interface negotiation questions (slightly off-topic)

Stephen L Arnold arnold at ensco.cncoffice.com
Thu Jun 8 20:16:18 GMT 2000


Howdy:

This is (at least slightly) off-topic, but I've seen more knowledgeable folks than I mention autonegotiation in this venue and, since I didn't get any response on the vortex-bugs mailing list, I thought I'd ask here (also, the interface in question supports samba so...).  And there should be some good news for some folks too.

If this is old news, sorry (I've been too busy to keep up with the samba list lately...)

First off, if you're tired of messing with those stupid DOS utility disks to change the configuration of your NIC, you're in luck, Fred.  Donald Becker's new site has a bunch of diagnostic and setup utilities for newer NICs (eepro, ne2k, tulip, vortex, etc).  Go here to get them:

http://www.scyld.com/diag/index.html

Now on to the questions and stuff:

I have a Dell PIII-500 with a 3COM 3c905c (Tornado) NIC, running RedHat 6.1, samba 2.05a (I know, I'm planning on upgrading samba real soon now...), apache, etc.  I noticed that network performance seemed slow (when working with apache cgi stuff) and when I actually timed some file transfers (both SMB and ftp) I was getting anywhere from 50 - 150 k/sec.  Huh?  This is supposed to be a 100 Mbps full duplex network (segmented with 4 8-port switches; LinkSys EtherFast 10/100s - about $180 each).  When I used the dmesg command on the linux box, all I could see was:

eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
eth0: Transmit error, Tx status register 82.
...

immediately after booting.  The switch port I was plugged into said I was running at 100 Mbps, but only half duplex (while all the stupid windoze boxes with NetGear 310 rev D2 cards were full duplex).  I found Donald's new stuff, and I got this output from mii-diag:

[root at shiva test]# ./mii-diag -v eth0
mii-diag.c:v2.00 4/19/2000  Donald Becker (becker at scyld.com)
 http://www.scyld.com/diag/index.html
 MII PHY #24 transceiver registers:
   3000 780d 0040 6176 05e1 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   1000 0300 0000 0000 0000 03ed 0300 0000
   0036 000c 0f00 ff40 0026 0000 0000 000b.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 You have link beat, and everything is working OK.
   This transceiver is capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation not complete.
 Your link partner does not do autonegotiation, and this transceiver type
  does not report the sensed link speed.
 MII PHY #24 transceiver registers:
   3000 780d 0040 6176 05e1 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   1000 0300 0000 0000 0000 01dd 0400 0000
   0036 000c 0f00 ff40 0026 0000 0000 000b.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x780d ... 780d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation not complete.
 Vendor ID is 00:10:18:--:--:--, model 23 rev. 6.
   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 0000:.
   Negotiation did not complete.

(and file transfers were only going about 100 KBytes/sec).  When I used mii-diag to force the interface to 100BaseTX-FD (which turns off the autonegotiate stuff) my SMB/ftp transfers bumped up to ~5 MBytes/sec and web stuff got much faster too (and the switch port now says I'm running full duplex).  And the eth0 transmit errors went away, however, now dmesg fills up with:

VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
...

There must be some goofiness between the PCI bus handling code and network/disk driver codes...

Questions (from a dumb-ass with no formal network training):

How can the switch light up the right lights if it can't autonegotiate?

Is it doing something non-standard for determining the duplex/speed of a particular link?

How can one know whether to trust the autonegotiate stuff in general?  Just test it and see?

If the switch can't negotiate properly, why don't the windoze drivers get horked up?

How do I determine the actual duplex modes if I can't trust the switch indicators?

Since I get 900k/sec or better on my 10 Mbps half duplex network at home, is the 5M/sec indicative of half or full duplex operation?

Is there anything else I forgot to ask?

Thanks in advance (and sorry for the off-topic-ness).

****************************************************************
Stephen L. Arnold
                         
with Std.Disclaimer;  use Std.Disclaimer;
****************************************************************
 



More information about the samba mailing list