BCM1250/BCM1125/BCM1125H
User Manual
10/21/02
B r o a d c o m C o r p o r a t i o n
Page
272
Section 9: Ethernet MACs
Document
1250_1125-UM100CB-R
In half-duplex operation the Ethernet protocol expects collisions to occur, and relies on them to share access
to the transmission medium. These collisions will only occur at the start of packet transmission, and the
interface will backoff for a random period before retrying the transmission. The maximum backoff time is
exponentially increased (up to a maximum 1024 slot times) each time a collision is encountered. If the collision
is detected early in the packet the interface will automatically backoff and retry. If a collision happens late in
the transmission then the packet is dropped.
Once transmission has begun entries are retained in the transmit FIFO until tx_rl_thrsh entries have been
transmitted, if an error is detected during this time the packet can be automatically retried. Retaining the start
of the packet in this way is enabled by setting the tx_hold_sop_en bit in the
mac_cfg
register. The errors that
will cause automatic retry are also selected in this register.
describes all the transmission error conditions, and lists the bit that must be set to enable automatic
retry for them.
Table 161: Transmission Error Conditions
Error
Bit to Set for
Automatic Retry
Description
Collision
retry_en
Collisions near the start of the frame are an expected part of the Ethernet protocol,
and should always be retried.
Excessive
Collision
ret_drpreq_en
After 16 attempts to transmit a frame have resulted in a collision the interface will
report that excessive collisions have happened. This condition normally indicates a
serious problem with the link (although it will occasionally be encountered on a large
very busy Ethernet), in most cases the packet should not be automatically retried.
Note that this error and late collisions use the same bit to enable automatic retry.
Excessive collisions will set the excol_err bit in the
mac_status
register.
Late Collision
ret_drpreq_en
The Ethernet protocol sets the minimum packet size so that all collisions will be seen
during the transmission of a minimum length packet. Any collision after the minimum
length has been sent is a late collision and indicates a serious error. Late collisions
can be caused by the Ethernet segment being longer than allowed by the
specification, or by some other station on the segment turning on or off or violating
the standard. In most cases the packet should not be automatically retried. Note that
this error and excessive collisions use the same bit to enable automatic retry.
Late collisions will set the ltcol_err bit in the
mac_status
register.
Underflow
ret_ufl_en
An underflow error is reported when the transmit protocol engine finds the transmit
FIFO empty during transmission of a frame. This will happen if the DMA (or external
agent in direct mode) has been unable to write data to the FIFO at the rate of the
transmission. The tx_rd_thrsh threshold can be adjusted to avoid underflows by
providing a data buffer in the FIFO to cover the request latency. In normal operation
the underflow error may occasionally occur if the DMA engine is locked out from the
bus or memory, and this could be automatically retried. If automatic retry is enabled
care must be taken to ensure it is not being applied to every packet. If the read
threshold is set too low, then all packets will get an underflow shortly after
transmission starts (leading to a runt packet being sent). The time they take to be
retried could cover the extra time needed to fetch data into the FIFO so they succeed
on a second attempt. This situation should be fixed by increasing the read threshold.
A FIFO underflow will set the tx_undrfl bit in the
mac_status
register.
Overflow None
Cannot be retried
An overflow error is reported when the DMA engine (or external agent in direct access
mode) attempts to write to the transmit FIFO when the FIFO is full. The data written
is lost. During DMA this error will only be seen if the tx_wr_thrsh parameter is
incorrectly set.
A FIFO overflow will set the tx_ovrfl bit in the
mac_status
register.