Intel IXP1200 manual Global $transfer Register Name Manager xfer.uc, Atmtxcrcbadbd

Page 52

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

237:[42]:

0

ETHER_RX_PACKET_ENQUEUE_ETHER

238:[43]: 1805817712

ATM_TX_CRC_PDU_DQ

239:[44]: 1688091717

ATM_TX_CRC_PDU_ENQ

240:[45]: 1688086138

ATM_RX_CRC_PDU_DQ

241:[46]: 1688086138

ATM_RX_CRC_PDU_ENQ

242:[47]:

0

ATM_RX_IPR_FULLQ

243:[48]:

0

ATM_RX_CRC_CHK_FULLQ

244:[49]: 1510539591

ATM_TX_CRC_GEN_FULLQ

245:[50]:

0

PACKETQ_SEND_BAD_BDA

246:[51]:

0

PACKETQ_SEND_BAD_INDEX

247:[52]:

0

BDQ_ENQUEUE_BAD_INDEX

248:[53]:

0

QUEUE_BAD_BDA

249:[54]:

0

ATM_RX_CRC_BAD_BD

250:[55]:

0

ATM_TX_CRC_BAD_BD

251:[56]: 1688087098

ATM_LOOPBACK forwarded packet with ATM dest to Ethernet

252:[57]:

0

Counter 57

253:[58]:

0

Counter 58

254:[59]:

0

Counter 59

192:117726288 Total Packets Discarded

128:[port 8]: 68882072 PORT_FULLQ

138:[port

8]:

1 IP_BAD_CHECKSUM

144:[port

9]:

48844381 PORT_FULLQ

4.9Global $transfer Register Name Manager - xfer.uc

SRAM transfer registers are easily allocated and deallocated by using .local/.endlocal, or by using the xbuf.uc subsystem, which is based on .local. This works well for read transfer registers, because the programmer always knows when the read is done, and thus when the read transfer register can be freed.

However, write transfer registers are a different problem. While it is possible to use the same mechanism as for read transfer registers, this requires waiting for writes to complete before re- using the write transfer registers, and this wait may impact performance.

An alternative is to not wait for the write to complete, but to infer the completion of writes by their order before subsequent reads in the ordered SRAM queue. The .local mechanism and xbuf.uc require strict block structure, and are thus not well suited to write transfer registers becoming available based on seemingly unrelated events. The question becomes then how to manage the name space for write transfer registers.

The answer, at least for some implementations such as the ATM receive microengine, is to allocate transfer registers globally, and to use the new xfer.uc subsystem to help manage the name space.

//Macros to aid in manually allocating transfer registers.

//Essentially wrappers for .xfer_order, .operand_synonym

//that use the pre-processor to do as much assembly-time

//sanity checking as possible.

//API

//xfer_init(NUM_READ_WRITE)

//xfer_reserve(NAME, POSITION, FLAGS)

//xfer_free(NAME, POSITION, FLAGS)

//Example:

//xfer_init(1) ;; use 1 of 8 $transfers

//xfer_reserve($foo, 0, XFER_RESERVE_READ XFER_RESERVE_WRITE)

//sram[write, $foo], ordered

//sram[read, $foo], ordered, ctx_swap

//xfer_free($foo, 0, XFER_RESERVE_WRITE)

//xfer_reserve($bar, 0, XFER_RESERVE_WRITE)

//sram[write, $bar], ordered

52

Application Note

Modified on: 3/20/02,

Image 52
Contents IXP1200 Network Processor Family Application Note Contents Virtual Circuit Lookup Table Cache Limitations Figures Purpose of ATM Example Design IntroductionScope of Example Design Configuration Description BackgroundSupported / Not Implemented Functions Ethernet, IP and AAL5 Protocol ProcessingFrame and PDU Length vs. IP Packet Length SARExpected Ethernet Transmit Bandwidth Frame and PDU Length vs. IP Packet LengthExecution Environment SoftwareDeveloper’s Workbench ATM Data Stream Dialog Box System Programming Model System OverviewHardware StrongARM Core Software System Programming ModelSoftware Partitioning ATM TXLookup Tables ATM to Ethernet Data Flow Data FlowVC Lookup IP Lookup Table ATM to Ethernet Processing StepsStrongARM Core Initialization Ethernet to ATM Data FlowMicroengine Functional Blocks Microengine InitializationATM Receive Microengine StructureHigh Level Algorithm OC-12 Port OC-3 PortsATM Transmit Microengine ATM Transmit High Level AlgorithmIP-Router Microengine Ethernet Receive MicroengineEthernet Receive Structure Ethernet Transmit MicroengineEthernet Receive High Level Algorithm Ethernet Transmit Structure CRC-32 Calculations using IXP1240/1250 HardwareCRC-32 Hardware Checking on Receive Bytes Big Endian Diagram First Cell of a PDU in Rfifo and in DramCRC-32 Hardware Generation on Transmit Transmit AlignmentCRC-32 Checker and Generator Microengines Soft-CRC Functional Differences between Checker and GeneratorSoftware Subsystems & Data Structures Virtual Circuit Lookup Table atmvctable.ucCRC-32 Checker and Generator High Level Algorithm CRC-32 ComputationVctablehashed Structure Vctablelinear Structure Primary VC TableVC Table Management API atmutils.c VC Table EntryBuffer Offset Buffer Index Entry DescriptionCell data11 Entry Description VC Cache Function 1.1 OC-12 Configuration 1.2 OC-3 ConfigurationVirtual Circuit Lookup Table Cache VC Cache StructureIP Lookup Table VC Cache APIIP Table Function IP Table StructureIP Table Management API RoutetableinitMtuchange AtmrouteaddEnetrouteadd RtentinfoRoutedelete RthelpSram Buffer Descriptors and Dram Data Buffers 2 3 4 5 6 7 8Next BD Last Quad Queue Index Sram Buffer Descriptor FormatATM Header Entry Description Dram Data Buffer Format 2 3 4 5 6 7 8 Bytes2 3 4 Enet SrcAdrSequence Numbers sequence.uc System Limit on Packet BuffersSequencehandle Usage API Call DescriptionMessage Queues msgq.uc Usage ModelExample Step Sequence Operation Bakery Line AnalogyMsgqhandle Parameters MsgqinitqueueMsgqinitregs MsgqsendMsgqreceive Ramoption1.1 Features Feature DescriptionBuffer Descriptor Queues bdq.uc BDQ Management MacrosCounters CountGlobal Parameters Use of the Counter SubsystemCounter Base Address Counter IndexGlobal Counter Enable and Flags Counter Flags#define Statement Description Counter Group DescriptionCounterinc Counters.uc CounterresetPortcounterinc Portcounterinc Algorithm IntotaldiscardsCounters.c Countersinit CountersprintGlobal $transfer Register Name Manager xfer.uc AtmtxcrcbadbdMutex Vectors MutexvectorinitMutexvectorenter MutexvectorexitInter-Thread Signalling Project Configuration / Modifying the Example DesignProjectconfig.h Systemconfig.h Testing EnvironmentsSwitching Between Hardware Configurations Limitations Simulation Support Scripts, etcExtending the Example Design Document Conventions Acronyms & DefinitionsByte 10 11 12 13 14 15 16 ... BytesRelated Documents Title Description