On Mon, Apr 11, 2022 at 12:35:50AM +0300, Dmitry Kozlyuk wrote: > Whether it is allowed to call Rx/Tx functions for a stopped queue > was undocumented. Some PMDs make this behavior a no-op > either by explicitly checking the queue state > or by the way how their routines are implemented or HW works. > > No-op behavior may be convenient for application developers. > But it also means that pollers of stopped queues > would go all the way down to PMD Rx/Tx routines, wasting cycles. > Some PMDs would do a check for the queue state on data path, > even though it may never be needed for a particular application. > Also, use cases for stopping queues or starting them deferred > do not logically require polling stopped queues. > > Use case 1: a secondary that was polling the queue has crashed, > the primary is doing a recovery to free all mbufs. > By definition the queue to be restarted is not polled. > > Use case 2: deferred queue start or queue reconfiguration. > The polling thread must be synchronized anyway, > because queue start and stop are non-atomic. > > Prohibit calling Rx/Tx functions on stopped queues. > > Fixes: 0748be2cf9a2 ("ethdev: queue start and stop") > Cc: sta...@dpdk.org > > Signed-off-by: Dmitry Kozlyuk <dkozl...@nvidia.com>
Acked-by: Tyler Retzlaff <roret...@linux.microsoft.com>