static int efa_post_send_validate_wr()

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;
}