From: Erez Shitrit <ere...@nvidia.com>

Rule is set according to its specific domain.

Signed-off-by: Erez Shitrit <ere...@nvidia.com>
Signed-off-by: Hamdan Igbaria <hamd...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_rule.c | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c 
b/drivers/net/mlx5/hws/mlx5dr_rule.c
index 519328ccf3..878224d8b3 100644
--- a/drivers/net/mlx5/hws/mlx5dr_rule.c
+++ b/drivers/net/mlx5/hws/mlx5dr_rule.c
@@ -11,18 +11,28 @@ static void mlx5dr_rule_skip(struct mlx5dr_matcher *matcher,
 {
        const struct flow_hw_port_info *vport;
        const struct rte_flow_item_ethdev *v;
+       enum mlx5dr_table_type type;
 
-       /* Flow_src is the 1st priority */
+       /* By default FDB rules are added to both RX and TX */
+       *skip_rx = false;
+       *skip_tx = false;
+
+       type = matcher->tbl->type;
+       if (type == MLX5DR_TABLE_TYPE_FDB_RX || type == 
MLX5DR_TABLE_TYPE_FDB_UNIFIED) {
+               *skip_tx = true;
+               return;
+       } else if (type == MLX5DR_TABLE_TYPE_FDB_TX) {
+               *skip_rx = true;
+               return;
+       }
+
+       /* Flow_src is the 1st priority after table type */
        if (matcher->attr.optimize_flow_src) {
                *skip_tx = matcher->attr.optimize_flow_src == 
MLX5DR_MATCHER_FLOW_SRC_WIRE;
                *skip_rx = matcher->attr.optimize_flow_src == 
MLX5DR_MATCHER_FLOW_SRC_VPORT;
                return;
        }
 
-       /* By default FDB rules are added to both RX and TX */
-       *skip_rx = false;
-       *skip_tx = false;
-
        if (unlikely(mlx5dr_matcher_is_insert_by_idx(matcher)))
                return;
 
@@ -88,6 +98,9 @@ static void mlx5dr_rule_init_dep_wqe(struct 
mlx5dr_send_ring_dep_wqe *dep_wqe,
                break;
 
        case MLX5DR_TABLE_TYPE_FDB:
+       case MLX5DR_TABLE_TYPE_FDB_RX:
+       case MLX5DR_TABLE_TYPE_FDB_TX:
+       case MLX5DR_TABLE_TYPE_FDB_UNIFIED:
                mlx5dr_rule_skip(matcher, mt, items, &skip_rx, &skip_tx);
 
                if (!skip_rx) {
-- 
2.21.0

Reply via email to