From d62a52590741da993c5ac3c39c82601c273175d9 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Wed, 16 Apr 2014 21:42:06 -0700 Subject: [PATCH] rsocket: Check max inline data after creating QP The ipath provider will ignore the max_inline_size specified as input into ibv_create_qp and instead return the size that it supports (which is 0) on output. Update the actual inline size returned from create QP, and check that it meets the minimum requirement for rsockets. Signed-off-by: Sean Hefty --- src/rsocket.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/rsocket.c b/src/rsocket.c index 30ea55dd..7c5083ce 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -860,6 +860,10 @@ static int rs_create_ep(struct rsocket *rs) if (ret) return ret; + rs->sq_inline = qp_attr.cap.max_inline_data; + if (rs->sq_inline < RS_MIN_INLINE) + return ERR(EINVAL); + for (i = 0; i < rs->rq_size; i++) { ret = rs_post_recv(rs); if (ret) @@ -1491,6 +1495,12 @@ static int ds_create_qp(struct rsocket *rs, union socket_addr *src_addr, if (ret) goto err; + rs->sq_inline = qp_attr.cap.max_inline_data; + if (rs->sq_inline < RS_MIN_INLINE) { + ret = ERR(ENOMEM); + goto err; + } + ret = ds_add_qp_dest(qp, src_addr, addrlen); if (ret) goto err; -- 2.46.0