58
3.0 Functional Description
3.4 Segmentation Coprocessor
Bt8230
ATM Segmentation and Reassembly Controller—SAR
N8230DS1F
more buffers, the host writes the first three words of a transmit queue entry with
the buffer address and control information for a segmentation buffer. The last
word of each transmit queue entry is not used by the Bt8230. The host writes the
queue entries in ascending order and restarts at the beginning of the queue after
the end of the queue is reached. To initiate processing of one or more queued
entries, the host writes the SEG_HNEW[7:0] field in the Host Transmit Queue
Register [SEG_HXMIT; 0x40] with the number of queued entries. When the
Bt8230 processes a transmit entry, it copies the information from the transmit
queue entry into a buffer descriptor stored in Bt8230 local memory. Once pro-
cessed, the transmit queue entry can be reused by the host, even before the corre-
sponding segmentation buffer has been processed by the Bt8230. The number of
transmit
queue
entries
that
are
pending
processing
is
given
by
the
SEG_HPND[13:0] field in the SEG_HXMIT register.
The operation of the Local Transmit Queue is analogous to the Host Transmit
Queue except that the queue is located in Bt8230 local memory and the Local
Transmit Queue Register [SEG_LXMIT; 0x44] is used instead of the
SEG_HXMIT register. The Local Transmit Queue is provided to allow easy mes-
sage insertion by the local processor. Typically, these messages are local (seg-
mented from local memory) signaling and OAM messages. The WR_PTI
(VCC_CTRL[11]) and WR_VCI (VCC_CTRL[10]) control bits in the transmit
queue VCC_CTRL field can be used to multiplex OAM cells with data traffic on
a single segmentation VCC structure.
If these options are used, the OAM buffers must be inserted at CPCS-PDU
boundaries in the data traffic. This can be accomplished by either having each
CPCS-PDU contained within a single buffer, or by placing OAM buffers only
after CPCS-PDU buffers which contain the end of a PDU. When the CPCS-PDU
buffers reside on the Host and use the Host Transmit Queue, and the OAM buffers
reside in the local memory and use the Local Transmit Queue, SEG_XMT_ALT
in the SEG_CTRL register can be used to ensure that the OAM buffers are
inserted only at the end of a CPCS-PDU. The Host should write (and notify the
Bt8230 via the SEG_HNEW[7:0] field) the Host Transmit Queue only with com-
plete CPCS-PDUs. Each PDU may comprise more than one buffer, but all buffers
for the PDU should be added at once. With the SEG_XMT_ALT bit set to zero,
the Bt8230 will process the local transmit queue with the OAM buffers only when
the Host Transmit Queue is empty (at the end of a PDU). Note that processing a
transmit queue entry does not mean that the buffer has completed segmentation,
only that the buffer information has been added to the local control information.
OAM buffers may also be added on a separate VCC structure from the data
traffic. This alleviates any need to place the OAM buffer on CPCS-PDU bound-
aries at the cost of an additional VCC structure in memory. A single VCC struc-
ture may be used for OAM cells on all VCCs by using the CELL segmentation
mode where the ATM header is included in the buffer data. If OAM cells use a
separate VCC structure from data traffic, the SEG_XMT_ALT bit may be set to
one. This causes the Bt8230 to service the Host and Local Transmit Rings alter-
nately and can provide lower latency service for the Local Transmit Queue.
The Bt8230 cannot prevent the host or local processor from overwriting trans-
mit queue entries that have not been serviced by the Bt8230. If the
SEG_HNEW[7:0] or SEG_LNEW[7:0] fields are written with a value that would
cause the corresponding transmit queue to overflow, the new data is ignored and
HRING_OVFL (for Host Transmit Queue) or LRING_OVFL (for Local Transmit
Queue) is set in the Host Interrupt Status Register [HOST_ISTAT0; 0xC0] or