IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design
32 Application Note
Modified on: 3/20/02,
The project defaults to support a 64K-entry VC table - independent of the number of ports. It does
this with eight significant VCI bits, and eight more bits split between VPI and ports. This means
that the design can distinguish the difference between 64K different VCs. However, it does not
mean that the design can simultaneously reassemble PDUs on all 64K entries. The system supports
only 16K packet buffers, and would run out of buffers were it to attempt to assemble PDUs on
more than 16K VCs.
4.1.4 VC Table Management API - atm_utils.c
atm_utils.c implements C-language utilities to manage the VC Lookup Table. These utilities are
available both in simulation at the Transactor command prompt, as well as VxWorks kernel entry
points.
The current implementation assumes Permanent Virtual Circuits (PVCs), i.e. it does not support the
StrongARM core updating the VC table while the microcode is using the table. Switched Virtual
Circuit (SVC) support could be added by employing SRAM locks or atomic operations to avoid
conflicts between simultaneous StrongARM core and microengine access to the same VC entry.
4.1.5 VC Table Entry
The format of the VC Table entry for VC_TABLE_HASHED is the same as for
VC_TABLE_LINEAR, with the addition of 2 32-bit words to hold the Next address and the hash
Key for the entry.
This format is only partially hidden from ATM Receive, the consumer of the VC table API, though
macros could be implemented to make it appear to opaque.
Figure 22. VC Table Index
bit positions: Z Y X
- Port VPI VCI
Bit Position Description
X VCI_SIGNIFICANT_BITS - 1
Y VCI_SIGNIFICANT_BITS + VPI_SIGNIFICANT_BITS - 1
Z VCI_SIGNIFICANT_BITS + VPI_SIGNIFICANT_BITS + PORT_SIGNIFICANT_BITS - 1
Figure 23. VC Lookup Entry Table (VC_TABLE_HASHED)
3
13
02
92
82
72
62
52
42
32
22
12
01
91
81
71
61
51
41
31
21
11
09876543210
00 Next
1Key
2 Buffer Offset Buffer Index LLC/SNAP Q AAL
3 CRC
4Cell data11