RDMA/mlx5: Refactor get flow table function
authorMark Bloch <mbloch@nvidia.com>
Sun, 3 Jul 2022 20:54:06 +0000 (13:54 -0700)
committerLeon Romanovsky <leonro@nvidia.com>
Tue, 19 Jul 2022 17:50:21 +0000 (20:50 +0300)
_get_flow_table() requires the entire matcher being passed
while all it needs is the priority and namespace type.
Pass the priority and namespace type directly instead.

Link: https://lore.kernel.org/all/20220703205407.110890-5-saeed@kernel.org/
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/fs.c

index 39ffb36..b1402ae 100644 (file)
@@ -1407,8 +1407,8 @@ free_ucmd:
 }
 
 static struct mlx5_ib_flow_prio *
-_get_flow_table(struct mlx5_ib_dev *dev,
-               struct mlx5_ib_flow_matcher *fs_matcher,
+_get_flow_table(struct mlx5_ib_dev *dev, u16 user_priority,
+               enum mlx5_flow_namespace_type ns_type,
                bool mcast)
 {
        struct mlx5_flow_namespace *ns = NULL;
@@ -1421,11 +1421,11 @@ _get_flow_table(struct mlx5_ib_dev *dev,
        if (mcast)
                priority = MLX5_IB_FLOW_MCAST_PRIO;
        else
-               priority = ib_prio_to_core_prio(fs_matcher->priority, false);
+               priority = ib_prio_to_core_prio(user_priority, false);
 
        esw_encap = mlx5_eswitch_get_encap_mode(dev->mdev) !=
                DEVLINK_ESWITCH_ENCAP_MODE_NONE;
-       switch (fs_matcher->ns_type) {
+       switch (ns_type) {
        case MLX5_FLOW_NAMESPACE_BYPASS:
                max_table_size = BIT(
                        MLX5_CAP_FLOWTABLE_NIC_RX(dev->mdev, log_max_ft_size));
@@ -1452,17 +1452,17 @@ _get_flow_table(struct mlx5_ib_dev *dev,
                                               reformat_l3_tunnel_to_l2) &&
                    esw_encap)
                        flags |= MLX5_FLOW_TABLE_TUNNEL_EN_REFORMAT;
-               priority = fs_matcher->priority;
+               priority = user_priority;
                break;
        case MLX5_FLOW_NAMESPACE_RDMA_RX:
                max_table_size = BIT(
                        MLX5_CAP_FLOWTABLE_RDMA_RX(dev->mdev, log_max_ft_size));
-               priority = fs_matcher->priority;
+               priority = user_priority;
                break;
        case MLX5_FLOW_NAMESPACE_RDMA_TX:
                max_table_size = BIT(
                        MLX5_CAP_FLOWTABLE_RDMA_TX(dev->mdev, log_max_ft_size));
-               priority = fs_matcher->priority;
+               priority = user_priority;
                break;
        default:
                break;
@@ -1470,11 +1470,11 @@ _get_flow_table(struct mlx5_ib_dev *dev,
 
        max_table_size = min_t(int, max_table_size, MLX5_FS_MAX_ENTRIES);
 
-       ns = mlx5_get_flow_namespace(dev->mdev, fs_matcher->ns_type);
+       ns = mlx5_get_flow_namespace(dev->mdev, ns_type);
        if (!ns)
                return ERR_PTR(-EOPNOTSUPP);
 
-       switch (fs_matcher->ns_type) {
+       switch (ns_type) {
        case MLX5_FLOW_NAMESPACE_BYPASS:
                prio = &dev->flow_db->prios[priority];
                break;
@@ -1618,7 +1618,8 @@ static struct mlx5_ib_flow_handler *raw_fs_rule_add(
        mcast = raw_fs_is_multicast(fs_matcher, cmd_in);
        mutex_lock(&dev->flow_db->lock);
 
-       ft_prio = _get_flow_table(dev, fs_matcher, mcast);
+       ft_prio = _get_flow_table(dev, fs_matcher->priority,
+                                 fs_matcher->ns_type, mcast);
        if (IS_ERR(ft_prio)) {
                err = PTR_ERR(ft_prio);
                goto unlock;