[v1] net/mlx5: enable hint in async table
Checks
Commit Message
Driver gets the hint value from rte_table_attr for async flow.
Parse the value and pass the supported value to hardware accordingly.
Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
---
drivers/net/mlx5/mlx5_flow_hw.c | 9 +++++++++
1 file changed, 9 insertions(+)
Comments
@Slava Ovsiienko Can you help review and ACK?
BR
Rongwei
> -----Original Message-----
> From: Rongwei Liu <rongweil@nvidia.com>
> Sent: Thursday, February 16, 2023 13:49
> To: dev@dpdk.org; Matan Azrad <matan@nvidia.com>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; Ori Kam <orika@nvidia.com>; NBU-Contact-
> Thomas Monjalon (EXTERNAL) <thomas@monjalon.net>
> Cc: Raslan Darawsheh <rasland@nvidia.com>
> Subject: [PATCH v1] net/mlx5: enable hint in async table
>
> External email: Use caution opening links or attachments
>
>
> Driver gets the hint value from rte_table_attr for async flow.
> Parse the value and pass the supported value to hardware accordingly.
>
> Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
> Acked-by: Ori Kam <orika@nvidia.com>
> ---
> drivers/net/mlx5/mlx5_flow_hw.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/drivers/net/mlx5/mlx5_flow_hw.c
> b/drivers/net/mlx5/mlx5_flow_hw.c index b67b33bc22..06d6909974 100644
> --- a/drivers/net/mlx5/mlx5_flow_hw.c
> +++ b/drivers/net/mlx5/mlx5_flow_hw.c
> @@ -3102,6 +3102,15 @@ flow_hw_table_create(struct rte_eth_dev *dev,
> matcher_attr.optimize_using_rule_idx = true;
> matcher_attr.mode = MLX5DR_MATCHER_RESOURCE_MODE_RULE;
> matcher_attr.rule.num_log = rte_log2_u32(nb_flows);
> + /* Parse hints information. */
> + if (attr->specialize) {
> + if (attr->specialize ==
> RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG)
> + matcher_attr.optimize_flow_src =
> MLX5DR_MATCHER_FLOW_SRC_WIRE;
> + else if (attr->specialize ==
> RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG)
> + matcher_attr.optimize_flow_src =
> MLX5DR_MATCHER_FLOW_SRC_VPORT;
> + else
> + DRV_LOG(INFO, "Unsupported hint value %x", attr->specialize);
> + }
> /* Build the item template. */
> for (i = 0; i < nb_item_templates; i++) {
> uint32_t ret;
> --
> 2.27.0
@@ -3102,6 +3102,15 @@ flow_hw_table_create(struct rte_eth_dev *dev,
matcher_attr.optimize_using_rule_idx = true;
matcher_attr.mode = MLX5DR_MATCHER_RESOURCE_MODE_RULE;
matcher_attr.rule.num_log = rte_log2_u32(nb_flows);
+ /* Parse hints information. */
+ if (attr->specialize) {
+ if (attr->specialize == RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_WIRE_ORIG)
+ matcher_attr.optimize_flow_src = MLX5DR_MATCHER_FLOW_SRC_WIRE;
+ else if (attr->specialize == RTE_FLOW_TABLE_SPECIALIZE_TRANSFER_VPORT_ORIG)
+ matcher_attr.optimize_flow_src = MLX5DR_MATCHER_FLOW_SRC_VPORT;
+ else
+ DRV_LOG(INFO, "Unsupported hint value %x", attr->specialize);
+ }
/* Build the item template. */
for (i = 0; i < nb_item_templates; i++) {
uint32_t ret;