Lines Matching refs:umrc

149 	if (dev->umrc.qp)
152 mutex_lock(&dev->umrc.init_lock);
154 if (dev->umrc.qp)
171 qp = ib_create_qp(dev->umrc.pd, &init_attr);
182 dev->umrc.cq = cq;
184 sema_init(&dev->umrc.sem, MAX_UMR_WR);
185 mutex_init(&dev->umrc.lock);
186 dev->umrc.state = MLX5_UMR_STATE_ACTIVE;
187 dev->umrc.qp = qp;
189 mutex_unlock(&dev->umrc.init_lock);
197 mutex_unlock(&dev->umrc.init_lock);
203 if (dev->umrc.state == MLX5_UMR_STATE_UNINIT)
205 mutex_destroy(&dev->umrc.lock);
207 ib_destroy_qp(dev->umrc.qp);
208 ib_free_cq(dev->umrc.cq);
220 dev->umrc.pd = pd;
222 mutex_init(&dev->umrc.init_lock);
229 if (!dev->umrc.pd)
232 mutex_destroy(&dev->umrc.init_lock);
233 ib_dealloc_pd(dev->umrc.pd);
287 struct umr_common *umrc = &dev->umrc;
291 mutex_lock(&umrc->lock);
293 if (umrc->state != MLX5_UMR_STATE_RECOVER) {
295 umrc->state);
296 umrc->state = MLX5_UMR_STATE_RECOVER;
298 mutex_unlock(&umrc->lock);
304 err = mlx5r_umr_post_send(umrc->qp, mkey, &umr_context->cqe, wqe,
318 err = ib_modify_qp(umrc->qp, &attr, IB_QP_STATE);
324 err = mlx5r_umr_qp_rst2rts(dev, umrc->qp);
330 umrc->state = MLX5_UMR_STATE_ACTIVE;
334 umrc->state = MLX5_UMR_STATE_ERR;
356 struct umr_common *umrc = &dev->umrc;
366 down(&umrc->sem);
368 mutex_lock(&umrc->lock);
369 if (umrc->state == MLX5_UMR_STATE_ERR) {
370 mutex_unlock(&umrc->lock);
375 if (umrc->state == MLX5_UMR_STATE_RECOVER) {
376 mutex_unlock(&umrc->lock);
381 err = mlx5r_umr_post_send(umrc->qp, mkey, &umr_context.cqe, wqe,
383 mutex_unlock(&umrc->lock);
409 up(&umrc->sem);
434 MLX5_SET(mkc, &wqe.mkey_seg, pd, to_mpd(dev->umrc.pd)->pdn);
584 sg->lkey = dev->umrc.pd->local_dma_lkey;