The C2H descriptors can be from the descriptor fetch engine or C2H bypass input interfaces. The descriptors from the descriptor fetch engine are always in cache mode. The prefetch engine keeps the order of the descriptors to pair with the C2H data packets from the user. The descriptors from the C2H bypass input interfaces have one interface for both simple mode and cache mode (note that both simple bypass and cache bypass use the same interface). For simple mode, the user application keeps the order of the descriptors to pair with the C2H data packets. For cache mode, the prefetch engine keeps the order of the descriptors to pair with the C2H data packet from the user.
The prefetch context has a bypass bit. When it is 1'b1, the user application sends the credits for the
descriptors. When it is 1'b0, the prefetch engine
handles the credits for the descriptors.
The descriptor context has a bypass bit. When it is 1'b1, the descriptor fetch engine sends out the
descriptors on the C2H bypass output interface. The user application can convert it
and later loop it back to the QDMA on
the C2H bypass input interface. When the bypass context bit is 1'b0, the descriptor fetch engine sends the descriptors
to the prefetch engine directly.
On a per queue basis, three cases are supported.
c2h_byp_in_st_csh_* ports).| c2h_byp_in | desc_ctxt.desc_byp | pfch_ctxt.bypass | |
|---|---|---|---|
| Simple bypass mode | simple byp in | 1 | 1 |
| Cache bypass mode | cache byp in | 1 | 0 |
| Cache internal mode | N/A | 0 | 0 |
Simple Bypass Mode
For simple bypass mode, the descriptor fetch engine sends the descriptors out on the C2H bypass out interface. The user application converts the descriptor and loops it back to the QDMA on the simple mode C2H bypass input interface. The user application sends the credits for the descriptors, and it also keeps the order of the descriptors.
If you already have descriptors, there is no need to update the pointers or provide credits. Instead, send the descriptors in the descriptor bypass interface, and send the data and Completion (CMPT) packets.
Cache Bypass Mode
For cache bypass mode, the descriptor fetch engine sends the descriptors out on the C2H bypass output interface. The user application converts the descriptor and loops it back to the QDMA on the cache mode C2H bypass input interface. The prefetch engine sends the credits for the descriptors, and it keeps the order of the descriptors.
For cache internal mode, the descriptor fetch engine sends the descriptors to the prefetch engine. The prefetch engine sends out the credits for the descriptors and keeps the order of the descriptors. In this case, the descriptors do not go out on the C2H bypass output and do not come back on the C2H bypass input interfaces.
In cache bypass or internal mode, prefetch mode can be turned on which will prefetch the descriptor and will reduce transfer latency significantly. When prefetch mode is enabled, the user application can not send credits as input in QDMA Descriptor Credit input ports. Credits for all queues will be maintained by prefetch engine.
In cache bypass mode c2h_byp_out_pfch_tag[6:0] signal should be looped back as an input
c2h_byp_in_st_csh_pfch_tag[6:0]. The prefetch
tag points to the cam that stores the active queues in the prefetch engine.