On Tue, May 22, 2018 at 02:52:45PM -0600, Jason Gunthorpe wrote: > On Tue, May 15, 2018 at 05:09:50PM +0300, Leon Romanovsky wrote: > > From: Raed Salem <raeds@xxxxxxxxxxxx> > > > > This patch implements the uverbs counters read API, it will use the > > specific read counters function to the given type to accomplish its > > task. > > > > Reviewed-by: Yishai Hadas <yishaih@xxxxxxxxxxxx> > > Signed-off-by: Raed Salem <raeds@xxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > drivers/infiniband/hw/mlx5/main.c | 44 +++++++++++++++++++++++++++++++++++++++ > > 1 file changed, 44 insertions(+) > > > > diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c > > index 59ee1e96cf2e..72a521d5638f 100644 > > +++ b/drivers/infiniband/hw/mlx5/main.c > > @@ -5361,6 +5361,49 @@ static void depopulate_specs_root(struct mlx5_ib_dev *dev) > > uverbs_free_spec_tree(dev->ib_dev.specs_root); > > } > > > > +static int mlx5_ib_read_counters(struct ib_counters *counters, > > + struct ib_counters_read_attr *read_attr, > > + struct uverbs_attr_bundle *attrs) > > +{ > > + struct mlx5_ib_mcounters *mcounters = to_mcounters(counters); > > + struct mlx5_read_counters_attr mread_attr = {}; > > + u32 *desc, *index; > > + int ret, i; > > + > > + mutex_lock(&mcounters->mcntrs_mutex); > > + if (mcounters->cntrs_max_index > read_attr->ncounters) { > > + ret = -EINVAL; > > + goto err_bound; > > + } > > + > > + mread_attr.out = kcalloc(mcounters->counters_num, sizeof(u64), > > + GFP_KERNEL); > > + if (!mread_attr.out) { > > + ret = -ENOMEM; > > + goto err_bound; > > + } > > + > > + mread_attr.hw_cntrs_hndl = mcounters->hw_cntrs_hndl; > > + mread_attr.flags = read_attr->flags; > > + ret = mcounters->read_counters(counters->device, &mread_attr); > > This doesn't compile, there is no 'read_counters' in 'struct > mlx5_ib_mcounters' > > struct mlx5_ib_mcounters { > struct ib_counters ibcntrs; > enum mlx5_ib_counters_type type; > void *hw_cntrs_hndl; > /* max index set as part of create_flow */ > u32 cntrs_max_index; > /* number of counters data entries (<description,index> pair) */ > u32 ncounters; > /* counters data array for descriptions and indexes */ > u32 *counters_data; > /* protects access to mcounters internal data */ > struct mutex mcntrs_mutex; > }; Never mind, the series didn't apply properly, it just doesn't compile without some of the devx changes. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html