net/mlx5: fix representor ID check for sampling
authorJiawei Wang <jiaweiw@nvidia.com>
Tue, 29 Jun 2021 06:59:53 +0000 (09:59 +0300)
committerRaslan Darawsheh <rasland@nvidia.com>
Thu, 8 Jul 2021 20:09:22 +0000 (22:09 +0200)
The representor definition was introduced in the latest code.
For non-representor port, like PF port, use the 0xffff instead of -1.

This patch updates the representor id checking during splitting sample
flow.

Fixes: cb95feefdd03 ("net/mlx5: support sub-function representor")
Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Xueming Li <xuemingl@nvidia.com>
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_flow.c
drivers/net/mlx5/mlx5_flow_dv.c

index 32b2817..1b2dc8f 100644 (file)
@@ -1331,7 +1331,7 @@ struct mlx5_priv {
        uint16_t vport_id; /* Associated VF vport index (if any). */
        uint32_t vport_meta_tag; /* Used for vport index match ove VF LAG. */
        uint32_t vport_meta_mask; /* Used for vport index field match mask. */
-       int32_t representor_id; /* -1 if not a representor. */
+       uint16_t representor_id; /* UINT16_MAX if not a representor. */
        int32_t pf_bond; /* >=0, representor owner PF index in bonding. */
        unsigned int if_index; /* Associated kernel network device index. */
        /* RX/TX queues. */
index c5d4a95..3b7c94d 100644 (file)
@@ -5900,8 +5900,8 @@ flow_create_split_sample(struct rte_eth_dev *dev,
                                                  RTE_FLOW_ERROR_TYPE_ACTION,
                                                  NULL, "no memory to split "
                                                  "sample flow");
-               /* The representor_id is -1 for uplink. */
-               fdb_tx = (attr->transfer && priv->representor_id != -1);
+               /* The representor_id is UINT16_MAX for uplink. */
+               fdb_tx = (attr->transfer && priv->representor_id != UINT16_MAX);
                /*
                 * When reg_c_preserve is set, metadata registers Cx preserve
                 * their value even through packet duplication.
index d107665..8cbdf20 100644 (file)
@@ -5524,7 +5524,7 @@ flow_dv_validate_action_sample(uint64_t *action_flags,
                                                  "E-Switch must has a dest "
                                                  "port for mirroring");
                if (!priv->config.hca_attr.reg_c_preserve &&
-                    priv->representor_id != -1)
+                    priv->representor_id != UINT16_MAX)
                        *fdb_mirror_limit = 1;
        }
        /* Continue validation for Xcap actions.*/