[RFC PATCH v2] ethdev: advertise flow restore in mbuf

Ali Alnubani alialnu at nvidia.com
Tue Jun 20 12:04:57 CEST 2023


> -----Original Message-----
> From: David Marchand <david.marchand at redhat.com>
> Sent: Thursday, June 15, 2023 4:47 PM
> To: dev at dpdk.org
> Cc: NBU-Contact-Thomas Monjalon (EXTERNAL) <thomas at monjalon.net>;
> i.maximets at ovn.org; Aman Singh <aman.deep.singh at intel.com>; Yuying
> Zhang <yuying.zhang at intel.com>; Matan Azrad <matan at nvidia.com>; Slava
> Ovsiienko <viacheslavo at nvidia.com>; Ori Kam <orika at nvidia.com>;
> Suanming Mou <suanmingm at nvidia.com>; David Christensen
> <drc at linux.vnet.ibm.com>; Ruifeng Wang <ruifeng.wang at arm.com>; Bruce
> Richardson <bruce.richardson at intel.com>; Konstantin Ananyev
> <konstantin.v.ananyev at yandex.ru>; Andrew Rybchenko
> <andrew.rybchenko at oktetlabs.ru>; Ferruh Yigit <ferruh.yigit at amd.com>
> Subject: [RFC PATCH v2] ethdev: advertise flow restore in mbuf
> 
> As reported by Ilya [1], unconditionally calling
> rte_flow_get_restore_info() impacts an application performance for drivers
> that do not provide this ops.
> It could also impact processing of packets that require no call to
> rte_flow_get_restore_info() at all.
> 
> Register a dynamic mbuf flag when an application negotiates tunnel
> metadata delivery (calling rte_eth_rx_metadata_negotiate() with
> RTE_ETH_RX_METADATA_TUNNEL_ID).
> 
> Drivers then advertise that metadata can be extracted by setting this
> dynamic flag in each mbuf.
> 
> The application then calls rte_flow_get_restore_info() only when required.
> 
> Link: http://inbox.dpdk.org/dev/5248c2ca-f2a6-3fb0-38b8-
> 7f659bfa40de at ovn.org/
> Signed-off-by: David Marchand <david.marchand at redhat.com>
> ---

Hello David,

App segfaults at startup with this patch applied on main:

$ ./build/app/dpdk-testpmd -a 0000:86:00.0 -- -i

#0  0x0000000000a11133 in rte_flow_restore_info_dynflag_register (flag=0x0) at ../lib/ethdev/rte_flow.c:1467
#1  0x00000000009f6f7f in rte_eth_rx_metadata_negotiate (port_id=0, features=0x7fffffffe280)
    at ../lib/ethdev/rte_ethdev.c:6446
#2  0x00000000004eb003 in eth_rx_metadata_negotiate_mp (port_id=0) at ../app/test-pmd/testpmd.c:572
#3  0x00000000004eca7d in init_config_port_offloads (pid=0, socket_id=1) at ../app/test-pmd/testpmd.c:1627
#4  0x00000000004ecf0d in init_config () at ../app/test-pmd/testpmd.c:1737
#5  0x00000000004f3b15 in main (argc=2, argv=0x7fffffffe5e0) at ../app/test-pmd/testpmd.c:4592

Device: ConnectX-6 Dx

Regards,
Ali


More information about the dev mailing list