mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-21 03:21:56 +07:00
IB/mlx5: Add counters create and destroy support
This patch implements the device counters create and destroy APIs and introducing some internal management structures. Downstream patches in this series will add the functionality to support flow counters binding and reading. Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Raed Salem <raeds@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
b6ba4a9aa5
commit
b29e2a1309
@ -5006,6 +5006,27 @@ static void depopulate_specs_root(struct mlx5_ib_dev *dev)
|
||||
uverbs_free_spec_tree(dev->ib_dev.specs_root);
|
||||
}
|
||||
|
||||
static int mlx5_ib_destroy_counters(struct ib_counters *counters)
|
||||
{
|
||||
struct mlx5_ib_mcounters *mcounters = to_mcounters(counters);
|
||||
|
||||
kfree(mcounters);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct ib_counters *mlx5_ib_create_counters(struct ib_device *device,
|
||||
struct uverbs_attr_bundle *attrs)
|
||||
{
|
||||
struct mlx5_ib_mcounters *mcounters;
|
||||
|
||||
mcounters = kzalloc(sizeof(*mcounters), GFP_KERNEL);
|
||||
if (!mcounters)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
return &mcounters->ibcntrs;
|
||||
}
|
||||
|
||||
void mlx5_ib_stage_init_cleanup(struct mlx5_ib_dev *dev)
|
||||
{
|
||||
mlx5_ib_cleanup_multiport_master(dev);
|
||||
@ -5249,6 +5270,8 @@ int mlx5_ib_stage_caps_init(struct mlx5_ib_dev *dev)
|
||||
dev->ib_dev.destroy_flow_action = mlx5_ib_destroy_flow_action;
|
||||
dev->ib_dev.modify_flow_action_esp = mlx5_ib_modify_flow_action_esp;
|
||||
dev->ib_dev.driver_id = RDMA_DRIVER_MLX5;
|
||||
dev->ib_dev.create_counters = mlx5_ib_create_counters;
|
||||
dev->ib_dev.destroy_counters = mlx5_ib_destroy_counters;
|
||||
|
||||
err = init_node_data(dev);
|
||||
if (err)
|
||||
|
@ -813,6 +813,16 @@ struct mlx5_memic {
|
||||
DECLARE_BITMAP(memic_alloc_pages, MLX5_MAX_MEMIC_PAGES);
|
||||
};
|
||||
|
||||
struct mlx5_ib_mcounters {
|
||||
struct ib_counters ibcntrs;
|
||||
};
|
||||
|
||||
static inline struct mlx5_ib_mcounters *
|
||||
to_mcounters(struct ib_counters *ibcntrs)
|
||||
{
|
||||
return container_of(ibcntrs, struct mlx5_ib_mcounters, ibcntrs);
|
||||
}
|
||||
|
||||
struct mlx5_ib_dev {
|
||||
struct ib_device ib_dev;
|
||||
struct mlx5_core_dev *mdev;
|
||||
|
Loading…
Reference in New Issue
Block a user