RDMA/mlx5: Remove unused IB_WR_REG_SIG_MR code
IB_WR_REG_SIG_MR is not needed after IB_WR_REG_MR_INTEGRITY was used. Signed-off-by: Israel Rukshin <israelr@mellanox.com> Reviewed-by: Max Gurtovoy <maxg@mellanox.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:

committed by
Jason Gunthorpe

父節點
e9a53e73a2
當前提交
5c171cbe3a
@@ -1760,8 +1760,7 @@ static struct ib_mr *__mlx5_ib_alloc_mr(struct ib_pd *pd,
|
||||
goto err_free_in;
|
||||
mr->desc_size = sizeof(struct mlx5_klm);
|
||||
mr->max_descs = ndescs;
|
||||
} else if (mr_type == IB_MR_TYPE_SIGNATURE ||
|
||||
mr_type == IB_MR_TYPE_INTEGRITY) {
|
||||
} else if (mr_type == IB_MR_TYPE_INTEGRITY) {
|
||||
u32 psv_index[2];
|
||||
|
||||
MLX5_SET(mkc, mkc, bsf_en, 1);
|
||||
@@ -1787,13 +1786,11 @@ static struct ib_mr *__mlx5_ib_alloc_mr(struct ib_pd *pd,
|
||||
mr->sig->sig_err_exists = false;
|
||||
/* Next UMR, Arm SIGERR */
|
||||
++mr->sig->sigerr_count;
|
||||
if (mr_type == IB_MR_TYPE_INTEGRITY) {
|
||||
mr->pi_mr = mlx5_ib_alloc_pi_mr(pd, max_num_sg,
|
||||
max_num_meta_sg);
|
||||
if (IS_ERR(mr->pi_mr)) {
|
||||
err = PTR_ERR(mr->pi_mr);
|
||||
goto err_destroy_psv;
|
||||
}
|
||||
mr->pi_mr = mlx5_ib_alloc_pi_mr(pd, max_num_sg,
|
||||
max_num_meta_sg);
|
||||
if (IS_ERR(mr->pi_mr)) {
|
||||
err = PTR_ERR(mr->pi_mr);
|
||||
goto err_destroy_psv;
|
||||
}
|
||||
} else {
|
||||
mlx5_ib_warn(dev, "Invalid mr type %d\n", mr_type);
|
||||
|
@@ -4557,32 +4557,17 @@ static int set_sig_data_segment(const struct ib_send_wr *send_wr,
|
||||
bool prot = false;
|
||||
int ret;
|
||||
int wqe_size;
|
||||
struct mlx5_ib_mr *mr = to_mmr(sig_mr);
|
||||
struct mlx5_ib_mr *pi_mr = mr->pi_mr;
|
||||
|
||||
if (send_wr->opcode == IB_WR_REG_SIG_MR) {
|
||||
const struct ib_sig_handover_wr *wr = sig_handover_wr(send_wr);
|
||||
|
||||
data_len = wr->wr.sg_list->length;
|
||||
data_key = wr->wr.sg_list->lkey;
|
||||
data_va = wr->wr.sg_list->addr;
|
||||
if (wr->prot) {
|
||||
prot_len = wr->prot->length;
|
||||
prot_key = wr->prot->lkey;
|
||||
prot_va = wr->prot->addr;
|
||||
prot = true;
|
||||
}
|
||||
} else {
|
||||
struct mlx5_ib_mr *mr = to_mmr(sig_mr);
|
||||
struct mlx5_ib_mr *pi_mr = mr->pi_mr;
|
||||
|
||||
data_len = pi_mr->data_length;
|
||||
data_key = pi_mr->ibmr.lkey;
|
||||
data_va = pi_mr->ibmr.iova;
|
||||
if (pi_mr->meta_ndescs) {
|
||||
prot_len = pi_mr->meta_length;
|
||||
prot_key = pi_mr->ibmr.lkey;
|
||||
prot_va = pi_mr->ibmr.iova + data_len;
|
||||
prot = true;
|
||||
}
|
||||
data_len = pi_mr->data_length;
|
||||
data_key = pi_mr->ibmr.lkey;
|
||||
data_va = pi_mr->ibmr.iova;
|
||||
if (pi_mr->meta_ndescs) {
|
||||
prot_len = pi_mr->meta_length;
|
||||
prot_key = pi_mr->ibmr.lkey;
|
||||
prot_va = pi_mr->ibmr.iova + data_len;
|
||||
prot = true;
|
||||
}
|
||||
|
||||
if (!prot || (data_key == prot_key && data_va == prot_va &&
|
||||
@@ -4748,57 +4733,6 @@ static int set_pi_umr_wr(const struct ib_send_wr *send_wr,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_sig_umr_wr(const struct ib_send_wr *send_wr,
|
||||
struct mlx5_ib_qp *qp, void **seg, int *size,
|
||||
void **cur_edge)
|
||||
{
|
||||
const struct ib_sig_handover_wr *wr = sig_handover_wr(send_wr);
|
||||
struct mlx5_ib_mr *sig_mr = to_mmr(wr->sig_mr);
|
||||
u32 pdn = get_pd(qp)->pdn;
|
||||
u32 xlt_size;
|
||||
int region_len, ret;
|
||||
|
||||
if (unlikely(wr->wr.num_sge != 1) ||
|
||||
unlikely(wr->access_flags & IB_ACCESS_REMOTE_ATOMIC) ||
|
||||
unlikely(!sig_mr->sig) || unlikely(!qp->ibqp.integrity_en) ||
|
||||
unlikely(!sig_mr->sig->sig_status_checked))
|
||||
return -EINVAL;
|
||||
|
||||
/* length of the protected region, data + protection */
|
||||
region_len = wr->wr.sg_list->length;
|
||||
if (wr->prot &&
|
||||
(wr->prot->lkey != wr->wr.sg_list->lkey ||
|
||||
wr->prot->addr != wr->wr.sg_list->addr ||
|
||||
wr->prot->length != wr->wr.sg_list->length))
|
||||
region_len += wr->prot->length;
|
||||
|
||||
/**
|
||||
* KLM octoword size - if protection was provided
|
||||
* then we use strided block format (3 octowords),
|
||||
* else we use single KLM (1 octoword)
|
||||
**/
|
||||
xlt_size = wr->prot ? 0x30 : sizeof(struct mlx5_klm);
|
||||
|
||||
set_sig_umr_segment(*seg, xlt_size);
|
||||
*seg += sizeof(struct mlx5_wqe_umr_ctrl_seg);
|
||||
*size += sizeof(struct mlx5_wqe_umr_ctrl_seg) / 16;
|
||||
handle_post_send_edge(&qp->sq, seg, *size, cur_edge);
|
||||
|
||||
set_sig_mkey_segment(*seg, wr->sig_mr, wr->access_flags, xlt_size,
|
||||
region_len, pdn);
|
||||
*seg += sizeof(struct mlx5_mkey_seg);
|
||||
*size += sizeof(struct mlx5_mkey_seg) / 16;
|
||||
handle_post_send_edge(&qp->sq, seg, *size, cur_edge);
|
||||
|
||||
ret = set_sig_data_segment(send_wr, wr->sig_mr, wr->sig_attrs, qp, seg,
|
||||
size, cur_edge);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
sig_mr->sig->sig_status_checked = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int set_psv_wr(struct ib_sig_domain *domain,
|
||||
u32 psv_idx, void **seg, int *size)
|
||||
{
|
||||
@@ -5187,74 +5121,6 @@ static int _mlx5_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
|
||||
num_sge = 0;
|
||||
goto skip_psv;
|
||||
|
||||
case IB_WR_REG_SIG_MR:
|
||||
qp->sq.wr_data[idx] = IB_WR_REG_SIG_MR;
|
||||
mr = to_mmr(sig_handover_wr(wr)->sig_mr);
|
||||
|
||||
ctrl->imm = cpu_to_be32(mr->ibmr.rkey);
|
||||
err = set_sig_umr_wr(wr, qp, &seg, &size,
|
||||
&cur_edge);
|
||||
if (err) {
|
||||
mlx5_ib_warn(dev, "\n");
|
||||
*bad_wr = wr;
|
||||
goto out;
|
||||
}
|
||||
|
||||
finish_wqe(qp, ctrl, seg, size, cur_edge, idx,
|
||||
wr->wr_id, nreq, fence,
|
||||
MLX5_OPCODE_UMR);
|
||||
/*
|
||||
* SET_PSV WQEs are not signaled and solicited
|
||||
* on error
|
||||
*/
|
||||
err = __begin_wqe(qp, &seg, &ctrl, wr, &idx,
|
||||
&size, &cur_edge, nreq, false,
|
||||
true);
|
||||
if (err) {
|
||||
mlx5_ib_warn(dev, "\n");
|
||||
err = -ENOMEM;
|
||||
*bad_wr = wr;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = set_psv_wr(&sig_handover_wr(wr)->sig_attrs->mem,
|
||||
mr->sig->psv_memory.psv_idx, &seg,
|
||||
&size);
|
||||
if (err) {
|
||||
mlx5_ib_warn(dev, "\n");
|
||||
*bad_wr = wr;
|
||||
goto out;
|
||||
}
|
||||
|
||||
finish_wqe(qp, ctrl, seg, size, cur_edge, idx,
|
||||
wr->wr_id, nreq, fence,
|
||||
MLX5_OPCODE_SET_PSV);
|
||||
err = __begin_wqe(qp, &seg, &ctrl, wr, &idx,
|
||||
&size, &cur_edge, nreq, false,
|
||||
true);
|
||||
if (err) {
|
||||
mlx5_ib_warn(dev, "\n");
|
||||
err = -ENOMEM;
|
||||
*bad_wr = wr;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = set_psv_wr(&sig_handover_wr(wr)->sig_attrs->wire,
|
||||
mr->sig->psv_wire.psv_idx, &seg,
|
||||
&size);
|
||||
if (err) {
|
||||
mlx5_ib_warn(dev, "\n");
|
||||
*bad_wr = wr;
|
||||
goto out;
|
||||
}
|
||||
|
||||
finish_wqe(qp, ctrl, seg, size, cur_edge, idx,
|
||||
wr->wr_id, nreq, fence,
|
||||
MLX5_OPCODE_SET_PSV);
|
||||
qp->next_fence = MLX5_FENCE_MODE_INITIATOR_SMALL;
|
||||
num_sge = 0;
|
||||
goto skip_psv;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Reference in New Issue
Block a user