[PATCH] app/testpmd: skip stopped queues when forwarding
Dmitry Kozlyuk
dkozlyuk at nvidia.com
Mon Feb 21 09:58:38 CET 2022
Andrew, Ferruh, Thomas, which behavior does ethdev assume (see below)?
> This patch was created with the assumption
> that stopped queues may not be used for Rx/Tx.
> No-op behavior of rte_eth_rx/tx_burst()
> for a stopped queue is not documented.
> Yes, at least some PMDs implement it this way.
> But is this behavior intended?
>
> It is the application that stops the queue or starts it deferred.
> Stopping is non-atomic, so polling the queue is not allowed during it.
> Hence, if the application intends to stop queues, it must either:
>
> a) Know the queue is not polled before stopping it.
> Use case: a secondary that was polling the queue has crashed,
> the primary is doing a recovery to free all mbufs.
> There is no issue since there is no poller to touch the queue.
>
> b) Tell the poller to skip the queue for the time of stopping it.
> Use case: deferred queue start or queue reconfiguration.
> But if the poller is cooperating anyway,
> what prevents it from not touching the queue for longer?
>
> The same considerations apply to starting a queue.
>
> No-op behavior is convenient from the application point of view.
> But it also means that pollers of stopped queues
> will go all the way down to PMD Rx/Tx routines, wasting cycles,
> and some PMDs will do a check for the queue state,
> even though it may never be needed for a particular application.
More information about the dev
mailing list