
176
Bt8230
ATM Segmentation and Reassembly Controller—SAR
N8230DS1F
No Checking
In this scenario, the number of transmit queue entries is greater than the maxi-
mum number of host buffers. This ensures that a transmit queue entry will never
be overwritten. When the host processor has a buffer ready, it immediately writes
the descriptor to the next slot in the queue. Clearly this approach can only be used
if the host has a known, fixed-size buffer pool and the transmit queue can be sized
at least this large.
Checking
If the host’s buffer pool can be larger than the transmit queue size, then the host
processor must invoke some sort of checking to make sure it does not overwrite
pending transmit queue entries. In this case, the host processor must verify its
ownership of the next slot on the queue prior to writing. One approach is to have
the host software keep count of how many entries have been put onto the queue.
When this number approaches the queue size, the host processor checks the
Entries Pending field (SEG_HPND [bits 29–16]) of the SEG_HXMIT register),
to determine how many slots have been processed and freed by the Bt8230. The
number of entries now available to the host is equal to the queue size minus the
number of pending entries. This number is used as the new queue size, the
counter is reset to zero, and the process repeats.
In a checking scenario, the software architecture of the host determines the
parameters to consider when sizing the transmit queue. When the host software
can handle overflow of the transmit queue by queueing PDU buffers until a trans-
mit queue entry becomes available, the optimal queue size is a function of the
host’s queueing depth, the driving application’s maximum buffer burst size, and
the desired frequency of queue checks. If overflow cannot be tolerated but check-
ing is required, then the desirable queue size is a function of the driving applica-
tion’s maximum buffer burst size, and the frequency or interval of those bursts.
The following worst-case conditions should be met to avoid queue overflow:
the number of queue entries in a burst is less than the transmit queue size
the burst interval is greater than the worst-case time for the Bt8230 to pro-
cess burst entries
the worst-case time for the Bt8230 to process burst entries
≈ number of
burst entries * number of VCCs * 150 * SYSCLK period
If the conditions above are violated, the host is adding entries faster than the
Bt8230 can remove them and an overflow condition will occur. This overflow
condition occurs when the ‘entries pending’ field of the SEG_HXMIT register is
equal to the queue size. The rate at which the processor adds queue entries is
based on a function of the application’s traffic characteristics, including the num-
ber of PDUs, the length of each PDU, and the buffer sizes.
Example - A typical host may monitor the queue’s utilization by incre-
menting a counter for every entry made to the queue. When the counter
value approaches the queue size, the host checks the ‘entries pending’
field and updates the counter with this value. The number of currently
available entries is equal to the queue size minus the new counter value.
Again, the host repeats the incrementing counter procedure. The queue
should be sized large enough so that this reading of the SEG_HXMIT
register is limited.
Suppose that the traffic characteristics and host buffer sizes create an
average rate of transmit queue additions of 40 entries per 1 millisecond
(ms). The Bt8230 will remove transmit queue entries at an average rate