Difference between DOCA ETH RXQ and RSS queue

New to doca/bluefield, several questions about DOCA ETH RXQ:

how to determine which CPU core a DOCA RXQ queue is bound to?

Additionally, what is the maximum number of DOCA RXQ queues that can be created on BlueField-2? I assume this number is related to the mmap size allocated for each queue.

Furthermore, what are the specific differences between DOCA RXQ queues and RSS queues? My understanding is that RSS queues are more limited in number, but when should DOCA RXQ queue be used, and when is it more appropriate to use RSS queues?

Thank you!

In my opinion, RXQs are bound to doca_pes instread of CPU core.

For example, in the eth_l2_fwd reference application, a rxq is connected to doca_pe using doca_pe_connect_ctx and rxq receive event is registered to the rxq using doca_eth_rxq_event_batch_managed_recv_register. And packet processing logic is done in event callback, which is triggered by pe when it is notified with an event.

As DOCA Core doc says, “The progress engine (PE) enables asynchronous processing and handling of multiple tasks and events of different types in a single-threaded execution environment”, so if not explicitly using multi-threads primitives provided by pthread.h, creating a rxq context on each thread and registering events on these rxqs, the DOCA app would run on a single thread, which can be dispatched to any core by OS.

For the relationship between DOCA ETX RXQ and RSS queue, I guess they are the same. DOCA samples config DOCA Flow for DOCA ETH RXQ by setting:

	struct doca_flow_fwd all_fwd = {.type = DOCA_FLOW_FWD_RSS,
					.rss_queues = rxq_flow_queue_ids,
					.num_of_queues = nb_queues,
					.rss_outer_flags = DOCA_FLOW_RSS_IPV4 | DOCA_FLOW_RSS_UDP};

and the rxq_flow_queue_ids is acquired by doca_eth_rxq_get_flow_queue_id, that means RXQs are RSS queues.

Before DOCA, we may set flow steering rules and process packets using DPDK. Now, DOCA Flow and DOCA ETH provide a easier way to implements ethernet packet processing logic. So it could be possible to write entire app with DOCA, unless there are some functions that DOCA doesn’t support.