Subject: Re: xi0: device timeout (seems fixed now)
To: <>
From: David Laight <david@l8s.co.uk>
List: port-i386
Date: 04/15/2002 11:51:25
On Sun, Apr 14, 2002 at 12:41:52PM -0400, Ross wrote:
> 
> I tried 100baseTX and i get "no carrier".

'no carrier' is almost certainly caused by the MAC chipset not
seeing the 'rx enable' signal from the transceiver asserted
during transmit (caused by detecting the cards own transmittion).
This check is present because it detects breaks in the TX and RENA
cable pairs.  (AUI signals emulated on the MII).

These days what it usally means is that the transceivers have
negotiated full duplex, but that no one has told the MAC engine...

To get FDX working the MAC and transceiver must agree on its use
(the transceiver can switch from 10M to 100M without the MAC
having to know).  Unfortunately it isn't possible (1) to determine
what the transceiver has negotitated or autodetected by reading
the generic MII registers (0-7), you have to read one of the MII
device dependent registers (8-15).

This means that FDX requires:
a) MAC (or maybe board) specific code to read write MII registers
b) Transceiver specific code to determine the active speed and mode
c) A method of polling the transceiver to determine if the mode
   has changed.

Without (b) and (c) disabling the FDX modes is probably safest.

Many cards will 'work' without any of the above - provided 100M#
is never negotiated.

(1) It may be POSSIBLE, but I couldn't see an easy way. IIRC you can
find out what the last autonegotiation response was, but cannot
easily determine whether autodetect or autonegotiation was used.
The possibility of multibyte ANAR responses just livens things up
further.

	David

-- 
David Laight: david@l8s.co.uk