rwq 779 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq, struct ib_udata *udata) rwq 787 drivers/infiniband/hw/mlx5/qp.c if (rwq->create_flags & MLX5_IB_WQ_FLAGS_DELAY_DROP) rwq 790 drivers/infiniband/hw/mlx5/qp.c mlx5_ib_db_unmap_user(context, &rwq->db); rwq 791 drivers/infiniband/hw/mlx5/qp.c ib_umem_release(rwq->umem); rwq 795 drivers/infiniband/hw/mlx5/qp.c struct ib_udata *udata, struct mlx5_ib_rwq *rwq, rwq 809 drivers/infiniband/hw/mlx5/qp.c rwq->umem = ib_umem_get(udata, ucmd->buf_addr, rwq->buf_size, 0, 0); rwq 810 drivers/infiniband/hw/mlx5/qp.c if (IS_ERR(rwq->umem)) { rwq 812 drivers/infiniband/hw/mlx5/qp.c err = PTR_ERR(rwq->umem); rwq 816 drivers/infiniband/hw/mlx5/qp.c mlx5_ib_cont_pages(rwq->umem, ucmd->buf_addr, 0, &npages, &page_shift, rwq 819 drivers/infiniband/hw/mlx5/qp.c &rwq->rq_page_offset); rwq 825 drivers/infiniband/hw/mlx5/qp.c rwq->rq_num_pas = ncont; rwq 826 drivers/infiniband/hw/mlx5/qp.c rwq->page_shift = page_shift; rwq 827 drivers/infiniband/hw/mlx5/qp.c rwq->log_page_size = page_shift - MLX5_ADAPTER_PAGE_SHIFT; rwq 828 drivers/infiniband/hw/mlx5/qp.c rwq->wq_sig = !!(ucmd->flags & MLX5_WQ_FLAG_SIGNATURE); rwq 831 drivers/infiniband/hw/mlx5/qp.c (unsigned long long)ucmd->buf_addr, rwq->buf_size, rwq 834 drivers/infiniband/hw/mlx5/qp.c err = mlx5_ib_db_map_user(ucontext, udata, ucmd->db_addr, &rwq->db); rwq 840 drivers/infiniband/hw/mlx5/qp.c rwq->create_type = MLX5_WQ_USER; rwq 844 drivers/infiniband/hw/mlx5/qp.c ib_umem_release(rwq->umem); rwq 5877 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq = to_mibrwq(core_qp); rwq 5878 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_dev *dev = to_mdev(rwq->ibwq.device); rwq 5881 drivers/infiniband/hw/mlx5/qp.c if (rwq->ibwq.event_handler) { rwq 5882 drivers/infiniband/hw/mlx5/qp.c event.device = rwq->ibwq.device; rwq 5883 drivers/infiniband/hw/mlx5/qp.c event.element.wq = &rwq->ibwq; rwq 5893 drivers/infiniband/hw/mlx5/qp.c rwq->ibwq.event_handler(&event, rwq->ibwq.wq_context); rwq 5918 drivers/infiniband/hw/mlx5/qp.c static int create_rq(struct mlx5_ib_rwq *rwq, struct ib_pd *pd, rwq 5932 drivers/infiniband/hw/mlx5/qp.c inlen = MLX5_ST_SZ_BYTES(create_rq_in) + sizeof(u64) * rwq->rq_num_pas; rwq 5941 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(rqc, rqc, user_index, rwq->user_index); rwq 5947 drivers/infiniband/hw/mlx5/qp.c rwq->create_flags & MLX5_IB_WQ_FLAGS_STRIDING_RQ ? rwq 5958 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, log_wq_stride, rwq->log_rq_stride); rwq 5959 drivers/infiniband/hw/mlx5/qp.c if (rwq->create_flags & MLX5_IB_WQ_FLAGS_STRIDING_RQ) { rwq 5960 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, two_byte_shift_en, rwq->two_byte_shift_en); rwq 5962 drivers/infiniband/hw/mlx5/qp.c rwq->single_stride_log_num_of_bytes - rwq 5964 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, log_wqe_num_of_strides, rwq->log_num_strides - rwq 5967 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, log_wq_sz, rwq->log_rq_size); rwq 5969 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, page_offset, rwq->rq_page_offset); rwq 5970 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, log_wq_pg_sz, rwq->log_page_size); rwq 5971 drivers/infiniband/hw/mlx5/qp.c MLX5_SET(wq, wq, wq_signature, rwq->wq_sig); rwq 5972 drivers/infiniband/hw/mlx5/qp.c MLX5_SET64(wq, wq, dbr_addr, rwq->db.dma); rwq 6001 drivers/infiniband/hw/mlx5/qp.c mlx5_ib_populate_pas(dev, rwq->umem, rwq->page_shift, rq_pas0, 0); rwq 6002 drivers/infiniband/hw/mlx5/qp.c err = mlx5_core_create_rq_tracked(dev->mdev, in, inlen, &rwq->core_qp); rwq 6008 drivers/infiniband/hw/mlx5/qp.c mlx5_core_destroy_rq_tracked(dev->mdev, &rwq->core_qp); rwq 6010 drivers/infiniband/hw/mlx5/qp.c rwq->create_flags |= MLX5_IB_WQ_FLAGS_DELAY_DROP; rwq 6021 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq) rwq 6030 drivers/infiniband/hw/mlx5/qp.c rwq->wqe_count = ucmd->rq_wqe_count; rwq 6031 drivers/infiniband/hw/mlx5/qp.c rwq->wqe_shift = ucmd->rq_wqe_shift; rwq 6032 drivers/infiniband/hw/mlx5/qp.c if (check_shl_overflow(rwq->wqe_count, rwq->wqe_shift, &rwq->buf_size)) rwq 6035 drivers/infiniband/hw/mlx5/qp.c rwq->log_rq_stride = rwq->wqe_shift; rwq 6036 drivers/infiniband/hw/mlx5/qp.c rwq->log_rq_size = ilog2(rwq->wqe_count); rwq 6043 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq) rwq 6097 drivers/infiniband/hw/mlx5/qp.c rwq->single_stride_log_num_of_bytes = rwq 6099 drivers/infiniband/hw/mlx5/qp.c rwq->log_num_strides = ucmd.single_wqe_log_num_of_strides; rwq 6100 drivers/infiniband/hw/mlx5/qp.c rwq->two_byte_shift_en = !!ucmd.two_byte_shift_en; rwq 6101 drivers/infiniband/hw/mlx5/qp.c rwq->create_flags |= MLX5_IB_WQ_FLAGS_STRIDING_RQ; rwq 6104 drivers/infiniband/hw/mlx5/qp.c err = set_user_rq_size(dev, init_attr, &ucmd, rwq); rwq 6110 drivers/infiniband/hw/mlx5/qp.c err = create_user_rq(dev, pd, udata, rwq, &ucmd); rwq 6116 drivers/infiniband/hw/mlx5/qp.c rwq->user_index = ucmd.user_index; rwq 6125 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq; rwq 6144 drivers/infiniband/hw/mlx5/qp.c rwq = kzalloc(sizeof(*rwq), GFP_KERNEL); rwq 6145 drivers/infiniband/hw/mlx5/qp.c if (!rwq) rwq 6147 drivers/infiniband/hw/mlx5/qp.c err = prepare_user_rq(pd, init_attr, udata, rwq); rwq 6150 drivers/infiniband/hw/mlx5/qp.c err = create_rq(rwq, pd, init_attr); rwq 6160 drivers/infiniband/hw/mlx5/qp.c rwq->ibwq.wq_num = rwq->core_qp.qpn; rwq 6161 drivers/infiniband/hw/mlx5/qp.c rwq->ibwq.state = IB_WQS_RESET; rwq 6170 drivers/infiniband/hw/mlx5/qp.c rwq->core_qp.event = mlx5_ib_wq_event; rwq 6171 drivers/infiniband/hw/mlx5/qp.c rwq->ibwq.event_handler = init_attr->event_handler; rwq 6172 drivers/infiniband/hw/mlx5/qp.c return &rwq->ibwq; rwq 6175 drivers/infiniband/hw/mlx5/qp.c mlx5_core_destroy_rq_tracked(dev->mdev, &rwq->core_qp); rwq 6177 drivers/infiniband/hw/mlx5/qp.c destroy_user_rq(dev, pd, rwq, udata); rwq 6179 drivers/infiniband/hw/mlx5/qp.c kfree(rwq); rwq 6186 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq = to_mrwq(wq); rwq 6188 drivers/infiniband/hw/mlx5/qp.c mlx5_core_destroy_rq_tracked(dev->mdev, &rwq->core_qp); rwq 6189 drivers/infiniband/hw/mlx5/qp.c destroy_user_rq(dev, wq->pd, rwq, udata); rwq 6190 drivers/infiniband/hw/mlx5/qp.c kfree(rwq); rwq 6286 drivers/infiniband/hw/mlx5/qp.c struct mlx5_ib_rwq *rwq = to_mrwq(wq); rwq 6366 drivers/infiniband/hw/mlx5/qp.c err = mlx5_core_modify_rq(dev->mdev, rwq->core_qp.qpn, in, inlen); rwq 6368 drivers/infiniband/hw/mlx5/qp.c rwq->ibwq.state = (wq_state == MLX5_RQC_STATE_ERR) ? IB_WQS_ERR : wq_state;