DM9008
ISA/Plug & Play Super Ethernet Contoller
Final
Version :DM9008-DS-F02
June 14, 2000
41
Buffer Ring Overflow
If the Buffer Ring has been filled and the DMA reaches the
Boundary Pointer Address, reception of the incoming packet
will be aborted by the ENC. Thus, the packets previously
received and still contained in the Ring will not be erased.
In a heavily loaded network environment, the local DMA may
be disabled, preventing the DM9008 from buffering packets
from the network. To guarantee this will not happen, a software
reset must be issued during all Receive Buffer Ring overflows
(indicated by the OVW bit in the ISR). The following procedure
is used to recover from a Receiver Buffer Ring Overflow.
1. Issue
Register=21H). DM9008 may not immediately enter
the STOP mode. If it is currently processing a packet,
ENC will enter STOP mode only after finishing the
packet. DM9008 indicates that it has entered STOP
mode by setting the RST bit in theInterrupt Status
Register.
the
STOP
mode
command
(Command
2. Clear the Remote Byte Counter Registers (RBCR0,
RBCR1). The DM9008 requires these registers to be
cleared before it sets the RST bit.
3. Poll the Interrupt Status Register for the RST bit.
When set, the ENC is in Stop mode.
4. Place DM9008 in LOOPBACK (mode 1 or 2) by writing
02H or 04H to the Transmit Configuration Register.
This step is required to properly enable DM9008 to be
used on an active network.
5. Issue
Register=22H). The local receive DMA is still inactive
because DM9008 is in LOOPBACK.
the
START
mode
command
(Command
6. Remove at least one packet from the Receive Buffer
Ring to accommodate additional incoming packets.
7. Take DM9008 out of LOOPBACK by programming the
Transmit Configuration Register to its original and
resume normal operation.
Note: If the Remote DMA channel is not used, step 6
may be eliminated and packets can be removed
from the Receive Buffer Ring after step 1. This will
reduce or eliminate the polling time incurred in
step 3.
End of Packet Operations
At the end of the packet, DM9008 determines whether the
received packet is to be accepted or rejected. It branches
either to a routine to store Buffer Header, or to another routine
that recovers the buffers used to store the packet.
Successful Reception
If the packet is successfully received, the DMA is restored to
the first buffer used to store the packet (pointed to by CURR).
The DMA then stores the Receive Status, a pointer indicating
where the next packet will be stored, and the number of
received bytes. Note that the remaining bytes in the last buffer
are discarded and reception of the next packet begins on the
next empty 256 byte buffer boundary. CURR is then initialized
to the next available buffer in the Buffer Ring.
Buffer Recovery for Rejected Packets
If the packet is a runt packet or contains CRC or Frame
Alignment errors, it is rejected. The buffer management logic
resets the DMA back to the first buffer page used to store the
packet (pointed to by CURR), recovering all buffers that had
been used to store the rejected packet. This operation will not
be performed if DM9008 is programmed to accept either runt
packets or packets with CRC or Frame Alignment errors. The
received CRC is always stored in buffer memory after the last
byte of data for the packet is received.
Error Recovery
If the packet is rejected, DM9008 resotres DMA by
reprogramming the DMA starting address pointed to by CURR.