Add an extension verb to query certain values of device. Currently, only IBV_VALUES_HW_CLOCK is supported, but this verb could support other flags like IBV_VALUES_TEMP_SENSOR, IBV_VALUES_CORE_FREQ, etc. This extension verb only calls the provider. The provider has to query this value somehow and mark the queried values in comp_mask.
Signed-off-by: Matan Barak <[email protected]> --- include/infiniband/verbs.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/include/infiniband/verbs.h b/include/infiniband/verbs.h index 3d66726..4829dac 100644 --- a/include/infiniband/verbs.h +++ b/include/infiniband/verbs.h @@ -1234,6 +1234,16 @@ struct ibv_create_cq_attr_ex { uint32_t flags; }; +enum ibv_values_mask { + IBV_VALUES_MASK_RAW_CLOCK = 1 << 0, + IBV_VALUES_MASK_RESERVED = 1 << 1 +}; + +struct ibv_values_ex { + uint32_t comp_mask; + struct timespec raw_clock; +}; + enum verbs_context_mask { VERBS_CONTEXT_XRCD = 1 << 0, VERBS_CONTEXT_SRQ = 1 << 1, @@ -1250,6 +1260,8 @@ struct ibv_poll_cq_ex_attr { struct verbs_context { /* "grows up" - new fields go here */ + int (*query_values)(struct ibv_context *context, + struct ibv_values_ex *values); struct ibv_cq *(*create_cq_ex)(struct ibv_context *context, struct ibv_create_cq_attr_ex *); void *priv; @@ -1730,6 +1742,27 @@ ibv_create_qp_ex(struct ibv_context *context, struct ibv_qp_init_attr_ex *qp_ini } /** + * ibv_query_values_ex - Get current @q_values of device, + * @q_values is mask (Or's bits of enum ibv_values_mask) of the attributes + * we need to query. + */ +static inline int +ibv_query_values_ex(struct ibv_context *context, + struct ibv_values_ex *values) +{ + struct verbs_context *vctx; + + vctx = verbs_get_ctx_op(context, query_values); + if (!vctx) + return ENOSYS; + + if (values->comp_mask & ~(IBV_VALUES_MASK_RESERVED - 1)) + return EINVAL; + + return vctx->query_values(context, values); +} + +/** * ibv_query_device_ex - Get extended device properties */ static inline int -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
