tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: half-/full-duplex ethernet and ifconfig

On Wed, Nov 14, 2012 at 04:02:21PM -0600, David Young wrote:
> That still doesn't give us a duplex "don't care" setting, but I cannot
> think of a time when I *do* care what bitrate but I *don't* care what
> duplex.

I cared about the HDX/FDX but not about the speed!
The MAC hardware has to be set HDX/FDX matching what the PHY is doing.

The MAC hardware didn't need to know whether the speed was 10M or 100M
the data just got clocked through the fifos faster.

I suspect the only broken autonegotiaton comes about when connected to
devices that don't actually do it - especially after replugging from
a device that does.

Remember the history.
The original 10BaseT spec defined 'link test pulses', one was sent
at a fixed interval to indicate the presence of the system.

When 100BaseT was added, it sent a short burst of link test pulses.
A system receiving the bursts knew it could send at 100M (or 10M).
This is called 'autodetect'.

Many 10/100 autodetect hubs ran two collision domains (one at each
speed) with a bridge between them.

The FDX modes added 'autonegotiation', here the burst of link test
pulses is modified so it can encode a few bytes of data.
An autodetect hub will see this an the 100M link test sequence and
send at 100M (HDX) regardless of the advertised speeds.

Almost all hubs/switches than can to FDX are 'store and forward'
devices. Some of the very early ones were 'cut through' - and
the target port better be idle!

I don't think there was ever any mainstream that did FDX that diddn't
support autonegotiation.

The problem tends to be drivers that use the recieved autonegotiate
(ANRR?) value to detect the mode - and get a stale value when the cable
is replugged into a 10M hub or an 10/100 autonegotiate hub.

The ANAR and ANRR are fixed MII registers, the actual operating mode
of the PHY is only MD.


David Laight:

Home | Main Index | Thread Index | Old Index