OSDN Git Service

IB/core: Introduce counters read verb
authorRaed Salem <raeds@mellanox.com>
Thu, 31 May 2018 13:43:33 +0000 (16:43 +0300)
committerLeon Romanovsky <leonro@mellanox.com>
Sat, 2 Jun 2018 04:33:54 +0000 (07:33 +0300)
The user supplies counters instance and a reference to an output array of
uint64_t.  The driver reads the hardware counters values and writes them
to the output index location in the user supplied array.  All counters
values are represented as uint64_t types.

To be able to successfully read the data the counters must be first bound
to an IB object.

Downstream patches will present binding method for flow counters.

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>
include/rdma/ib_verbs.h

index 4f5d9fd..3769a1c 100644 (file)
@@ -2187,6 +2187,17 @@ struct ib_counters {
        atomic_t        usecnt;
 };
 
+enum ib_read_counters_flags {
+       /* prefer read values from driver cache */
+       IB_READ_COUNTERS_ATTR_PREFER_CACHED = 1 << 0,
+};
+
+struct ib_counters_read_attr {
+       u64     *counters_buff;
+       u32     ncounters;
+       u32     flags; /* use enum ib_read_counters_flags */
+};
+
 struct uverbs_attr_bundle;
 
 struct ib_device {
@@ -2461,6 +2472,9 @@ struct ib_device {
        struct ib_counters *    (*create_counters)(struct ib_device *device,
                                                   struct uverbs_attr_bundle *attrs);
        int     (*destroy_counters)(struct ib_counters  *counters);
+       int     (*read_counters)(struct ib_counters *counters,
+                                struct ib_counters_read_attr *counters_read_attr,
+                                struct uverbs_attr_bundle *attrs);
 
        /**
         * rdma netdev operation