[PATCH v2 1/6] ethdev: check that device supports deferred start
Bruce Richardson
bruce.richardson at intel.com
Mon Feb 17 18:12:25 CET 2025
On Fri, Feb 14, 2025 at 09:38:54AM -0800, Stephen Hemminger wrote:
> The check for supporting deferred start should be handled at
> the ethdev level for all devices.
>
> Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
> Acked-by: Andrew Rybchenko <andrew.rybchenko at oktetlabs.ru>
> ---
> lib/ethdev/rte_ethdev.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> index c4079bb924..5493b3b9f8 100644
> --- a/lib/ethdev/rte_ethdev.c
> +++ b/lib/ethdev/rte_ethdev.c
> @@ -2274,6 +2274,13 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,
> if (rx_conf != NULL)
> rx_offloads |= rx_conf->offloads;
>
> + /* Deferred start requires that device supports queue start */
> + if (rx_conf && rx_conf->rx_deferred_start && *dev->dev_ops->rx_queue_start == NULL) {
I must admit to being a little confused by the initial "*" at the beginning
of the function pointer check, but Stephen has correctly pointed out that
this style seems to be used everywhere in DPDK. Can someone perhaps just
explain why we check for "*fn_ptr == NULL", rather than just "fn_ptr == NULL".
Testing with code in gdb shows that both work fine, though interestingly
gdb itself gives and error when you interactively request a dereference of
a null fn pointer, i.e. have the extra initial "*".
/Bruce
More information about the dev
mailing list