STE10/100 PCI Ethernet Chip with PHY emulation
Warning
Don't use the STE10/100 for new designs. The internal PHY is unusable.
Overview
The STE10/100 is a DEC Tulip register compatible Ethernet MAC with integrated PHY.
It has a PCI interface.
Device bugs
- The internal PHY stops receiving data on short disruptions or jamming off the incoming data.
This can happen for example if you switch the light in your room. There
is no indication that the receiver is in a faulty state, so the driver can not fix
the PHY.
- When autonegotiation is disabled the PHY correctly detects the link but never starts
receiving data. There is no indication for the driver to detect the faulty state.
ST-Microelectronics confirmed this bug and sent me an algorithm which can bring
back the PHY from faulty state to working state. This indeed works, but it is not useful
because the driver can not detect if the PHY is in faulty state (Receiving nothing
for some hours is not a real fault indication). Applying this fix regularly, for example
every five seconds is not good because it interrupts the traffic for 2 seconds.
ST-Microelectronics told me that the "B2" revision of the Chip is fixed. I tested it and
found that the B2 revision has the same bug.
It should be noted here that all revisions of the STE10/100 identified
with revision "A1" in the PCI revision number/step number register CR2.
It looks like ST-Microelectronics only increments the version on the label
of the chip but does not change the chip itself. All chips were bought from
the distributor "Spoerle".
Howto Test if a STE10/100 is affected by this bug
- Connect your STE10/100 to an other device. Then create a short circuit for
a very short time (if it is not short enough the autonegotiation restarts)
by scratching over the rx pins of the RJ45 connector with a piece of wire. Now you can not ping the
machine any more. The traffic can only be started again by triggering the autonegotiation
with the RSAN bit in the PHY or by removing the cable for longer than 0.5 sec.
- Switch your STE10/100 and a link partner to 100MBit full duplex without autonegotiation.
Check with an oscilloscope that both are transmitting idle symbols. Then connect them. Now you can
transmit nothing to the STE10/100. The other direction will work if the partner is not
also a STE10/100.
Emulator bugs / Missing features
- Multicast hash table is not implemented
- The CRC calculation is missing.
- Multi-Buffer frames are not implemented
- Auto polling for TX packets in host memory not implemented
- PHY bug emulation is missing.