> -----Original Message----- > From: David Marchand <[email protected]> > Sent: Tuesday, June 20, 2023 2:10 PM > To: [email protected] > Cc: NBU-Contact-Thomas Monjalon (EXTERNAL) <[email protected]>; > [email protected]; Ali Alnubani <[email protected]>; Aman Singh > <[email protected]>; Yuying Zhang <[email protected]>; > Matan Azrad <[email protected]>; Slava Ovsiienko > <[email protected]>; Ori Kam <[email protected]>; Suanming Mou > <[email protected]>; David Christensen <[email protected]>; > Ruifeng Wang <[email protected]>; Bruce Richardson > <[email protected]>; Konstantin Ananyev > <[email protected]>; Andrew Rybchenko > <[email protected]>; Ferruh Yigit <[email protected]> > Subject: [RFC PATCH v3] 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- > [email protected]/ > Signed-off-by: David Marchand <[email protected]>
We did not notice the degradation, so: Acked-by: Viacheslav Ovsiienko <[email protected]> > --- > Changes since RFC v2: > - fixed crash introduced in v2 and removed unneeded argument to > rte_flow_restore_info_dynflag_register(), > > Changes since RFC v1: > - rebased, > - updated vectorized datapath functions for net/mlx5, > - moved dynamic flag register to rte_eth_rx_metadata_negotiate() and > hid rte_flow_restore_info_dynflag_register() into ethdev internals, > > --- > app/test-pmd/util.c | 9 +++-- > drivers/net/mlx5/mlx5.c | 2 + > drivers/net/mlx5/mlx5.h | 5 ++- > drivers/net/mlx5/mlx5_flow.c | 47 +++++++++++++++++++++--- > drivers/net/mlx5/mlx5_rx.c | 2 +- > drivers/net/mlx5/mlx5_rx.h | 1 + > drivers/net/mlx5/mlx5_rxtx_vec_altivec.h | 16 ++++---- > drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 6 +-- > drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 6 +-- > drivers/net/mlx5/mlx5_trigger.c | 4 +- > drivers/net/sfc/sfc_dp.c | 14 +------ > lib/ethdev/rte_ethdev.c | 5 +++ > lib/ethdev/rte_flow.c | 27 ++++++++++++++ > lib/ethdev/rte_flow.h | 18 ++++++++- > lib/ethdev/rte_flow_driver.h | 6 +++ > lib/ethdev/version.map | 1 + > 16 files changed, 128 insertions(+), 41 deletions(-) >

