Intel IXP1200 manual High Level Algorithm, OC-12 Port OC-3 Ports

Page 21

IXP1200 Network Processor Family ATM OC-3/12/Ethernet IP Router Example Design

OC-12 Port

OC-3 Ports

 

 

"Fast-port" speculative receive requests.

"Slow-port" status check before receive requests.

 

 

VC Cache enabled.

VC Cache disabled.

 

 

NUMBER_OF_ATM_PORTS must be 1.

NUMBER_OF_ATM_PORTS may be 1, 2, or 4.

 

 

3.1.2High Level Algorithm

In all configurations, each Receive thread gets its own RFIFO element, as assigned by port_rx_init().

Figure 12. ATM Receive High Level Algorithm

while(1)

#if (ATM_OC3_PORTS)

poll RCV_RDY_LO until port is ready #endif

wait until < 3 receive requests in flight from this engine receive cell from PHY to RFIFO

if (no Buffer Descriptor available "on deck")

pop buffer descriptor from free list. read ATM header from RFIFO

#if (ATM_OC12_PORT) if (RX_CANCEL)

handle & continue

#endif

if (RXFAIL)

handle & continue if(not user cell)

handle & continue #if (ATM_OC12_PORT)

if(ATM header hits in VC cache) get VC info from VC cache

else // cache miss

allocate unused cache entry #endif // ATM_OC12_PORT

look-up VC in hashed VC table if (VC not open)

handle & continue

if (no Buffer Descriptor associated with VC) assign "on deck" descriptor to this VC.

if (VC not open for AAL5) drop cell & continue

if (first cell of PDU)

if (cell LLC/SNAP != VC table LLC/SNAP) drop cell

move first cell to DRAM from RFIFO, calculate CRC-32

else

move nth cell to DRAM from RFIFO, calculate CRC-32 if (last cell of PDU)

if (bad CRC-32)

drop PDU, continue if (AAL5 length == 0)

drop PDU, continue update buffer descriptor

msgq_send() buffer descriptor to IP Route engine else // not last cell

#if (ATM_OC12_PORT)

update and exit VC cache entry #endif

update VC table entry

Application Note

21

Modified on: 3/20/02,

Image 21
Contents IXP1200 Network Processor Family Application Note Contents Virtual Circuit Lookup Table Cache Limitations Figures Introduction Purpose of ATM Example DesignScope of Example Design Background Configuration DescriptionSupported / Not Implemented Functions Ethernet, IP and AAL5 Protocol ProcessingSAR Frame and PDU Length vs. IP Packet LengthFrame and PDU Length vs. IP Packet Length Expected Ethernet Transmit BandwidthSoftware Execution EnvironmentDeveloper’s Workbench ATM Data Stream Dialog Box System Overview System Programming ModelHardware System Programming Model StrongARM Core SoftwareATM TX Software PartitioningLookup Tables Data Flow ATM to Ethernet Data FlowVC Lookup ATM to Ethernet Processing Steps IP Lookup TableEthernet to ATM Data Flow StrongARM Core InitializationMicroengine Initialization Microengine Functional BlocksATM Receive Microengine StructureOC-12 Port OC-3 Ports High Level AlgorithmATM Transmit High Level Algorithm ATM Transmit MicroengineEthernet Receive Microengine IP-Router MicroengineEthernet Transmit Microengine Ethernet Receive StructureEthernet Receive High Level Algorithm CRC-32 Calculations using IXP1240/1250 Hardware Ethernet Transmit StructureCRC-32 Hardware Checking on Receive First Cell of a PDU in Rfifo and in Dram Bytes Big Endian DiagramTransmit Alignment CRC-32 Hardware Generation on TransmitFunctional Differences between Checker and Generator CRC-32 Checker and Generator Microengines Soft-CRCVirtual Circuit Lookup Table atmvctable.uc Software Subsystems & Data StructuresCRC-32 Checker and Generator High Level Algorithm CRC-32 ComputationVctablehashed Structure Primary VC Table Vctablelinear StructureVC Table Entry VC Table Management API atmutils.cEntry Description Buffer Offset Buffer IndexCell data11 Entry Description 1.2 OC-3 Configuration VC Cache Function 1.1 OC-12 ConfigurationVirtual Circuit Lookup Table Cache VC Cache StructureVC Cache API IP Lookup TableIP Table Function IP Table StructureRoutetableinit IP Table Management APIMtuchange AtmrouteaddRtentinfo EnetrouteaddRoutedelete Rthelp2 3 4 5 6 7 8 Sram Buffer Descriptors and Dram Data BuffersSram Buffer Descriptor Format Next BD Last Quad Queue IndexATM Header Entry Description 2 3 4 5 6 7 8 Bytes Dram Data Buffer Format2 3 4 Enet SrcAdrSystem Limit on Packet Buffers Sequence Numbers sequence.ucSequencehandle Usage API Call DescriptionUsage Model Message Queues msgq.ucExample Step Sequence Operation Bakery Line AnalogyMsgqinitqueue Msgqhandle ParametersMsgqinitregs MsgqsendRamoption MsgqreceiveFeature Description 1.1 FeaturesBuffer Descriptor Queues bdq.uc BDQ Management MacrosCount CountersUse of the Counter Subsystem Global ParametersCounter Base Address Counter IndexCounter Flags Global Counter Enable and Flags#define Statement Description Counter Group DescriptionCounters.uc Counterreset CounterincPortcounterinc Intotaldiscards Portcounterinc AlgorithmCountersprint Counters.c CountersinitAtmtxcrcbadbd Global $transfer Register Name Manager xfer.ucMutexvectorinit Mutex VectorsMutexvectorenter MutexvectorexitProject Configuration / Modifying the Example Design Inter-Thread SignallingProjectconfig.h Testing Environments Systemconfig.hSwitching Between Hardware Configurations Simulation Support Scripts, etc LimitationsExtending the Example Design Acronyms & Definitions Document ConventionsByte 10 11 12 13 14 15 16 ... BytesTitle Description Related Documents