Full/Half duplex - diagnostics not the same as reality

"Miskell, Craig" <[email protected]>
Newsgroups gmane.linux.drivers.vortex.devel
Message-ID <[email protected]>
Hi,
	I have just been battling with an old linux box (Redhat 6.1,
kernel 2.2.12-20) with a 3c905B in it, talking to a Cisco 3500.  I have
managed to fix it (with help from the archives of this list), but
something still doesn't make sense.  I'd appreciate it if anyone can
help me find an explanation.  Pardon the length - I believe in sending
enough info that I won't have to waste your time and mine clarifying the
basics.

Initial symptoms were really slow connectivity when sending gzip output
to a samba mounted share.  I did some poking and noticed that we were
getting ~5 collisions per second while doing the gzip.  (Incidentally,
gzipping to local disk then copying to the share didn't cause
collisions, and neither did simply redirecting the output straight to
the samba share without gzipping.  Truly odd).  Anyway, some more poking
indicated that the card was running half duplex, where the rest of the
network is running full duplex, often "forced" (due to apparently some
old problems with HalfDuplex...)
So, doesn't take long to decide that it's time to make it do full
duplex.  More poking ensues, and I discover that the 3com is trying to
autonegotiate, and the Cisco is telling it to just use 100BaseT half
duplex.  <me>scratches head</me>.  I poked in the cisco config, but not
being anything more than a novice, got confused.  For some reason this
box seems to be plugged into the GigabitEthernet0/1, along with a bunch
of other boxes.  I'm not sure quite how that works (all plugged into the
same port, or is it just the Cisco being "smart" and coalescing multiple
physical ports into one logical one?)  I'm going to ask somebody else
here about how that all works, but if anyone knows from this list, I'd
welcome enlightenment.  
That interface (GigabitEthernet0/1) is apparently set to
"Auto-duplex (Full), link type is autonegotiation"
Which according to http://www.cisco.com/warp/public/473/46.html should
be fine (both ends autonegotiating).

But in practice,  according to the above url, what *seems* to be
happening is that the cisco is somehow configured to force 100BT-FD, and
because the 3com is auto negotiating, we're getting 100BT-HD, a duplex
mismatch, and hence collisions.
Against all other advice (well, bascially cause I'm not game on fiddling
with the Cisco yet), I force the 3com card to full duplex:

# ifdown eth0
# rmmod 3c59x
# insmod 3c59x full_duplex=1
(or insmod 3c59x options=12 also seems to work the same, as per
vortex.txt in the kernel docs)
# ifup eth0
After this mii-diag -v gives the following
 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 complete.
 Your link partner is generating 100baseTx link beat  (no
autonegotiation).
   End of basic transceiver information
<SNIP>:
 I'm advertising 01e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol. Link partner capability is 0080:
100baseTx.
   Negotiation did not complete.

#mii-tool 
eth0: no autonegotiation, 100baseTx-HD, link ok

This is all the same as before setting the options on the module.
HOWEVER, if I run the test command, I get my hoped for throughput and no
collisions.  This indicates to me that it is actually working full
duplex.

If I then tried
# mii-diag -F 100BaseT-FD
Then the output of mii-tool says
eth0: 100 Mbit, full duplex, link ok

Mii-diag -v output mutters about fixed speed, no negotiation etc...
Output is too verbose for now.. I think most (who care) will know what
it says.
Behaviour is still correct (no collisions, as fast as is expected etc).

So I'm confused - it seems to be working, but the diagnostics indicate
otherwise unless I force the setting using mii-diag.  

Does anyone know what might be going on?  Is it as simple as an old
kernel that doesn't support something quite right?  Is it possible that
it's not really running full-duplex but that something else in that
stops the collisions? 

I'm happy to run most tests, as long as it's not making changes to the
Cisco

Thanks
Craig Miskell,
Technical Support,
AgResearch Invermay
=======================================================================
Attention: The information contained in this message and/or attachments
from AgResearch Limited is intended only for the persons or entities
to which it is addressed and may contain confidential and/or privileged
material. Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by persons or
entities other than the intended recipients is prohibited by AgResearch
Limited. If you have received this message in error, please notify the
sender immediately.
=======================================================================
_______________________________________________
vortex mailing list
[email protected]
http://www.scyld.com/mailman/listinfo/vortex
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.