]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/mlx5: DR, Add memory statistics for domain object
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Tue, 8 Nov 2022 23:39:32 +0000 (01:39 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Fri, 21 Apr 2023 01:35:48 +0000 (18:35 -0700)
Add counters for number of buddies that are currently in use per domain
per buddy type (STE, MODIFY-HEADER, MODIFY-PATTERN).

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_dbg.c
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_icm_pool.c
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h

index 552c7857ca1f3f0f3146926483fb0e49ab3f7335..7e36e1062139ea4581488095197cc2e22c4352cb 100644 (file)
@@ -633,7 +633,7 @@ dr_dump_domain(struct seq_file *file, struct mlx5dr_domain *dmn)
        u64 domain_id = DR_DBG_PTR_TO_ID(dmn);
        int ret;
 
-       seq_printf(file, "%d,0x%llx,%d,0%x,%d,%u.%u.%u,%s,%d\n",
+       seq_printf(file, "%d,0x%llx,%d,0%x,%d,%u.%u.%u,%s,%d,%u,%u,%u\n",
                   DR_DUMP_REC_TYPE_DOMAIN,
                   domain_id, dmn->type, dmn->info.caps.gvmi,
                   dmn->info.supp_sw_steering,
@@ -641,7 +641,10 @@ dr_dump_domain(struct seq_file *file, struct mlx5dr_domain *dmn)
                   LINUX_VERSION_MAJOR, LINUX_VERSION_PATCHLEVEL,
                   LINUX_VERSION_SUBLEVEL,
                   pci_name(dmn->mdev->pdev),
-                  0); /* domain flags */
+                  0, /* domain flags */
+                  dmn->num_buddies[DR_ICM_TYPE_STE],
+                  dmn->num_buddies[DR_ICM_TYPE_MODIFY_ACTION],
+                  dmn->num_buddies[DR_ICM_TYPE_MODIFY_HDR_PTRN]);
 
        ret = dr_dump_domain_info(file, &dmn->info, domain_id);
        if (ret < 0)
index 19e9b4d784541755b17fc56176bd9a4ea7a57292..0b5af9f3f605b7212ae7f9386ea688cd0a79cdbc 100644 (file)
@@ -288,6 +288,8 @@ static int dr_icm_buddy_create(struct mlx5dr_icm_pool *pool)
        /* add it to the -start- of the list in order to search in it first */
        list_add(&buddy->list_node, &pool->buddy_mem_list);
 
+       pool->dmn->num_buddies[pool->icm_type]++;
+
        return 0;
 
 err_cleanup_buddy:
@@ -301,13 +303,17 @@ static int dr_icm_buddy_create(struct mlx5dr_icm_pool *pool)
 
 static void dr_icm_buddy_destroy(struct mlx5dr_icm_buddy_mem *buddy)
 {
+       enum mlx5dr_icm_type icm_type = buddy->pool->icm_type;
+
        dr_icm_pool_mr_destroy(buddy->icm_mr);
 
        mlx5dr_buddy_cleanup(buddy);
 
-       if (buddy->pool->icm_type == DR_ICM_TYPE_STE)
+       if (icm_type == DR_ICM_TYPE_STE)
                dr_icm_buddy_cleanup_ste_cache(buddy);
 
+       buddy->pool->dmn->num_buddies[icm_type]--;
+
        kvfree(buddy);
 }
 
index 37b7b1a79f93e86e1850ca6524d2f2633393ca14..678a993ab053d490302ed58a9b0bc449273395e3 100644 (file)
@@ -72,6 +72,7 @@ enum mlx5dr_icm_type {
        DR_ICM_TYPE_STE,
        DR_ICM_TYPE_MODIFY_ACTION,
        DR_ICM_TYPE_MODIFY_HDR_PTRN,
+       DR_ICM_TYPE_MAX,
 };
 
 static inline enum mlx5dr_icm_chunk_size
@@ -955,6 +956,8 @@ struct mlx5dr_domain {
        struct list_head dbg_tbl_list;
        struct mlx5dr_dbg_dump_info dump_info;
        struct xarray definers_xa;
+       /* memory management statistics */
+       u32 num_buddies[DR_ICM_TYPE_MAX];
 };
 
 struct mlx5dr_table_rx_tx {