The RX PKT Handler module receives the incoming RDMA packets. Non-RDMA packets should be filtered out before receiving the RX PKT Handler ( roce_cmac_s_axis ) interface. The ERNIC IP handles the following types of incoming RoCE v2 packets:
• RDMA SEND, RDMA WRITE, RDMA READ and response packets for RDMA READ (request sent from ERNIC)
• RDMA SEND with Invalidate, RDMA SEND with immediate, and RDMA WRITE with immediate packets
• Acknowledgment packets for RDMA WRITE/RDMA SEND (request sent from ERNIC)
• Communication management (Management Datagram) packets to QP1
The RX PKT Handler module is responsible for validating the incoming packets. It also triggers outgoing acknowledgment packets for incoming RDMA SEND and RDMA WRITE requests and pushes the packets that pass the validation to the corresponding memory location. The RDMA READ responses are channeled to the target application directly. The module handles the incoming RDMA READ requests and forwards the request to the TX path.
The RX PKT Handler module also decodes the RDMA SEND invalidate/Immediate and RDMA WRITE Immediate packets. The 32-bit data present in either IETH or IMMDT headers is provided on a separate AXI4-Stream interface. 64 bits of data is provided on this streaming interface for every entry. Below table shows encoding of these 64 bits.
An external hardware logic needs to be implemented to handle this invalidate/immediate data provided on this interface. For example AXI DMA IP to convert streaming interface to AXI Memory mapped interface and write the data to specific location and notify to software or hardware application.
Outgoing Pause requests for RDMA traffic are handled inside this module. When remaining buffer locations reaches to XON condition then it triggers for Pause ON and deasserts when buffer pointer reaches to XOFF condition.