Lines Matching refs:vqp
320 static void rx_post(struct mlx5_vdpa_qp *vqp, int n) in rx_post() argument
322 vqp->head += n; in rx_post()
323 vqp->db.db[0] = cpu_to_be32(vqp->head); in rx_post()
329 struct mlx5_vdpa_qp *vqp; in qp_prepare() local
333 vqp = fw ? &mvq->fwqp : &mvq->vqqp; in qp_prepare()
336 if (vqp->fw) { in qp_prepare()
351 MLX5_SET(qpc, qpc, log_page_size, vqp->frag_buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT); in qp_prepare()
357 mlx5_fill_page_frag_array(&vqp->frag_buf, pas); in qp_prepare()
360 static int rq_buf_alloc(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_qp *vqp, u32 num_ent) in rq_buf_alloc() argument
363 num_ent * sizeof(struct mlx5_wqe_data_seg), &vqp->frag_buf, in rq_buf_alloc()
367 static void rq_buf_free(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_qp *vqp) in rq_buf_free() argument
369 mlx5_frag_buf_free(ndev->mvdev.mdev, &vqp->frag_buf); in rq_buf_free()
373 struct mlx5_vdpa_qp *vqp) in qp_create() argument
382 if (!vqp->fw) { in qp_create()
383 vqp = &mvq->vqqp; in qp_create()
384 err = rq_buf_alloc(ndev, vqp, mvq->num_ent); in qp_create()
388 err = mlx5_db_alloc(ndev->mvdev.mdev, &vqp->db); in qp_create()
391 inlen += vqp->frag_buf.npages * sizeof(__be64); in qp_create()
400 qp_prepare(ndev, vqp->fw, in, mvq, mvq->num_ent); in qp_create()
406 if (!vqp->fw) in qp_create()
407 MLX5_SET64(qpc, qpc, dbr_addr, vqp->db.dma); in qp_create()
414 vqp->mqp.uid = ndev->mvdev.res.uid; in qp_create()
415 vqp->mqp.qpn = MLX5_GET(create_qp_out, out, qpn); in qp_create()
417 if (!vqp->fw) in qp_create()
418 rx_post(vqp, mvq->num_ent); in qp_create()
423 if (!vqp->fw) in qp_create()
424 mlx5_db_free(ndev->mvdev.mdev, &vqp->db); in qp_create()
426 if (!vqp->fw) in qp_create()
427 rq_buf_free(ndev, vqp); in qp_create()
432 static void qp_destroy(struct mlx5_vdpa_net *ndev, struct mlx5_vdpa_qp *vqp) in qp_destroy() argument
437 MLX5_SET(destroy_qp_in, in, qpn, vqp->mqp.qpn); in qp_destroy()
440 mlx5_vdpa_warn(&ndev->mvdev, "destroy qp 0x%x\n", vqp->mqp.qpn); in qp_destroy()
441 if (!vqp->fw) { in qp_destroy()
442 mlx5_db_free(ndev->mvdev.mdev, &vqp->db); in qp_destroy()
443 rq_buf_free(ndev, vqp); in qp_destroy()