
IBM2520L8767
IBM Processor for ATM Resources
atmrm.chapt05.01
08/27/99
Receive AAL Processing (RAAL)
Page 279 of 553
Note:
The reassembly timeout process can be considerably sped up by temporarily changing the LC Table
Lower Bound Register and the LC Table Upper Bound Register in RAALL. Because it is known which LCD(s)
is (are) being shut down, the lower and upper bounds can both be set to the LCD entry you are shutting
down. That way, only one LCD is examined at the timeout rather than an entire range of LCDs (as defined by
the lower/upper bound registers). Once this is completed, the bounds can be reset to their original values and
everything is back to normal.
Manual Shutdown
This is much more complicated since resources must be checked and freed as required while shutting down
an LCD. There are three specific mechanisms depending on whether the LCD is Mode 6, Mode 7, or (DMA)
scatter mode. You will have to adapt the mechanism to your specific system. This explanation is intended to
give a general understanding as to which issues must be considered.
Because the LCDs are being shut down manually, you must be particularly aware of which resources are in
use and free those that will not be used. Resources to keep in mind are packet buffers, DMA descriptors, and
caches. Remember also to free the packet (if needed) at the finish of a shutdown.
1. Clear the LCDs entry in the LCD table (the VCI to LCD Translate Table in REASM, base address is offset
0x161C). This halts cell reception for this LCD. (Same as in I.)
2. Flush the REASM Cache. This guarantees that the previous step is utterly complete.
3. Read the state of the LCD state variable in the LCD and perform the following steps:
Step
If ...
Then ...
1
state == DOWN
Done.
2
state == IDLE
Using LCD Update Op, set state to DOWN. Done.
3
state == REASM
Decrement the REASM Counter. This is very important!
4
mode == mode 6
Read the REASM pointer and free the pointer. Set LCD state to DOWN. Done.
5
mode == mode 7 (not using scatter/gather)
Read the LCD descriptor state variable.
descriptor state var == FALSE
Set LCD state to DOWN. Free the packet. Done.
descriptor state var == TRUE
Free the descriptor. Set LCD state to DOWN. Free the packet. Done.
6
scatter/gather MODE
Check the LCD NumDesc field.
NumDesc == 0 (no descriptors)
Set LCD state to DOWN. Free the packet. Done.
NumDesc != 0) (free descriptors)
Either step through descriptor list in packet and free each one,
or use DMA engine to do this.
NOTE: freeing the descriptor will put the associated host page back on the
available list so the host pages do not need special treatment.
Set LCD state to DOWN. Free the packet. Done.
7
state == ERROR
Set LCD state to DOWN. Done.