Intel IXP1200 Network Router User Manual


 
IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design
Application Note 31
Modified on: 3/20/02,
When atm_vc_table_entry_create() attempts to add an entry to the table and determines that the
entry in the primary table is already occupied, it needs to come up with an available entry to thread
onto the Next pointer. Although other implementations (which have less available RAM) take
entries from the primary table to perform this task, this implementation has a dedicated pool of 16K
collision entries that are available in a buf.uc style freelist threaded on hardware stack 1. The
motivation is that VC lookup is on the critical performance path. Therefore, this design needs to
maximize the chances that entries will be found in the primary table rather than on the collision
lists. However, the optimal primary table and collision free-list sizes will depend on the target
workload (an implementation issue).
4.1.3 VC_TABLE_LINEAR Structure
VC_TABLE_LINEAR implements a simple linear array of VC table entry structures in SRAM.
The size of the table depends on the number of VCs being supported, which correspondingly
depends on the number of ports and the number of significant VCI and VPI bits in the ATM header.
The defaults for these parameters are set in system_config.h, and can be overridden in
project_config.h.
Figure 21. Hashed VC Table Structure
A9633-01
Primary VC Table
(SRAM)
Collision freelist starting with
SRAM top of stack register
Primary VC Entry
with a collision list
Primary VC Entry
without a collision list
VC Entry on
collision list
Hardware Top
of Stack Registers
VC Entry at
end of freelist
. . .