Lines Matching refs:c2dev
134 int c2_qp_modify(struct c2_dev *c2dev, struct c2_qp *qp, in c2_qp_modify() argument
150 vq_req = vq_req_alloc(c2dev); in c2_qp_modify()
156 wr.rnic_handle = c2dev->adapter_handle; in c2_qp_modify()
205 vq_req_get(c2dev, vq_req); in c2_qp_modify()
207 err = vq_send_wr(c2dev, (union c2wr *) & wr); in c2_qp_modify()
209 vq_req_put(c2dev, vq_req); in c2_qp_modify()
213 err = vq_wait_for_reply(c2dev, vq_req); in c2_qp_modify()
242 vq_repbuf_free(c2dev, reply); in c2_qp_modify()
244 vq_req_free(c2dev, vq_req); in c2_qp_modify()
253 int c2_qp_set_read_limits(struct c2_dev *c2dev, struct c2_qp *qp, in c2_qp_set_read_limits() argument
261 vq_req = vq_req_alloc(c2dev); in c2_qp_set_read_limits()
267 wr.rnic_handle = c2dev->adapter_handle; in c2_qp_set_read_limits()
276 vq_req_get(c2dev, vq_req); in c2_qp_set_read_limits()
278 err = vq_send_wr(c2dev, (union c2wr *) & wr); in c2_qp_set_read_limits()
280 vq_req_put(c2dev, vq_req); in c2_qp_set_read_limits()
284 err = vq_wait_for_reply(c2dev, vq_req); in c2_qp_set_read_limits()
296 vq_repbuf_free(c2dev, reply); in c2_qp_set_read_limits()
298 vq_req_free(c2dev, vq_req); in c2_qp_set_read_limits()
302 static int destroy_qp(struct c2_dev *c2dev, struct c2_qp *qp) in destroy_qp() argument
313 vq_req = vq_req_alloc(c2dev); in destroy_qp()
323 wr.rnic_handle = c2dev->adapter_handle; in destroy_qp()
329 vq_req_get(c2dev, vq_req); in destroy_qp()
345 err = vq_send_wr(c2dev, (union c2wr *) & wr); in destroy_qp()
347 vq_req_put(c2dev, vq_req); in destroy_qp()
354 err = vq_wait_for_reply(c2dev, vq_req); in destroy_qp()
375 vq_repbuf_free(c2dev, reply); in destroy_qp()
377 vq_req_free(c2dev, vq_req); in destroy_qp()
381 static int c2_alloc_qpn(struct c2_dev *c2dev, struct c2_qp *qp) in c2_alloc_qpn() argument
386 spin_lock_irq(&c2dev->qp_table.lock); in c2_alloc_qpn()
388 ret = idr_alloc_cyclic(&c2dev->qp_table.idr, qp, 0, 0, GFP_NOWAIT); in c2_alloc_qpn()
392 spin_unlock_irq(&c2dev->qp_table.lock); in c2_alloc_qpn()
397 static void c2_free_qpn(struct c2_dev *c2dev, int qpn) in c2_free_qpn() argument
399 spin_lock_irq(&c2dev->qp_table.lock); in c2_free_qpn()
400 idr_remove(&c2dev->qp_table.idr, qpn); in c2_free_qpn()
401 spin_unlock_irq(&c2dev->qp_table.lock); in c2_free_qpn()
404 struct c2_qp *c2_find_qpn(struct c2_dev *c2dev, int qpn) in c2_find_qpn() argument
409 spin_lock_irqsave(&c2dev->qp_table.lock, flags); in c2_find_qpn()
410 qp = idr_find(&c2dev->qp_table.idr, qpn); in c2_find_qpn()
411 spin_unlock_irqrestore(&c2dev->qp_table.lock, flags); in c2_find_qpn()
415 int c2_alloc_qp(struct c2_dev *c2dev, in c2_alloc_qp() argument
429 err = c2_alloc_qpn(c2dev, qp); in c2_alloc_qp()
436 qp->sq_mq.shared = c2_alloc_mqsp(c2dev, c2dev->kern_mqsp_pool, in c2_alloc_qp()
443 qp->rq_mq.shared = c2_alloc_mqsp(c2dev, c2dev->kern_mqsp_pool, in c2_alloc_qp()
451 vq_req = vq_req_alloc(c2dev); in c2_alloc_qp()
461 wr.rnic_handle = c2dev->adapter_handle; in c2_alloc_qp()
479 vq_req_get(c2dev, vq_req); in c2_alloc_qp()
482 err = vq_send_wr(c2dev, (union c2wr *) & wr); in c2_alloc_qp()
484 vq_req_put(c2dev, vq_req); in c2_alloc_qp()
489 err = vq_wait_for_reply(c2dev, vq_req); in c2_alloc_qp()
517 peer_pa = c2dev->pa + be32_to_cpu(reply->sq_mq_start); in c2_alloc_qp()
536 peer_pa = c2dev->pa + be32_to_cpu(reply->rq_mq_start); in c2_alloc_qp()
552 vq_repbuf_free(c2dev, reply); in c2_alloc_qp()
553 vq_req_free(c2dev, vq_req); in c2_alloc_qp()
560 destroy_qp(c2dev, qp); in c2_alloc_qp()
562 vq_repbuf_free(c2dev, reply); in c2_alloc_qp()
564 vq_req_free(c2dev, vq_req); in c2_alloc_qp()
570 c2_free_qpn(c2dev, qp->qpn); in c2_alloc_qp()
600 void c2_free_qp(struct c2_dev *c2dev, struct c2_qp *qp) in c2_free_qp() argument
613 c2_free_qpn(c2dev, qp->qpn); in c2_free_qp()
619 destroy_qp(c2dev, qp); in c2_free_qp()
624 c2_cq_clean(c2dev, qp, send_cq->cqn); in c2_free_qp()
626 c2_cq_clean(c2dev, qp, recv_cq->cqn); in c2_free_qp()
726 static inline void c2_activity(struct c2_dev *c2dev, u32 mq_index, u16 shared) in c2_activity() argument
737 while (readl(c2dev->regs + PCI_BAR0_ADAPTER_HINT) & 0x80000000) in c2_activity()
741 c2dev->regs + PCI_BAR0_ADAPTER_HINT); in c2_activity()
793 struct c2_dev *c2dev = to_c2dev(ibqp->device); in c2_post_send() local
932 c2_activity(c2dev, qp->sq_mq.index, qp->sq_mq.hint_count); in c2_post_send()
947 struct c2_dev *c2dev = to_c2dev(ibqp->device); in c2_post_receive() local
1003 c2_activity(c2dev, qp->rq_mq.index, qp->rq_mq.hint_count); in c2_post_receive()
1015 void c2_init_qp_table(struct c2_dev *c2dev) in c2_init_qp_table() argument
1017 spin_lock_init(&c2dev->qp_table.lock); in c2_init_qp_table()
1018 idr_init(&c2dev->qp_table.idr); in c2_init_qp_table()
1021 void c2_cleanup_qp_table(struct c2_dev *c2dev) in c2_cleanup_qp_table() argument
1023 idr_destroy(&c2dev->qp_table.idr); in c2_cleanup_qp_table()