Subject: What Apple does with GMAC
To: None <firstname.lastname@example.org, email@example.com>
From: Louis Gerbarg <firstname.lastname@example.org>
Date: 04/22/2001 13:07:46
Basicly, Apple has a timeout routine, and in the timeout routine they
check if it is wedged and they restart. Below is an excerpt of the timeout
routine. This is part of the AppleGMACEthernet project in the Darwin CVS
repository. If you want more details about the symbolic constants and such
you can look at that.
if ( rxWDInterrupts == 0 )
switch ( rxWDCount )
rxWDCount++; // Extend timeout
// We could be less conservative here and restart the
// receiver unconditionally.
rxMACStatus = READ_REGISTER( RxMACStatus );
if ( rxMACStatus & kRX_MAC_Status_Rx_Overflow )
// Bad news, the receiver may be deaf as a result of
// condition, and if so, a RX MAC reset is needed.
// that reading this register will clear all bits.
NETWORK_STAT_ADD( inputErrors );
rxWDCount = 0;