@@ -3638,6 +3638,9 @@ int ib_uverbs_ex_query_device(struct ib_uverbs_file *file,
resp.hca_core_clock = attr.hca_core_clock;
resp.response_length += sizeof(resp.hca_core_clock);
+ resp.device_cap_flags2 = upper_32_bits(attr.device_cap_flags);
+ resp.response_length += sizeof(resp.device_cap_flags2);
+
end:
err = ib_copy_to_udata(ucore, &resp, resp.response_length);
return err;
@@ -208,10 +208,16 @@ enum ib_device_cap_flags {
* of I/O operations with single completion queue managed
* by hardware.
*/
- IB_DEVICE_CROSS_CHANNEL = (1 << 27),
+ IB_DEVICE_CROSS_CHANNEL = (1 << 27),
IB_DEVICE_MANAGED_FLOW_STEERING = (1 << 29),
IB_DEVICE_SIGNATURE_HANDOVER = (1 << 30),
IB_DEVICE_ON_DEMAND_PAGING = (1 << 31),
+ /*
+ * The offload arithmetic operations support allows to
+ * the user to benefit from the parallel calculation of
+ * several input vectors of equal length.
+ */
+ IB_DEVICE_VECTOR_CALC = (1ULL << 32),
};
enum ib_signature_prot_cap {
@@ -226,6 +226,11 @@ struct ib_uverbs_ex_query_device_resp {
struct ib_uverbs_odp_caps odp_caps;
__u64 timestamp_mask;
__u64 hca_core_clock; /* in KHZ */
+ /*
+ * Original capability field is limited
+ * by __u32 variable. Need to increase this field
+ */
+ __u64 device_cap_flags2;
};
struct ib_uverbs_query_port {