
PXB 4330 E
ABM Buffer Configuration
Semiconductor Group
30
Application Note 11.98
General Cell Acceptance Algorithm
This pseudocode applies for arriving cells of both rt traffic classes (RTind=’1’) and nrt
traffic classes (RTind=’0’). However it is recommended not to use the BufNrtMax and
BufNrtEPD thresholds in case of rt traffic classes i.e. set these thresholds to maximum
value FFFF
H
(see
Section 1.8
, page 36). Only thresholds which lead to the discarding
of cells are included in the description of this pseudocode i.e. all indication thresholds
(the 3 ABR congestion indication thresholds (= registers UCIT/DCIT, SbMaxEpdCi case
c)
and QCICLP1 case a)) and
the scheduler
LDSTH(7:0)/LDSTL(7:0)) are not included.
/*********************************** Begin of Pseudocode ************************************/
indication
threshold
(=
/*All threshold queries are subsequently passed through although the
exceeding of any threshold leads to cell discarding but e.g. in the EPD
algorithm the exceeding of two thresholds (EPD_globalBuffer=1 AND
EPD_GFR_queue=1) is necessary to trigger EPD for the "high water mark" of
GFR.*/
/*********************************** Event: Connection Setup ********************************/
/* Initialization at connection setup */
LCItable-PPDdiscardRestofPacket-flag_0=0;
LCItable-EPDdiscardPacket-flag_1=0;
LCItable-EPDlastCellofPacketReceived-flag_2=1;
/*********************************** Event: Cell arrival *****************************************/
/* Initialization per cell arrival */
Accept_flag=1;
EPD_globalBuffer=0;
EPD_CLP1_globalBuffer=0;
EPD_scheduler=0;
EPD_queue=0;
EPD_GFR_queue=0;
/* Evaluation if total buffer size (e.g. 64k cells) is occupied */
if (TotalBufferOcc_rt/nrt = UBMTH/DBMTH)
then
Accept_flag = 0;
end if
/* Evaluation if global buffer maximum fill threshold for this traffic
class is exceeded */
if (TotalBufferOcc_nrt
≥
BufNrtMax)
then
if BufNrtMax = maximum fill threshold
then
Accept_flag = 0;
end if