4.2.1. Transmit TX Path
There are two sets of Avalon® streaming interface source and sink signals available to the incoming packets on the transmit TX path. Avalon® streaming interface source/sink connects to the eCPRI IP and external source/sink interface connects to external user logic. The incoming eCPRI packets passes through Ethernet header insertion block to insert Ethernet header, optionally with different VLAN tags, IPv4, and UDP headers configured during configuration time.
You can send different types of packets through the external source/sink interface signal (For example, C&M and synchronization packets) which arbitrates with eCPRI packets and the IP sends packets with the higher priority to Ethernet MAC for transmission. The incoming external user packets are expected to arrive with Ethernet MAC header inserted on the packets.
- Fixed priority arbitration
- L2 CoS priority arbitration based on the O-RAN Control, User and Synchronization Plane Specification 7.01 (ORAN-WG4.CUS.0-v07.01), Section 5.3 Quality of Service.
- PTP synchronization packet
- eCPRI packet
- C&M packets and remaining type of packets
The C&M and PTP synchronization packets are send/receive through external source/sink interface signal. The C&M and PTP synchronization packets are generally low bandwidth traffic. When there is collision between external PTP synchronization packets and eCPRI packets, backpressure to the eCPRI IP occurs to stop eCPRI packets from transmitting. The eCPRI IP implements a counter to track the number of eCPRI packets and PTP packets granted and raise the priority of the C&M packet when the counter reaches a programmable threshold to allow the C&M packet transmission to Ethernet MAC and avoid starvation.
Ensure the bandwidth of external source/sink interface signal won't starve the overall bandwidth and cause interruption on eCPRI traffics. The grant ratio between C&M packets versus eCPRI/PTP packets is 10:1. The bandwidth allocated to C&M packets is 2.5G or 1G. The maximum C&M/PTP FIFO depth is 256 or 2048 bytes for eCPRI IP. The C&M/PTP FIFO should not be kept full beyond 2062.5 * (mac_clk_tx) clock period, to allow for enough read margin prior to the arrival of the new packets.
When you set the Ethernet frame size to 9000 bytes, data from Avalon® streaming interface sink directly pass through and does not required buffering. You must assert avst_sink_valid continuously between the assertions of avst_sink_sop and avst_sink_eop. The only exception is when avst_sink_ready signal deasserts, and you are required to deassert avst_sink_valid for three cycles of READY_LATENCY.
The second L2 CoS priority arbitration is based on the ORAN-WG4.CUS.0-v07.01 specification, Section 5.3 Quality of Service, where the L2 CoS Priority of the packet determines the arbitration priority of the packet. You can enable this arbitration with Advance Mapping Mode. There are eight queues available to queue the packets for arbitration. Each queue is assigned with fixed priority 0 to 7, where queue 7 has the highest arbitration priority, and queue 0 has the lowest arbitration priority. Packets are stored into each queue according to the Priority Code Point (PCP) tag value extracted from the packet; for example, a packet with the PCP tag value of 7 is queued into queue 7.
The queue size for each priority must be configurable independently and use M20K to reduce ALM count. Queue depth must be configurable with a depth of 0/32/64/128/256 based on IP parameter selection per queue. The unused queue shall be configurable with the size of 0 to ensure no resource wastage. For queue 7, the minimum size is 32, and value 0 is not allowed to avoid a case where all queues are 0 sizes. When a particular queue size is configured to 0 (other than queue 7) and there is a request decoded with the PCP tag value of the queue, the request shall be routed to queue 7.
The ORAN C/U Plane packet uses the eCRPI IP Advance Mapping Mode feature to get the PCP value for the packet. When ORAN C/U Plane packet is sent into eCPRI IP, eCPRI IP uses the PCID sent as sideband and the packet to map to the VLAN tag register. The PCP values extracted from the VLAN tag register determine the queue to store the ORAN C/U Plane packet. The PCP field is a user input at packet SOP for S Plane, M-plane, and other traffic. Packets are stored in the queue according to the PCP field.
The PCP checker arbitrates the traffic (C/U/S/M/Other) based on the PCP tag value in the round-robin and stores it into the respective queue. Since the PTP software stack might not always generate PTP packets with the VLAN ID, the following statements explain the PCP values for handling each ITU-T profilethe the adetermine:
- The first two profiles (8264 and 8275.1 profiles) – No VLAN ID (IP assigns the priority based on the TX Packets Default Priority parameter, default to highest 7).
- The third profile (8275.2 profile) – parse PTP packet to extract PCP from L2/L3 header.
- The primary use case is based on the L2 header and not the L3 header (8275.2 profile) – parser can parse the L2 header only to determine PTP packets and no L3 header parsing.
When the arbitration queue is full, backpressure applies to both eCPRI IP and S/M packets DCFIFO. Backpressure shall only apply on the same priority request. For example, when queue 7 is full, back pressure happens on traffic with PCP = 7 only (can be S/U/C/M plane traffic). Due to one input from ORAN IP for the U plane, subsequent packets with different priorities are blocked when the head of traffic is blocked. If the queue full happens in the middle of the packet, you must submit the remaining packet to the queue before switching to other traffic.
Run time priority change on traffic: You can switch PCP field values at packet boundary only, priority should remain the same for whole packet.
There is no starvation handling in hardware. For example, low-priority traffic always gives way to high-priority traffic and waits for its turn. Therefore, you are expected to handle the traffic flow between different queues to ensure no starvation scenarios which causes low-priority traffic continuously to get stuck in the queue without getting the arbitration grant.
Each queue generates FIFO full port and sends it to the eCPRI IP interface.