};
 
 /* Use macros here so that don't have to duplicate
- * enum ib_send_flags and enum ib_qp_type for low-level driver
+ * enum ib_qp_type for low-level driver
  */
 
-#define MLX5_IB_SEND_UMR_ENABLE_MR            (IB_SEND_RESERVED_START << 0)
-#define MLX5_IB_SEND_UMR_DISABLE_MR           (IB_SEND_RESERVED_START << 1)
-#define MLX5_IB_SEND_UMR_FAIL_IF_FREE         (IB_SEND_RESERVED_START << 2)
-#define MLX5_IB_SEND_UMR_UPDATE_XLT           (IB_SEND_RESERVED_START << 3)
-#define MLX5_IB_SEND_UMR_UPDATE_TRANSLATION    (IB_SEND_RESERVED_START << 4)
-#define MLX5_IB_SEND_UMR_UPDATE_PD_ACCESS       IB_SEND_RESERVED_END
-
 #define MLX5_IB_QPT_REG_UMR    IB_QPT_RESERVED1
 /*
  * IB_QPT_GSI creates the software wrapper around GSI, and MLX5_IB_QPT_HW_GSI
        int                     nent;
 };
 
-struct mlx5_umr_wr {
-       struct ib_send_wr               wr;
-       u64                             virt_addr;
-       u64                             offset;
-       struct ib_pd                   *pd;
-       unsigned int                    page_shift;
-       unsigned int                    xlt_size;
-       u64                             length;
-       int                             access_flags;
-       u32                             mkey;
-       u8                              ignore_free_state:1;
-};
-
-static inline const struct mlx5_umr_wr *umr_wr(const struct ib_send_wr *wr)
-{
-       return container_of(wr, struct mlx5_umr_wr, wr);
-}
-
 enum mlx5_ib_cq_pr_flags {
        MLX5_IB_CQ_PR_FLAGS_CQE_128_PAD = 1 << 0,
        MLX5_IB_CQ_PR_FLAGS_REAL_TIME_TS = 1 << 1,
 
        return 0;
 }
 
-int mlx5r_umr_set_umr_ctrl_seg(struct mlx5_ib_dev *dev,
-                              struct mlx5_wqe_umr_ctrl_seg *umr,
-                              const struct ib_send_wr *wr)
-{
-       const struct mlx5_umr_wr *umrwr = umr_wr(wr);
-
-       memset(umr, 0, sizeof(*umr));
-
-       if (!umrwr->ignore_free_state) {
-               if (wr->send_flags & MLX5_IB_SEND_UMR_FAIL_IF_FREE)
-                        /* fail if free */
-                       umr->flags = MLX5_UMR_CHECK_FREE;
-               else
-                       /* fail if not free */
-                       umr->flags = MLX5_UMR_CHECK_NOT_FREE;
-       }
-
-       umr->xlt_octowords =
-               cpu_to_be16(mlx5r_umr_get_xlt_octo(umrwr->xlt_size));
-       if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_XLT) {
-               u64 offset = mlx5r_umr_get_xlt_octo(umrwr->offset);
-
-               umr->xlt_offset = cpu_to_be16(offset & 0xffff);
-               umr->xlt_offset_47_16 = cpu_to_be32(offset >> 16);
-               umr->flags |= MLX5_UMR_TRANSLATION_OFFSET_EN;
-       }
-       if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_TRANSLATION)
-               umr->mkey_mask |= get_umr_update_translation_mask();
-       if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_PD_ACCESS) {
-               umr->mkey_mask |= get_umr_update_access_mask(dev);
-               umr->mkey_mask |= get_umr_update_pd_mask();
-       }
-       if (wr->send_flags & MLX5_IB_SEND_UMR_ENABLE_MR)
-               umr->mkey_mask |= get_umr_enable_mr_mask();
-       if (wr->send_flags & MLX5_IB_SEND_UMR_DISABLE_MR)
-               umr->mkey_mask |= get_umr_disable_mr_mask();
-
-       if (!wr->num_sge)
-               umr->flags |= MLX5_UMR_INLINE;
-
-       return umr_check_mkey_mask(dev, be64_to_cpu(umr->mkey_mask));
-}
-
 enum {
        MAX_UMR_WR = 128,
 };
 
        seg->status = MLX5_MKEY_STATUS_FREE;
 }
 
