In 2019, commit [1] announced changes in DEV_RX_OFFLOAD namespace intending to add new flags, RSS_HASH and FLOW_MARK. Since then, only the former has been added. The problem hasn't been solved. Applications still assume that no efforts are needed to enable flow mark and similar meta data delivery.
The team behind net/sfc driver has to take over the efforts since the problem has started impacting us. Riverhead, a cutting edge Xilinx smart NIC family, has two Rx prefix types. Rx meta data is available only from long Rx prefix. Switching between the prefix formats can't happen in started state. Hence, we run into the same problem which [1] was aiming to solve. Rx meta data (mark, flag, tunnel ID) delivery is not an offload on its own since the corresponding flows must be active to set the data in the first place. Hence, adding offload flags similar to RSS_HASH is not a good idea. Patch [1/5] of this series adds a generic API to let applications negotiate delivery of Rx meta data during initialisation period. This way, an application knows right from the start which parts of Rx meta data won't be delivered. Hence, no necessity to try inserting flows requesting such data and handle the failures. Major clients of the flow library like Open vSwitch will have to be patched separately to benefit from the new approach. [1] c5b2e78d1172 ("doc: announce ethdev API changes in offload flags") Changes in v2: * [1/5] has review notes from Jerin Jacob applied and the ack from Ray Kinsella added * [2/5] has minor adjustments incorporated to follow changes in [1/5] Changes in v3: * [1/5] through [5/5] have review notes from Andy Moreton applied (mostly rewording) * [1/5] has the ack from Jerin Jacob added Ivan Malov (5): ethdev: add API to negotiate delivery of Rx meta data net/sfc: support API to negotiate delivery of Rx meta data net/sfc: support flow mark delivery on EF100 native datapath common/sfc_efx/base: add RxQ flag to use Rx prefix user flag net/sfc: report user flag on EF100 native datapath app/test-flow-perf/main.c | 21 ++++++++++ app/test-pmd/testpmd.c | 26 +++++++++++++ doc/guides/rel_notes/release_21_11.rst | 9 +++++ drivers/common/sfc_efx/base/ef10_rx.c | 54 ++++++++++++++++---------- drivers/common/sfc_efx/base/efx.h | 4 ++ drivers/common/sfc_efx/base/rhead_rx.c | 3 ++ drivers/net/sfc/sfc.h | 2 + drivers/net/sfc/sfc_ef100_rx.c | 19 +++++++++ drivers/net/sfc/sfc_ethdev.c | 29 ++++++++++++++ drivers/net/sfc/sfc_flow.c | 11 ++++++ drivers/net/sfc/sfc_mae.c | 22 ++++++++++- drivers/net/sfc/sfc_rx.c | 6 +++ lib/ethdev/ethdev_driver.h | 19 +++++++++ lib/ethdev/rte_ethdev.c | 25 ++++++++++++ lib/ethdev/rte_ethdev.h | 45 +++++++++++++++++++++ lib/ethdev/rte_flow.h | 12 ++++++ lib/ethdev/version.map | 3 ++ 17 files changed, 287 insertions(+), 23 deletions(-) -- 2.20.1