[dpdk-dev] [PATCH v2] eventdev: fix Rx adapter event flush logic
Mattias Rönnblom
mattias.ronnblom at ericsson.com
Thu May 9 21:22:08 CEST 2019
On 2019-05-09 06:50, Nikhil Rao wrote:
> The Rx adapter flushes events only if it has BATCH_SIZE
> events buffered where BATCH_SIZE is set to 32, e.g., if a
> single packet is sent, it is never passed to
> eventdev. Fix this issue by adding an event buffer flush
> either when a Rx queue is found to be empty or the adapter service
> function has processed the max number of packets for an invocation.
>
> Bugzilla ID: 277
>
> Fixes: 6b83f5935543 ("eventdev: add event buffer flush in Rx adapter")
>
> Reported-by: Matias Elo <matias.elo at nokia.com>
>
> Signed-off-by: Nikhil Rao <nikhil.rao at intel.com>
> ---
> lib/librte_eventdev/rte_event_eth_rx_adapter.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> v2:
> * added Bugzilla ID
>
> diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> index 8d178be..fd3761b 100644
> --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c
> @@ -872,7 +872,7 @@ static uint16_t rxa_gcd_u16(uint16_t a, uint16_t b)
> break;
> }
>
> - if (buf->count >= BATCH_SIZE)
> + if (buf->count)
> rxa_flush_event_buffer(rx_adapter);
>
> return nb_rx;
>
After this change, is there any point in having the event_enqueue_buffer
being a part of the rx_adapter struct? It could be stack allocated. In
the process, you could eliminate the rte_event copying that goes on and
the logic around that. Just make mbufs ETH_EVENT_BUFFER_SIZE in size,
and retry until the NIC queue is empty or you accumulated
ETH_EVENT_BUFFER_SIZE events. Then you ship it off to the event device.
More information about the dev
mailing list