-static void set_reg_mkey_segment(struct mlx5_ib_dev *dev,
-                                struct mlx5_mkey_seg *seg,
-                                const struct ib_send_wr *wr)
-{
-       const struct mlx5_umr_wr *umrwr = umr_wr(wr);
-
-       memset(seg, 0, sizeof(*seg));
-       if (wr->send_flags & MLX5_IB_SEND_UMR_DISABLE_MR)
-               MLX5_SET(mkc, seg, free, 1);
-
-       MLX5_SET(mkc, seg, a,
-                !!(umrwr->access_flags & IB_ACCESS_REMOTE_ATOMIC));
-       MLX5_SET(mkc, seg, rw,
-                !!(umrwr->access_flags & IB_ACCESS_REMOTE_WRITE));
-       MLX5_SET(mkc, seg, rr, !!(umrwr->access_flags & IB_ACCESS_REMOTE_READ));
-       MLX5_SET(mkc, seg, lw, !!(umrwr->access_flags & IB_ACCESS_LOCAL_WRITE));
-       MLX5_SET(mkc, seg, lr, 1);
-       if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_write_umr))
-               MLX5_SET(mkc, seg, relaxed_ordering_write,
-                        !!(umrwr->access_flags & IB_ACCESS_RELAXED_ORDERING));
-       if (MLX5_CAP_GEN(dev->mdev, relaxed_ordering_read_umr))
-               MLX5_SET(mkc, seg, relaxed_ordering_read,
-                        !!(umrwr->access_flags & IB_ACCESS_RELAXED_ORDERING));
-
-       if (umrwr->pd)
-               MLX5_SET(mkc, seg, pd, to_mpd(umrwr->pd)->pdn);
-       if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_TRANSLATION &&
-           !umrwr->length)
-               MLX5_SET(mkc, seg, length64, 1);
-
-       MLX5_SET64(mkc, seg, start_addr, umrwr->virt_addr);
-       MLX5_SET64(mkc, seg, len, umrwr->length);
-       MLX5_SET(mkc, seg, log_page_size, umrwr->page_shift);
-       MLX5_SET(mkc, seg, qpn, 0xffffff);
-       MLX5_SET(mkc, seg, mkey_7_0, mlx5_mkey_variant(umrwr->mkey));
-}
-
 static void set_reg_data_seg(struct mlx5_wqe_data_seg *dseg,
                             struct mlx5_ib_mr *mr,
                             struct mlx5_ib_pd *pd)
        }
 }
 
-static int handle_qpt_reg_umr(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
-                             const struct ib_send_wr *wr,
-                             struct mlx5_wqe_ctrl_seg **ctrl, void **seg,
-                             int *size, void **cur_edge, unsigned int idx)
-{
-       int err = 0;
-
-       if (unlikely(wr->opcode != MLX5_IB_WR_UMR)) {
-               err = -EINVAL;
-               mlx5_ib_warn(dev, "bad opcode %d\n", wr->opcode);
-               goto out;
-       }
-
-       qp->sq.wr_data[idx] = MLX5_IB_WR_UMR;
-       (*ctrl)->imm = cpu_to_be32(umr_wr(wr)->mkey);
-       err = mlx5r_umr_set_umr_ctrl_seg(dev, *seg, wr);
-       if (unlikely(err))
-               goto out;
-       *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_reg_mkey_segment(dev, *seg, wr);
-       *seg += sizeof(struct mlx5_mkey_seg);
-       *size += sizeof(struct mlx5_mkey_seg) / 16;
-       handle_post_send_edge(&qp->sq, seg, *size, cur_edge);
-out:
-       return err;
-}
-
 void mlx5r_ring_db(struct mlx5_ib_qp *qp, unsigned int nreq,
                   struct mlx5_wqe_ctrl_seg *ctrl)
 {
                case IB_QPT_UD:
                        handle_qpt_ud(qp, wr, &seg, &size, &cur_edge);
                        break;
-               case MLX5_IB_QPT_REG_UMR:
-                       err = handle_qpt_reg_umr(dev, qp, wr, &ctrl, &seg,
-                                                      &size, &cur_edge, idx);
-                       if (unlikely(err))
-                               goto out;
-                       break;
 
                default:
                        break;