Commit 5e95af5f authored by Raed Salem's avatar Raed Salem Committed by Leon Romanovsky

IB/mlx5: Add flow counters read support

Implements the flow counters read wrapper.
Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarRaed Salem <raeds@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 3b3233fb
...@@ -3035,6 +3035,19 @@ static void set_underlay_qp(struct mlx5_ib_dev *dev, ...@@ -3035,6 +3035,19 @@ static void set_underlay_qp(struct mlx5_ib_dev *dev,
} }
} }
static int read_flow_counters(struct ib_device *ibdev,
struct mlx5_read_counters_attr *read_attr)
{
struct mlx5_fc *fc = read_attr->hw_cntrs_hndl;
struct mlx5_ib_dev *dev = to_mdev(ibdev);
return mlx5_fc_query(dev->mdev, fc,
&read_attr->out[IB_COUNTER_PACKETS],
&read_attr->out[IB_COUNTER_BYTES]);
}
/* flow counters currently expose two counters packets and bytes */
#define FLOW_COUNTERS_NUM 2
static int counters_set_description(struct ib_counters *counters, static int counters_set_description(struct ib_counters *counters,
enum mlx5_ib_counters_type counters_type, enum mlx5_ib_counters_type counters_type,
struct mlx5_ib_flow_counters_desc *desc_data, struct mlx5_ib_flow_counters_desc *desc_data,
...@@ -3049,6 +3062,8 @@ static int counters_set_description(struct ib_counters *counters, ...@@ -3049,6 +3062,8 @@ static int counters_set_description(struct ib_counters *counters,
/* init the fields for the object */ /* init the fields for the object */
mcounters->type = counters_type; mcounters->type = counters_type;
mcounters->read_counters = read_flow_counters;
mcounters->counters_num = FLOW_COUNTERS_NUM;
mcounters->ncounters = ncounters; mcounters->ncounters = ncounters;
/* each counter entry have both description and index pair */ /* each counter entry have both description and index pair */
for (i = 0; i < ncounters; i++) { for (i = 0; i < ncounters; i++) {
......
...@@ -814,6 +814,12 @@ struct mlx5_memic { ...@@ -814,6 +814,12 @@ struct mlx5_memic {
DECLARE_BITMAP(memic_alloc_pages, MLX5_MAX_MEMIC_PAGES); DECLARE_BITMAP(memic_alloc_pages, MLX5_MAX_MEMIC_PAGES);
}; };
struct mlx5_read_counters_attr {
struct mlx5_fc *hw_cntrs_hndl;
u64 *out;
u32 flags;
};
enum mlx5_ib_counters_type { enum mlx5_ib_counters_type {
MLX5_IB_COUNTERS_FLOW, MLX5_IB_COUNTERS_FLOW,
}; };
...@@ -821,7 +827,12 @@ enum mlx5_ib_counters_type { ...@@ -821,7 +827,12 @@ enum mlx5_ib_counters_type {
struct mlx5_ib_mcounters { struct mlx5_ib_mcounters {
struct ib_counters ibcntrs; struct ib_counters ibcntrs;
enum mlx5_ib_counters_type type; enum mlx5_ib_counters_type type;
void *hw_cntrs_hndl; /* number of counters supported for this counters type */
u32 counters_num;
struct mlx5_fc *hw_cntrs_hndl;
/* read function for this counters type */
int (*read_counters)(struct ib_device *ibdev,
struct mlx5_read_counters_attr *read_attr);
/* max index set as part of create_flow */ /* max index set as part of create_flow */
u32 cntrs_max_index; u32 cntrs_max_index;
/* number of counters data entries (<description,index> pair) */ /* number of counters data entries (<description,index> pair) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment