in efawin/verbs.c [1438:1461]
static int efa_post_send_validate_wr(struct efa_qp *qp,
const struct ibv_send_wr *wr)
{
int err;
err = efa_post_send_validate(qp, wr->send_flags);
if (unlikely(err))
return err;
if (unlikely(wr->opcode != IBV_WR_SEND &&
wr->opcode != IBV_WR_SEND_WITH_IMM))
return EINVAL;
if (wr->send_flags & IBV_SEND_INLINE) {
if (unlikely(efa_sge_total_bytes(wr->sg_list, wr->num_sge) >
qp->sq.max_inline_data))
return EINVAL;
} else {
if (unlikely(wr->num_sge > qp->sq.wq.max_sge))
return EINVAL;
}
return 0;
}