Add support for 64B CQEs

ConnectX-3 devices can work with 64- or 32-byte CQEs. Using 64-byte
CQEs allows better utilization of new chipsets for higher performance.
This patch reads the configured size of a CQE from the kernel and uses
this size in CQ-related code.

The code is changed to store the per-device ABI version read from the
device uverbs sysfs entry, and uses this to determine the CQE size
if/as advertised by the kernel mlx4_ib driver.  Older kernel mlx4_ib
ABI versions are still supported.

Signed-off-by: Eli Cohen <>
Signed-off-by: Or Gerlitz <>
Signed-off-by: Roland Dreier <>
5 files changed