Using the prempt receive queue requires more blocks to be allocated to the port’s receive FIFO. Write a value of decimal 7 to pn_rx_max_blks field, and a value of decimal 13 to the pn_tx_max_blks field (in the Enet_Pn_Max_Blks register) for every port to be enabled for receive IET.
Write the pn_iet_verify[23:0] count in each Ethernet port IET_Verify register to set the verify/response timeout count. The default is 10ms for gig mode. For other time values or link speeds the verify count should be updated. If pn_mac_disableverify is to be set (forced mode) then this step is unnecessary.
For switches with fifo_oneram = 1, more FIFO blocks may be required to be allocated to the receive queues. The receive FIFO block allocation is insufficient if Pn_Rx_Bottom_of_FIFO_Drop is nonzero indicating that receive packets are being dropped due to FIFO block allocation.
Write the IET_Control register in each Ethernet port as below:
Set the pn_iet_port_en bit. The port will not actually be enabled until the iet_en bit is set in CPSW_Control.
The pn_mac_penable bit can be set as desired. No effect will occur until iet_en is set. This bit enables premptable packets to be prempted by express traffic but does not preclude packets from being sent to the prempt queue.
If verify/response is desired then pn_mac_link_fail should be cleared by software to enable verify and response packets. Otherwise, pn_mac_disableverify should be set for forced mode. Verification and response will occur immediately after clearing this bit.
Configure the remaining IET_Control register bits as desired.
Set the iet_en bit in the CPSW_Control register to enable IET operations.
After preemption has been verified, the pn_mac_prempt[7:0] field is written to configure the FIFO priorities to be sent to the prempt queue (the other priorities with cleared bits go to the express queue). The hardware switch for each queue from express to prempt happens only when there are no packets queued on the priority.