• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/hw/ehca/

Lines Matching defs:my_qp

281 				struct ehca_qp *my_qp,
327 my_qp->ipz_qp_handle,
330 my_qp->galpas.kernel);
338 vpage = ipz_qpageit_get_inc(&my_qp->ipz_rqueue);
458 struct ehca_qp *my_qp, *my_srq = NULL;
612 my_qp = kmem_cache_zalloc(qp_cache, GFP_KERNEL);
613 if (!my_qp) {
624 atomic_set(&my_qp->nr_events, 0);
625 init_waitqueue_head(&my_qp->wait_completion);
626 spin_lock_init(&my_qp->spinlock_s);
627 spin_lock_init(&my_qp->spinlock_r);
628 my_qp->qp_type = qp_type;
629 my_qp->ext_type = parms.ext_type;
630 my_qp->state = IB_QPS_RESET;
633 my_qp->recv_cq =
636 my_qp->send_cq =
647 ret = idr_get_new(&ehca_qp_idr, my_qp, &my_qp->token);
657 if (my_qp->token > 0x1FFFFFF) {
664 parms.srq_token = my_qp->token;
684 parms.token = my_qp->token;
687 if (my_qp->send_cq)
688 parms.send_cq_handle = my_qp->send_cq->ipz_cq_handle;
689 if (my_qp->recv_cq)
690 parms.recv_cq_handle = my_qp->recv_cq->ipz_cq_handle;
702 if (HAS_SQ(my_qp))
705 if (HAS_RQ(my_qp))
720 ib_qp_num = my_qp->real_qp_num = parms.real_qp_num;
721 my_qp->ipz_qp_handle = parms.qp_handle;
722 my_qp->galpas = parms.galpas;
763 if (HAS_SQ(my_qp)) {
765 shca, my_pd, my_qp, &my_qp->ipz_squeue, 0,
766 HAS_RQ(my_qp) ? H_PAGE_REGISTERED : H_SUCCESS,
775 my_qp->sq_map.entries = my_qp->ipz_squeue.queue_length /
776 my_qp->ipz_squeue.qe_size;
777 my_qp->sq_map.map = vmalloc(my_qp->sq_map.entries *
779 if (!my_qp->sq_map.map) {
784 INIT_LIST_HEAD(&my_qp->sq_err_node);
786 reset_queue_map(&my_qp->sq_map);
790 if (HAS_RQ(my_qp)) {
792 shca, my_pd, my_qp, &my_qp->ipz_rqueue, 1,
800 my_qp->rq_map.entries = my_qp->ipz_rqueue.queue_length /
801 my_qp->ipz_rqueue.qe_size;
802 my_qp->rq_map.map = vmalloc(my_qp->rq_map.entries *
804 if (!my_qp->rq_map.map) {
809 INIT_LIST_HEAD(&my_qp->rq_err_node);
811 reset_queue_map(&my_qp->rq_map);
815 my_qp->rq_map = my_srq->rq_map;
816 INIT_LIST_HEAD(&my_qp->rq_err_node);
818 my_qp->ipz_rqueue = my_srq->ipz_rqueue;
822 my_qp->ib_srq.pd = &my_pd->ib_pd;
823 my_qp->ib_srq.device = my_pd->ib_pd.device;
825 my_qp->ib_srq.srq_context = init_attr->qp_context;
826 my_qp->ib_srq.event_handler = init_attr->event_handler;
828 my_qp->ib_qp.qp_num = ib_qp_num;
829 my_qp->ib_qp.pd = &my_pd->ib_pd;
830 my_qp->ib_qp.device = my_pd->ib_pd.device;
832 my_qp->ib_qp.recv_cq = init_attr->recv_cq;
833 my_qp->ib_qp.send_cq = init_attr->send_cq;
835 my_qp->ib_qp.qp_type = qp_type;
836 my_qp->ib_qp.srq = init_attr->srq;
838 my_qp->ib_qp.qp_context = init_attr->qp_context;
839 my_qp->ib_qp.event_handler = init_attr->event_handler;
847 my_qp->init_attr = *init_attr;
851 &my_qp->ib_qp;
856 my_qp->mod_qp_parm =
858 sizeof(*my_qp->mod_qp_parm),
860 if (!my_qp->mod_qp_parm) {
870 h_ret = ehca_define_sqp(shca, my_qp, init_attr);
872 kfree(my_qp->mod_qp_parm);
873 my_qp->mod_qp_parm = NULL;
882 if (my_qp->send_cq) {
883 ret = ehca_cq_assign_qp(my_qp->send_cq, my_qp);
896 resp.qp_num = my_qp->real_qp_num;
897 resp.token = my_qp->token;
898 resp.qp_type = my_qp->qp_type;
899 resp.ext_type = my_qp->ext_type;
900 resp.qkey = my_qp->qkey;
901 resp.real_qp_num = my_qp->real_qp_num;
903 if (HAS_SQ(my_qp))
904 queue2resp(&resp.ipz_squeue, &my_qp->ipz_squeue);
905 if (HAS_RQ(my_qp))
906 queue2resp(&resp.ipz_rqueue, &my_qp->ipz_rqueue);
908 (my_qp->galpas.user.fw_handle & (PAGE_SIZE - 1));
917 return my_qp;
920 ehca_cq_unassign_qp(my_qp->send_cq, my_qp->real_qp_num);
923 kfree(my_qp->mod_qp_parm);
926 if (HAS_RQ(my_qp) && !is_user)
927 vfree(my_qp->rq_map.map);
930 if (HAS_RQ(my_qp))
931 ipz_queue_dtor(my_pd, &my_qp->ipz_rqueue);
934 if (HAS_SQ(my_qp) && !is_user)
935 vfree(my_qp->sq_map.map);
938 if (HAS_SQ(my_qp))
939 ipz_queue_dtor(my_pd, &my_qp->ipz_squeue);
942 hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp);
946 idr_remove(&ehca_qp_idr, my_qp->token);
950 kmem_cache_free(qp_cache, my_qp);
965 static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
973 struct ehca_qp *my_qp;
991 my_qp = internal_create_qp(pd, &qp_init_attr, srq_init_attr, udata, 1);
992 if (IS_ERR(my_qp))
993 return (struct ib_srq *)my_qp;
1003 "ehca_qp=%p qp_num=%x ", my_qp, my_qp->real_qp_num);
1012 my_qp->ipz_qp_handle,
1013 &my_qp->pf,
1015 mqpcb, my_qp->galpas.kernel);
1019 my_qp, my_qp->real_qp_num, hret);
1026 my_qp->ipz_qp_handle,
1027 &my_qp->pf,
1029 mqpcb, my_qp->galpas.kernel);
1033 my_qp, my_qp->real_qp_num, hret);
1040 my_qp->ipz_qp_handle,
1041 &my_qp->pf,
1043 mqpcb, my_qp->galpas.kernel);
1047 my_qp, my_qp->real_qp_num, hret);
1053 return &my_qp->ib_srq;
1060 internal_destroy_qp(pd->device, my_qp, my_qp->ib_srq.uobject);
1070 static int prepare_sqe_rts(struct ehca_qp *my_qp, struct ehca_shca *shca,
1078 int qp_num = my_qp->ib_qp.qp_num;
1082 my_qp->ipz_qp_handle, &my_qp->pf,
1087 my_qp, qp_num, h_ret);
1097 squeue = &my_qp->ipz_squeue;
1160 static int check_for_left_cqes(struct ehca_qp *my_qp, struct ehca_shca *shca)
1166 int qp_num = my_qp->ib_qp.qp_num;
1169 if (my_qp->ext_type != EQPT_SRQBASE) {
1172 my_qp->ipz_qp_handle, &my_qp->pf,
1177 my_qp, qp_num, h_ret);
1186 spin_lock_irqsave(&my_qp->send_cq->spinlock, flags);
1187 ret = calc_left_cqes((u64)send_wqe_p, &my_qp->ipz_squeue,
1188 &my_qp->sq_map);
1189 spin_unlock_irqrestore(&my_qp->send_cq->spinlock, flags);
1194 spin_lock_irqsave(&my_qp->recv_cq->spinlock, flags);
1195 ret = calc_left_cqes((u64)recv_wqe_p, &my_qp->ipz_rqueue,
1196 &my_qp->rq_map);
1197 spin_unlock_irqrestore(&my_qp->recv_cq->spinlock, flags);
1201 spin_lock_irqsave(&my_qp->send_cq->spinlock, flags);
1202 my_qp->sq_map.left_to_poll = 0;
1203 my_qp->sq_map.next_wqe_idx = next_index(my_qp->sq_map.tail,
1204 my_qp->sq_map.entries);
1205 spin_unlock_irqrestore(&my_qp->send_cq->spinlock, flags);
1207 spin_lock_irqsave(&my_qp->recv_cq->spinlock, flags);
1208 my_qp->rq_map.left_to_poll = 0;
1209 my_qp->rq_map.next_wqe_idx = next_index(my_qp->rq_map.tail,
1210 my_qp->rq_map.entries);
1211 spin_unlock_irqrestore(&my_qp->recv_cq->spinlock, flags);
1215 if ((my_qp->sq_map.left_to_poll == 0) &&
1216 (my_qp->rq_map.left_to_poll == 0)) {
1217 spin_lock_irqsave(&my_qp->send_cq->spinlock, flags);
1218 ehca_add_to_err_list(my_qp, 1);
1219 spin_unlock_irqrestore(&my_qp->send_cq->spinlock, flags);
1221 if (HAS_RQ(my_qp)) {
1222 spin_lock_irqsave(&my_qp->recv_cq->spinlock, flags);
1223 ehca_add_to_err_list(my_qp, 0);
1224 spin_unlock_irqrestore(&my_qp->recv_cq->spinlock,
1246 struct ehca_qp *my_qp = container_of(ibqp, struct ehca_qp, ib_qp);
1260 "ehca_qp=%p qp_num=%x ", my_qp, ibqp->qp_num);
1265 my_qp->ipz_qp_handle,
1266 &my_qp->pf,
1267 mqpcb, my_qp->galpas.kernel);
1271 my_qp, ibqp->qp_num, h_ret);
1284 mqpcb->qp_state, my_qp, ibqp->qp_num);
1298 .port_num = my_qp->init_attr.port_num,
1322 attr->cur_qp_state, qp_cur_state, my_qp, ibqp->qp_num);
1328 my_qp, ibqp->qp_num, qp_cur_state, attr->qp_state, attr_mask);
1338 qp_cur_state, my_qp, ibqp->qp_num, attr_mask);
1349 qp_new_state, my_qp, ibqp->qp_num);
1360 statetrans, my_qp, ibqp->qp_num);
1370 ibqp->qp_type, my_qp, ibqp->qp_num);
1376 my_qp, ibqp->qp_num, statetrans);
1381 if ((my_qp->qp_type == IB_QPT_UD) &&
1382 (my_qp->ext_type != EQPT_LLQP) &&
1390 if ((my_qp->qp_type == IB_QPT_UD ||
1391 my_qp->qp_type == IB_QPT_GSI ||
1392 my_qp->qp_type == IB_QPT_SMI) &&
1398 spin_lock_irqsave(&my_qp->spinlock_s, flags);
1402 ipz_qeit_get(&my_qp->ipz_squeue);
1407 ret = prepare_sqe_rts(my_qp, shca, &bad_wqe_cnt);
1411 my_qp, ibqp->qp_num, ret);
1440 attr->pkey_index, my_qp, ibqp->qp_num);
1453 attr->port_num, my_qp, ibqp->qp_num,
1537 my_qp->mtu_shift = attr->path_mtu + 7;
1576 attr->alt_port_num, my_qp, ibqp->qp_num,
1586 attr->pkey_index, my_qp, ibqp->qp_num);
1675 my_qp->mig_armed = 1;
1694 my_qp->ipz_qp_handle,
1695 &my_qp->pf,
1697 mqpcb, my_qp->galpas.kernel);
1702 "ehca_qp=%p qp_num=%x", h_ret, my_qp, ibqp->qp_num);
1706 if ((my_qp->qp_type == IB_QPT_UD ||
1707 my_qp->qp_type == IB_QPT_GSI ||
1708 my_qp->qp_type == IB_QPT_SMI) &&
1712 hipz_update_sqa(my_qp, bad_wqe_cnt-1);
1724 my_qp->ipz_qp_handle,
1725 &my_qp->pf,
1728 my_qp->galpas.kernel);
1735 h_ret, my_qp, ibqp->qp_num);
1741 ret = check_for_left_cqes(my_qp, shca);
1747 ipz_qeit_reset(&my_qp->ipz_rqueue);
1748 ipz_qeit_reset(&my_qp->ipz_squeue);
1751 del_from_err_list(my_qp->send_cq, &my_qp->sq_err_node);
1753 if (HAS_RQ(my_qp))
1754 del_from_err_list(my_qp->recv_cq,
1755 &my_qp->rq_err_node);
1758 reset_queue_map(&my_qp->sq_map);
1760 if (HAS_RQ(my_qp) && !is_user)
1761 reset_queue_map(&my_qp->rq_map);
1765 my_qp->qkey = attr->qkey;
1769 spin_unlock_irqrestore(&my_qp->spinlock_s, flags);
1770 my_qp->sqerr_purgeflag = 1;
1786 struct ehca_qp *my_qp = container_of(ibqp, struct ehca_qp, ib_qp);
1804 int port = my_qp->init_attr.port_num;
1809 if (my_qp->mod_qp_parm) {
1811 if (my_qp->mod_qp_parm_idx >= EHCA_MOD_QP_PARM_MAX) {
1815 my_qp->init_attr.port_num,
1821 p = &my_qp->mod_qp_parm[my_qp->mod_qp_parm_idx];
1824 my_qp->mod_qp_parm_idx++;
1827 attr->qp_state, my_qp->init_attr.port_num,
1839 my_qp->state = attr->qp_state;
1892 struct ehca_qp *my_qp = container_of(qp, struct ehca_qp, ib_qp);
1903 my_qp, qp->qp_num, qp_attr_mask);
1910 "ehca_qp=%p qp_num=%x", my_qp, qp->qp_num);
1915 my_qp->ipz_qp_handle,
1916 &my_qp->pf,
1917 qpcb, my_qp->galpas.kernel);
1923 my_qp, qp->qp_num, h_ret);
1934 qpcb->qp_state, my_qp, qp->qp_num);
1950 if (my_qp->qp_type == IB_QPT_UD) {
1962 qp_attr->cap.max_inline_data = my_qp->sq_max_inline_data_size;
2022 *qp_init_attr = my_qp->init_attr;
2036 struct ehca_qp *my_qp =
2048 "ehca_qp=%p qp_num=%x ", my_qp, my_qp->real_qp_num);
2072 ehca_dmp(mqpcb, 4*70, "qp_num=%x", my_qp->real_qp_num);
2074 h_ret = hipz_h_modify_qp(shca->ipz_hca_handle, my_qp->ipz_qp_handle,
2076 my_qp->galpas.kernel);
2082 h_ret, my_qp, my_qp->real_qp_num);
2093 struct ehca_qp *my_qp = container_of(srq, struct ehca_qp, ib_srq);
2104 "ehca_qp=%p qp_num=%x", my_qp, my_qp->real_qp_num);
2108 h_ret = hipz_h_query_qp(adapter_handle, my_qp->ipz_qp_handle,
2109 NULL, qpcb, my_qp->galpas.kernel);
2115 my_qp, my_qp->real_qp_num, h_ret);
2124 ehca_dmp(qpcb, 4*70, "qp_num=%x", my_qp->real_qp_num);
2132 static int internal_destroy_qp(struct ib_device *dev, struct ehca_qp *my_qp,
2136 struct ehca_pd *my_pd = container_of(my_qp->ib_qp.pd, struct ehca_pd,
2138 struct ehca_sport *sport = &shca->sport[my_qp->init_attr.port_num - 1];
2139 u32 qp_num = my_qp->real_qp_num;
2149 if (my_qp->mm_count_galpa ||
2150 my_qp->mm_count_rqueue || my_qp->mm_count_squeue) {
2157 if (my_qp->send_cq) {
2158 ret = ehca_cq_unassign_qp(my_qp->send_cq, qp_num);
2162 qp_num, my_qp->send_cq->cq_number);
2168 idr_remove(&ehca_qp_idr, my_qp->token);
2175 if (HAS_RQ(my_qp) && !IS_SRQ(my_qp) && !is_user)
2176 del_from_err_list(my_qp->recv_cq, &my_qp->rq_err_node);
2178 if (HAS_SQ(my_qp) && !is_user)
2179 del_from_err_list(my_qp->send_cq, &my_qp->sq_err_node);
2182 wait_event(my_qp->wait_completion, !atomic_read(&my_qp->nr_events));
2184 h_ret = hipz_h_destroy_qp(shca->ipz_hca_handle, my_qp);
2187 "ehca_qp=%p qp_num=%x", h_ret, my_qp, qp_num);
2191 port_num = my_qp->init_attr.port_num;
2192 qp_type = my_qp->init_attr.qp_type;
2196 kfree(my_qp->mod_qp_parm);
2197 my_qp->mod_qp_parm = NULL;
2214 if (HAS_RQ(my_qp)) {
2215 ipz_queue_dtor(my_pd, &my_qp->ipz_rqueue);
2217 vfree(my_qp->rq_map.map);
2219 if (HAS_SQ(my_qp)) {
2220 ipz_queue_dtor(my_pd, &my_qp->ipz_squeue);
2222 vfree(my_qp->sq_map.map);
2224 kmem_cache_free(qp_cache, my_qp);