Follow these guidelines for
receiving:
- Program the Receive queue size in the RQS field of
MTL_RxQ[n]_Operation_Mode Register. Based on the value programmed in RQS field,
the size of the queue is determined.
- Enable the Receive Queues 0 to 1 in the fields RXQ0EN to
RXQ1EN in MAC_RxQ_Ctrl0 Register SR bit of statically or dynamically mapped
DMA_CH[n]_Rx_Control Register and corresponding RXQ[n]_EN in MAC_RxQ_Ctrl0
Register needs to be enabled.
- The MAC routes the Rx packets to the Rx Queues based on
following packet types:
- VLAN Tag Priority field in VLAN Tagged packets:
Program PSRQ1-0 of the MAC_RxQ_Ctrl2 and MAC_RxQ_Ctrl3 Register for the
routing of tagged packets based on the USP (user Priority) field of the
received packets to the Rx Queues 0 to 1.
Note: The priorities set in
PSRQ1-0 can be unique.
- If multiple RX DMA channels are enabled, the following
programming can be done for proper arbitration and mapping:
- Program the RAA field of MTL_Operation_Mode register
to select the arbitration algorithm to decide which RxQ is read out from
the RxFIFO memory.
- Program the MTL_RxQ[n]_Control to decide the weights
and the packet arbitration for each RxQ.
- If static mapping is programmed in MTL_RxQ_DMA_Map[n]
register (RXQ[n]DADMACH is reset to 0), bits RXQx2DMA and others need to
be programmed to select the channel for which each queue is mapped.
- Set RXQ[n]DADMACH bit in MTL_RxQ_DMA_Map0 Register to
select dynamic mapping of packets in each RxQueue.
- In dynamic channel mapping, the routing of a packet to
a specific RxDMA channel is decided by the value of DCS field in the
lowest MAC Address Register.