>    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

Reply via email to