> The function ibv_create_qp() will update the qp_init_attr->cap struct > with the actual QP values of the QP that was created; the values will > be greater than or equal to the values requested. >
You are correct. For qib, this is controlled by the kernel driver. The qp_create will succeed, but will update the caps.max_inline_data with the value of zero, which is its max. Looking at the kernel's Infiniband/hw directory this is implemented inconsistently: - ehca, nes, and ipath (not surprising) behave like qib and return their max - max for ehca, ipath, and qib is 0 - nes inline is either 0 or 64 depending on a module parameter - mlx5 appears (I'm not 100% sure) to behave like qib and returns its supported value - mthca,mlx4,cxgb[34] test and fail with -EINVAL as you suggest None of the -EINVAL failure cases write back the caps.max_inline_data. Has librdmacm tried this across all the 'hw'? Perhaps it would be best to have ULP's ask for 0 and have providers return their >= 0 max, which would implement this as the man page suggests? Mike -- 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
