OSDN Git Service

RDMA/mlx5: Create flow table with max size supported
authorMark Bloch <markb@mellanox.com>
Thu, 28 Mar 2019 13:46:22 +0000 (15:46 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 22 Apr 2019 18:24:05 +0000 (15:24 -0300)
Instead of failing the request, just use the supported number of flow
entries.

Signed-off-by: Mark Bloch <markb@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/main.c

index ecd5054..3b220fa 100644 (file)
@@ -3233,12 +3233,11 @@ static struct mlx5_ib_flow_prio *get_flow_table(struct mlx5_ib_dev *dev,
        if (!ns)
                return ERR_PTR(-ENOTSUPP);
 
-       if (num_entries > max_table_size)
-               return ERR_PTR(-ENOMEM);
+       max_table_size = min_t(int, num_entries, max_table_size);
 
        ft = prio->flow_table;
        if (!ft)
-               return _get_prio(ns, prio, priority, num_entries, num_groups,
+               return _get_prio(ns, prio, priority, max_table_size, num_groups,
                                 flags);
 
        return prio;
@@ -3838,8 +3837,7 @@ _get_flow_table(struct mlx5_ib_dev *dev,
                priority = FDB_BYPASS_PATH;
        }
 
-       if (max_table_size < MLX5_FS_MAX_ENTRIES)
-               return ERR_PTR(-ENOMEM);
+       max_table_size = min_t(int, max_table_size, MLX5_FS_MAX_ENTRIES);
 
        ns = mlx5_get_flow_namespace(dev->mdev, fs_matcher->ns_type);
        if (!ns)
@@ -3858,7 +3856,7 @@ _get_flow_table(struct mlx5_ib_dev *dev,
        if (prio->flow_table)
                return prio;
 
-       return _get_prio(ns, prio, priority, MLX5_FS_MAX_ENTRIES,
+       return _get_prio(ns, prio, priority, max_table_size,
                         MLX5_FS_MAX_TYPES, flags);
 }