]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5: DR, Remove rehash ctrl struct from dr_htbl
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Sun, 4 Jul 2021 17:54:26 +0000 (20:54 +0300)
committerSaeed Mahameed <saeedm@nvidia.com>
Thu, 26 Aug 2021 22:38:04 +0000 (15:38 -0700)
The calculations to decide for the maximum allowed collision threshold
are simple and there is no reason to save them on the htbl struct.

Signed-off-by: Erez Shitrit <erezsh@nvidia.com>
Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Alex Vesker <valex@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h

index 72c75d8e6bbfdc3f41702affa642c55d3cfef0b8..f853a48e07b2ba2736724a2f6fabe6791523740e 100644 (file)
@@ -628,18 +628,20 @@ static bool dr_rule_need_enlarge_hash(struct mlx5dr_ste_htbl *htbl,
                                      struct mlx5dr_domain_rx_tx *nic_dmn)
 {
        struct mlx5dr_ste_htbl_ctrl *ctrl = &htbl->ctrl;
+       int threshold;
 
        if (dmn->info.max_log_sw_icm_sz <= htbl->chunk_size)
                return false;
 
-       if (!ctrl->may_grow)
+       if (!mlx5dr_ste_htbl_may_grow(htbl))
                return false;
 
        if (dr_get_bits_per_mask(htbl->byte_mask) * BITS_PER_BYTE <= htbl->chunk_size)
                return false;
 
-       if (ctrl->num_of_collisions >= ctrl->increase_threshold &&
-           (ctrl->num_of_valid_entries - ctrl->num_of_collisions) >= ctrl->increase_threshold)
+       threshold = mlx5dr_ste_htbl_increase_threshold(htbl);
+       if (ctrl->num_of_collisions >= threshold &&
+           (ctrl->num_of_valid_entries - ctrl->num_of_collisions) >= threshold)
                return true;
 
        return false;
index 6ea314ff05ec0768073b048ed6bc7cdbb717c13b..15fecb491c5565de327e1f1a175fc1ccc6d9db13 100644 (file)
@@ -467,21 +467,6 @@ free_table:
        return -ENOENT;
 }
 
-static void dr_ste_set_ctrl(struct mlx5dr_ste_htbl *htbl)
-{
-       struct mlx5dr_ste_htbl_ctrl *ctrl = &htbl->ctrl;
-       int num_of_entries;
-
-       htbl->ctrl.may_grow = true;
-
-       if (htbl->chunk_size == DR_CHUNK_SIZE_MAX - 1 || !htbl->byte_mask)
-               htbl->ctrl.may_grow = false;
-
-       /* Threshold is 50%, one is added to table of size 1 */
-       num_of_entries = mlx5dr_icm_pool_chunk_size_to_entries(htbl->chunk_size);
-       ctrl->increase_threshold = (num_of_entries + 1) / 2;
-}
-
 struct mlx5dr_ste_htbl *mlx5dr_ste_htbl_alloc(struct mlx5dr_icm_pool *pool,
                                              enum mlx5dr_icm_chunk_size chunk_size,
                                              u16 lu_type, u16 byte_mask)
@@ -518,7 +503,6 @@ struct mlx5dr_ste_htbl *mlx5dr_ste_htbl_alloc(struct mlx5dr_icm_pool *pool,
        }
 
        htbl->chunk_size = chunk_size;
-       dr_ste_set_ctrl(htbl);
        return htbl;
 
 out_free_htbl:
index caff9fc4b8ca857cd9352dd32f7d5a17af0fb72b..9ba4f379afa5915005346731d81bf9c2ee34f06d 100644 (file)
@@ -171,8 +171,6 @@ struct mlx5dr_ste_htbl_ctrl {
 
        /* total number of collisions entries attached to this table */
        unsigned int num_of_collisions;
-       unsigned int increase_threshold;
-       u8 may_grow:1;
 };
 
 struct mlx5dr_ste_htbl {
@@ -1088,6 +1086,25 @@ mlx5dr_icm_pool_chunk_size_to_byte(enum mlx5dr_icm_chunk_size chunk_size,
        return entry_size * num_of_entries;
 }
 
+static inline int
+mlx5dr_ste_htbl_increase_threshold(struct mlx5dr_ste_htbl *htbl)
+{
+       int num_of_entries =
+               mlx5dr_icm_pool_chunk_size_to_entries(htbl->chunk_size);
+
+       /* Threshold is 50%, one is added to table of size 1 */
+       return (num_of_entries + 1) / 2;
+}
+
+static inline bool
+mlx5dr_ste_htbl_may_grow(struct mlx5dr_ste_htbl *htbl)
+{
+       if (htbl->chunk_size == DR_CHUNK_SIZE_MAX - 1 || !htbl->byte_mask)
+               return false;
+
+       return true;
+}
+
 static inline struct mlx5dr_cmd_vport_cap *
 mlx5dr_get_vport_cap(struct mlx5dr_cmd_caps *caps, u32 vport)
 {