89
3.0 Functional Description
3.5 Reassembly Coprocessor
Bt8230
ATM Segmentation and Reassembly Controller—SAR
N8230DS1F
the HOST_IMASK0 register. The host then needs to update the free buffer queue
and set RSM_EN [bit 31] to restart the reassembly coprocessor. The reassembly
coprocessor will then reread the OB bit of the current free buffer queue and con-
tinue processing. The empty queue protection can be disabled by setting the
RSM_HF_DIS bit in RSM_CTRL.
3.5.9 Firewall Condition
A firewall is a barrier set up to contain designated traffic within a specified area.
In the Bt8230 architecture, firewalling limits the number of cell buffers and thus
the memory bus bandwidth that is available to an individual VCC. This provides a
method of policing the channels to prevent any single channel from consuming
disproportionate resources. Firewalling does not affect OAM cells.
The Bt8230’s firewall feature is enabled at two levels. First, the feature is
enabled globally by setting the FWALL_EN bit (RSM_CTRL[13]) to a logical
one. Next, the firewall feature is enabled on an individual channel by setting the
FW_EN
bit in that channel’s VCC hash bucket to a logical one.
Once both of the firewall-enabling controls are set, the Bt8230 checks the
CBUFF_CNT
field of the RSM VCC Table for the channel being used before tak-
ing a buffer from the Free Buffer Queue. This field is an optional parameter that
is set by the user when initializing the VCC as a receive or full-duplex connection.
If CBUFF_CNT is greater than zero, the Bt8230 decrements it and takes a buffer
from the queue. If CBUFF_CNT is zero, a firewall condition has occurred on that
channel.
When the firewall condition occurs, the Bt8230 sets the FW bit in the RSM
VCC Table for that channel to a logical one. It then issues a Status Queue entry
with the FW bit in the RSM Status Queue set to a logical one. If reassembly of a
PDU was in progress on that VCC, the host will return a pointer to the first buffer
in the reassembly buffer chain for that PDU. The incomplete PDU will be dis-
carded and the buffers containing the PDU will be re-allocated to the free buffer
queue.
The Bt8230 discards all cells on the firewalled channel until it receives a
Beginning of Message (BOM) or Single Segment Message (SSM) cell indicating
that a cell buffer is available. Upon receipt of a BOM or SSM, the Bt8230 will
recheck the CBUFF_CNT field in the channel’s VCC Table entry for a value
greater than zero, recommencing the process described above. The host may
restart reassembly on that channel by reinitializing CBUFF_CNT to a value
greater than zero. If the BUFF_ADDR field in the status entry is non-zero, the
field points to a linked list of cell buffers that should be discarded.
The BUFF_ADDR field of the reassembly Status Queue entry is always
NULL when the firewall condition is triggered by a BOM or SSM indication in a
received cell. If the cell has been stored into multiple receive buffers (i.e., buffers
having a size less than 48 bytes), the buffers used to store the partial cell prior to
the occurrence of the firewall condition will not be recoverable by the system.
(The BUFF_ADDR field is NULL and does not point to the first buffer of the
linked list of buffers containing the cell, so software cannot recover the buffer.)
NOTE:
Do not use buffers of less than 48 bytes in length when firewalling is
enabled.