As the new queue-based flow rules management mechanism is introduced to the rte_flow. A new steering mode PMD code is also developed to take advantage of the new API.
The HW steering prepares the required flow resources in advanced from the hints when create template table. That means the matcher and most of the actions have been prepared during flow table creation. Limited left actions will be constructed during flow creation if needed. A flow postpone attribute bit describes if flow creation/destruction should be applied to the HW directly or not. An extra push function has also been prepared to force push all the enqueued flows to HW. Once the flow has been applied to the HW, the pull function will be called to get the enqueued creation/destruction flows. The asynchronous flow creation and destruction are handled by queue jobs. The queue job descriptor is currently introduced to convey the flow information and operation type between the flow management in in pull function. Flow rule memory is allocated in PMD layer instead of allocating from HW layer. While destroying the flow, the flow rule memory can only be freed after the event received. *** THIS PATCH SET DEPENDS ON THE NEW RTE_FLOW API *** Suanming Mou (13): net/mlx5: introduce hardware steering operation net/mlx5: introduce hardware steering enable routine net/mlx5: add port flow configuration net/mlx5: add pattern template management net/mlx5: add action template management net/mlx5: add table management net/mlx5: add basic flow queue operation net/mlx5: add flow flush function net/mlx5: add flow jump action net/mlx5: add queue and RSS action net/mlx5: add mark action net/mlx5: add indirect action net/mlx5: add header reformat action drivers/net/mlx5/linux/mlx5_flow_os.h | 1 + drivers/net/mlx5/linux/mlx5_os.c | 22 +- drivers/net/mlx5/meson.build | 1 + drivers/net/mlx5/mlx5.c | 50 +- drivers/net/mlx5/mlx5.h | 63 +- drivers/net/mlx5/mlx5_devx.c | 10 + drivers/net/mlx5/mlx5_flow.c | 569 +++++- drivers/net/mlx5/mlx5_flow.h | 276 +++ drivers/net/mlx5/mlx5_flow_dv.c | 175 +- drivers/net/mlx5/mlx5_flow_hw.c | 2284 +++++++++++++++++++++++++ drivers/net/mlx5/mlx5_flow_verbs.c | 7 +- drivers/net/mlx5/mlx5_rx.h | 9 +- drivers/net/mlx5/mlx5_rxq.c | 78 +- 13 files changed, 3374 insertions(+), 171 deletions(-) create mode 100644 drivers/net/mlx5/mlx5_flow_hw.c -- 2.25.1