dr_qp 113 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp; dr_qp 119 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp = kzalloc(sizeof(*dr_qp), GFP_KERNEL); dr_qp 120 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c if (!dr_qp) dr_qp 126 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->rq.pc = 0; dr_qp 127 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->rq.cc = 0; dr_qp 128 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->rq.wqe_cnt = 4; dr_qp 129 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->sq.pc = 0; dr_qp 130 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->sq.cc = 0; dr_qp 131 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->sq.wqe_cnt = roundup_pow_of_two(attr->max_send_wr); dr_qp 134 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(qpc, temp_qpc, log_rq_size, ilog2(dr_qp->rq.wqe_cnt)); dr_qp 135 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(qpc, temp_qpc, log_sq_size, ilog2(dr_qp->sq.wqe_cnt)); dr_qp 136 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c err = mlx5_wq_qp_create(mdev, &wqp, temp_qpc, &dr_qp->wq, dr_qp 137 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c &dr_qp->wq_ctrl); dr_qp 143 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->sq.wqe_head = kcalloc(dr_qp->sq.wqe_cnt, dr_qp 144 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c sizeof(dr_qp->sq.wqe_head[0]), dr_qp 147 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c if (!dr_qp->sq.wqe_head) { dr_qp 154 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->wq_ctrl.buf.npages; dr_qp 167 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->wq_ctrl.buf.page_shift - MLX5_ADAPTER_PAGE_SHIFT); dr_qp 173 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(qpc, qpc, log_rq_size, ilog2(dr_qp->rq.wqe_cnt)); dr_qp 175 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(qpc, qpc, log_sq_size, ilog2(dr_qp->sq.wqe_cnt)); dr_qp 176 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET64(qpc, qpc, dbr_addr, dr_qp->wq_ctrl.db.dma); dr_qp 179 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c mlx5_fill_page_frag_array(&dr_qp->wq_ctrl.buf, dr_qp 183 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c err = mlx5_core_create_qp(mdev, &dr_qp->mqp, in, inlen); dr_qp 190 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->mqp.event = dr_qp_event; dr_qp 191 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->uar = attr->uar; dr_qp 193 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c return dr_qp; dr_qp 196 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c kfree(dr_qp->sq.wqe_head); dr_qp 198 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c mlx5_wq_destroy(&dr_qp->wq_ctrl); dr_qp 200 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c kfree(dr_qp); dr_qp 205 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp) dr_qp 207 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c mlx5_core_destroy_qp(mdev, &dr_qp->mqp); dr_qp 208 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c kfree(dr_qp->sq.wqe_head); dr_qp 209 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c mlx5_wq_destroy(&dr_qp->wq_ctrl); dr_qp 210 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c kfree(dr_qp); dr_qp 213 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c static void dr_cmd_notify_hw(struct mlx5dr_qp *dr_qp, void *ctrl) dr_qp 216 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c *dr_qp->wq.sq.db = cpu_to_be32(dr_qp->sq.pc & 0xfffff); dr_qp 221 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c mlx5_write64(ctrl, dr_qp->uar->map + MLX5_BF_OFFSET); dr_qp 224 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c static void dr_rdma_segments(struct mlx5dr_qp *dr_qp, u64 remote_addr, dr_qp 237 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c idx = dr_qp->sq.pc & (dr_qp->sq.wqe_cnt - 1); dr_qp 239 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c wq_ctrl = mlx5_wq_cyc_get_wqe(&dr_qp->wq.sq, idx); dr_qp 243 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c wq_ctrl->opmod_idx_opcode = cpu_to_be32(((dr_qp->sq.pc & 0xffff) << 8) | dr_qp 245 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c wq_ctrl->qpn_ds = cpu_to_be32(size | dr_qp->mqp.qpn << 8); dr_qp 256 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_qp->sq.wqe_head[idx] = dr_qp->sq.pc++; dr_qp 259 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_cmd_notify_hw(dr_qp, wq_ctrl); dr_qp 262 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c static void dr_post_send(struct mlx5dr_qp *dr_qp, struct postsend_info *send_info) dr_qp 264 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_rdma_segments(dr_qp, send_info->remote_addr, send_info->rkey, dr_qp 266 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c dr_rdma_segments(dr_qp, send_info->remote_addr, send_info->rkey, dr_qp 575 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp, dr_qp 589 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c &dr_qp->mqp); dr_qp 593 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp, dr_qp 601 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(rtr2rts_qp_in, in, qpn, dr_qp->mqp.qpn); dr_qp 608 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c &dr_qp->mqp); dr_qp 612 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp, dr_qp 620 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c MLX5_SET(init2rtr_qp_in, in, qpn, dr_qp->mqp.qpn); dr_qp 640 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c &dr_qp->mqp); dr_qp 645 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c struct mlx5dr_qp *dr_qp = dmn->send_ring->qp; dr_qp 654 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c ret = dr_modify_qp_rst2init(dmn->mdev, dr_qp, port); dr_qp 664 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c rtr_attr.qp_num = dr_qp->mqp.qpn; dr_qp 670 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c ret = dr_cmd_modify_qp_init2rtr(dmn->mdev, dr_qp, &rtr_attr); dr_qp 679 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c ret = dr_cmd_modify_qp_rtr2rts(dmn->mdev, dr_qp, &rts_attr);