Lines Matching refs:cm_id_priv
309 static inline void cm_deref_id(struct cm_id_private *cm_id_priv) in cm_deref_id() argument
311 if (atomic_dec_and_test(&cm_id_priv->refcount)) in cm_deref_id()
312 complete(&cm_id_priv->comp); in cm_deref_id()
315 static int cm_alloc_msg(struct cm_id_private *cm_id_priv, in cm_alloc_msg() argument
328 if (!cm_id_priv->prim_send_port_not_ready) in cm_alloc_msg()
329 av = &cm_id_priv->av; in cm_alloc_msg()
330 else if (!cm_id_priv->altr_send_port_not_ready && in cm_alloc_msg()
331 (cm_id_priv->alt_av.port)) in cm_alloc_msg()
332 av = &cm_id_priv->alt_av; in cm_alloc_msg()
341 mad_agent = cm_id_priv->av.port->mad_agent; in cm_alloc_msg()
353 m = ib_create_send_mad(mad_agent, cm_id_priv->id.remote_cm_qpn, in cm_alloc_msg()
366 m->retries = cm_id_priv->max_cm_retries; in cm_alloc_msg()
368 atomic_inc(&cm_id_priv->refcount); in cm_alloc_msg()
369 m->context[0] = cm_id_priv; in cm_alloc_msg()
446 static void cm_set_private_data(struct cm_id_private *cm_id_priv, in cm_set_private_data() argument
449 if (cm_id_priv->private_data && cm_id_priv->private_data_len) in cm_set_private_data()
450 kfree(cm_id_priv->private_data); in cm_set_private_data()
452 cm_id_priv->private_data = private_data; in cm_set_private_data()
453 cm_id_priv->private_data_len = private_data_len; in cm_set_private_data()
492 static int add_cm_id_to_port_list(struct cm_id_private *cm_id_priv, in add_cm_id_to_port_list() argument
501 if (&cm_id_priv->av == av) in add_cm_id_to_port_list()
502 list_add_tail(&cm_id_priv->prim_list, &port->cm_priv_prim_list); in add_cm_id_to_port_list()
503 else if (&cm_id_priv->alt_av == av) in add_cm_id_to_port_list()
504 list_add_tail(&cm_id_priv->altr_list, &port->cm_priv_altr_list); in add_cm_id_to_port_list()
556 struct cm_id_private *cm_id_priv) in cm_init_av_by_path() argument
591 ret = add_cm_id_to_port_list(cm_id_priv, av, port); in cm_init_av_by_path()
600 static int cm_alloc_id(struct cm_id_private *cm_id_priv) in cm_alloc_id() argument
605 err = xa_alloc_cyclic_irq(&cm.local_id_table, &id, cm_id_priv, in cm_alloc_id()
608 cm_id_priv->id.local_id = (__force __be32)id ^ cm.random_id_operand; in cm_alloc_id()
624 struct cm_id_private *cm_id_priv; in cm_get_id() local
626 cm_id_priv = xa_load(&cm.local_id_table, cm_local_id(local_id)); in cm_get_id()
627 if (cm_id_priv) { in cm_get_id()
628 if (cm_id_priv->id.remote_id == remote_id) in cm_get_id()
629 atomic_inc(&cm_id_priv->refcount); in cm_get_id()
631 cm_id_priv = NULL; in cm_get_id()
634 return cm_id_priv; in cm_get_id()
639 struct cm_id_private *cm_id_priv; in cm_acquire_id() local
642 cm_id_priv = cm_get_id(local_id, remote_id); in cm_acquire_id()
645 return cm_id_priv; in cm_acquire_id()
673 static struct cm_id_private * cm_insert_listen(struct cm_id_private *cm_id_priv) in cm_insert_listen() argument
678 __be64 service_id = cm_id_priv->id.service_id; in cm_insert_listen()
679 __be64 service_mask = cm_id_priv->id.service_mask; in cm_insert_listen()
687 (cm_id_priv->id.device == cur_cm_id_priv->id.device)) in cm_insert_listen()
690 if (cm_id_priv->id.device < cur_cm_id_priv->id.device) in cm_insert_listen()
692 else if (cm_id_priv->id.device > cur_cm_id_priv->id.device) in cm_insert_listen()
701 rb_link_node(&cm_id_priv->service_node, parent, link); in cm_insert_listen()
702 rb_insert_color(&cm_id_priv->service_node, &cm.listen_service_table); in cm_insert_listen()
710 struct cm_id_private *cm_id_priv; in cm_find_listen() local
713 cm_id_priv = rb_entry(node, struct cm_id_private, service_node); in cm_find_listen()
714 if ((cm_id_priv->id.service_mask & service_id) == in cm_find_listen()
715 cm_id_priv->id.service_id && in cm_find_listen()
716 (cm_id_priv->id.device == device)) in cm_find_listen()
717 return cm_id_priv; in cm_find_listen()
719 if (device < cm_id_priv->id.device) in cm_find_listen()
721 else if (device > cm_id_priv->id.device) in cm_find_listen()
723 else if (be64_lt(service_id, cm_id_priv->id.service_id)) in cm_find_listen()
725 else if (be64_gt(service_id, cm_id_priv->id.service_id)) in cm_find_listen()
817 *cm_id_priv) in cm_insert_remote_sidr()
822 union ib_gid *port_gid = &cm_id_priv->av.dgid; in cm_insert_remote_sidr()
823 __be32 remote_id = cm_id_priv->id.remote_id; in cm_insert_remote_sidr()
845 rb_link_node(&cm_id_priv->sidr_id_node, parent, link); in cm_insert_remote_sidr()
846 rb_insert_color(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table); in cm_insert_remote_sidr()
850 static void cm_reject_sidr_req(struct cm_id_private *cm_id_priv, in cm_reject_sidr_req() argument
857 ib_send_cm_sidr_rep(&cm_id_priv->id, ¶m); in cm_reject_sidr_req()
864 struct cm_id_private *cm_id_priv; in ib_create_cm_id() local
867 cm_id_priv = kzalloc(sizeof *cm_id_priv, GFP_KERNEL); in ib_create_cm_id()
868 if (!cm_id_priv) in ib_create_cm_id()
871 cm_id_priv->id.state = IB_CM_IDLE; in ib_create_cm_id()
872 cm_id_priv->id.device = device; in ib_create_cm_id()
873 cm_id_priv->id.cm_handler = cm_handler; in ib_create_cm_id()
874 cm_id_priv->id.context = context; in ib_create_cm_id()
875 cm_id_priv->id.remote_cm_qpn = 1; in ib_create_cm_id()
876 ret = cm_alloc_id(cm_id_priv); in ib_create_cm_id()
880 spin_lock_init(&cm_id_priv->lock); in ib_create_cm_id()
881 init_completion(&cm_id_priv->comp); in ib_create_cm_id()
882 INIT_LIST_HEAD(&cm_id_priv->work_list); in ib_create_cm_id()
883 INIT_LIST_HEAD(&cm_id_priv->prim_list); in ib_create_cm_id()
884 INIT_LIST_HEAD(&cm_id_priv->altr_list); in ib_create_cm_id()
885 atomic_set(&cm_id_priv->work_count, -1); in ib_create_cm_id()
886 atomic_set(&cm_id_priv->refcount, 1); in ib_create_cm_id()
887 return &cm_id_priv->id; in ib_create_cm_id()
890 kfree(cm_id_priv); in ib_create_cm_id()
895 static struct cm_work * cm_dequeue_work(struct cm_id_private *cm_id_priv) in cm_dequeue_work() argument
899 if (list_empty(&cm_id_priv->work_list)) in cm_dequeue_work()
902 work = list_entry(cm_id_priv->work_list.next, struct cm_work, list); in cm_dequeue_work()
966 static void cm_enter_timewait(struct cm_id_private *cm_id_priv) in cm_enter_timewait() argument
972 cm_dev = ib_get_client_data(cm_id_priv->id.device, &cm_client); in cm_enter_timewait()
977 cm_cleanup_timewait(cm_id_priv->timewait_info); in cm_enter_timewait()
978 list_add_tail(&cm_id_priv->timewait_info->list, &cm.timewait_list); in cm_enter_timewait()
986 cm_id_priv->id.state = IB_CM_TIMEWAIT; in cm_enter_timewait()
987 wait_time = cm_convert_to_ms(cm_id_priv->av.timeout); in cm_enter_timewait()
992 queue_delayed_work(cm.wq, &cm_id_priv->timewait_info->work.work, in cm_enter_timewait()
996 cm_id_priv->timewait_info = NULL; in cm_enter_timewait()
999 static void cm_reset_to_idle(struct cm_id_private *cm_id_priv) in cm_reset_to_idle() argument
1003 cm_id_priv->id.state = IB_CM_IDLE; in cm_reset_to_idle()
1004 if (cm_id_priv->timewait_info) { in cm_reset_to_idle()
1006 cm_cleanup_timewait(cm_id_priv->timewait_info); in cm_reset_to_idle()
1008 kfree(cm_id_priv->timewait_info); in cm_reset_to_idle()
1009 cm_id_priv->timewait_info = NULL; in cm_reset_to_idle()
1015 struct cm_id_private *cm_id_priv; in cm_destroy_id() local
1018 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_destroy_id()
1020 spin_lock_irq(&cm_id_priv->lock); in cm_destroy_id()
1023 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1026 if (--cm_id_priv->listen_sharecount > 0) { in cm_destroy_id()
1028 cm_deref_id(cm_id_priv); in cm_destroy_id()
1032 rb_erase(&cm_id_priv->service_node, &cm.listen_service_table); in cm_destroy_id()
1037 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_destroy_id()
1038 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1041 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1042 cm_reject_sidr_req(cm_id_priv, IB_SIDR_REJECT); in cm_destroy_id()
1044 if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) in cm_destroy_id()
1045 rb_erase(&cm_id_priv->sidr_id_node, in cm_destroy_id()
1051 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_destroy_id()
1052 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1054 &cm_id_priv->id.device->node_guid, in cm_destroy_id()
1055 sizeof cm_id_priv->id.device->node_guid, in cm_destroy_id()
1061 cm_reset_to_idle(cm_id_priv); in cm_destroy_id()
1062 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1064 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1071 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_destroy_id()
1076 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1081 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1082 if (cm_id_priv->qp_type == IB_QPT_XRC_TGT) in cm_destroy_id()
1087 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_destroy_id()
1088 cm_enter_timewait(cm_id_priv); in cm_destroy_id()
1089 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1092 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1096 spin_unlock_irq(&cm_id_priv->lock); in cm_destroy_id()
1101 if (!list_empty(&cm_id_priv->altr_list) && in cm_destroy_id()
1102 (!cm_id_priv->altr_send_port_not_ready)) in cm_destroy_id()
1103 list_del(&cm_id_priv->altr_list); in cm_destroy_id()
1104 if (!list_empty(&cm_id_priv->prim_list) && in cm_destroy_id()
1105 (!cm_id_priv->prim_send_port_not_ready)) in cm_destroy_id()
1106 list_del(&cm_id_priv->prim_list); in cm_destroy_id()
1110 cm_deref_id(cm_id_priv); in cm_destroy_id()
1111 wait_for_completion(&cm_id_priv->comp); in cm_destroy_id()
1112 while ((work = cm_dequeue_work(cm_id_priv)) != NULL) in cm_destroy_id()
1115 rdma_destroy_ah_attr(&cm_id_priv->av.ah_attr); in cm_destroy_id()
1116 rdma_destroy_ah_attr(&cm_id_priv->alt_av.ah_attr); in cm_destroy_id()
1117 kfree(cm_id_priv->private_data); in cm_destroy_id()
1118 kfree(cm_id_priv); in cm_destroy_id()
1143 struct cm_id_private *cm_id_priv, *cur_cm_id_priv; in __ib_cm_listen() local
1152 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in __ib_cm_listen()
1157 ++cm_id_priv->listen_sharecount; in __ib_cm_listen()
1166 cur_cm_id_priv = cm_insert_listen(cm_id_priv); in __ib_cm_listen()
1170 --cm_id_priv->listen_sharecount; in __ib_cm_listen()
1209 struct cm_id_private *cm_id_priv; in ib_cm_insert_listen() local
1225 cm_id_priv = cm_find_listen(device, service_id); in ib_cm_insert_listen()
1226 if (cm_id_priv) { in ib_cm_insert_listen()
1233 atomic_inc(&cm_id_priv->refcount); in ib_cm_insert_listen()
1234 ++cm_id_priv->listen_sharecount; in ib_cm_insert_listen()
1238 cm_id = &cm_id_priv->id; in ib_cm_insert_listen()
1256 static __be64 cm_form_tid(struct cm_id_private *cm_id_priv) in cm_form_tid() argument
1260 hi_tid = ((u64) cm_id_priv->av.port->mad_agent->hi_tid) << 32; in cm_form_tid()
1261 low_tid = (u64)cm_id_priv->id.local_id; in cm_form_tid()
1277 struct cm_id_private *cm_id_priv, in cm_format_req() argument
1289 cm_form_tid(cm_id_priv)); in cm_format_req()
1291 req_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_req()
1293 req_msg->local_ca_guid = cm_id_priv->id.device->node_guid; in cm_format_req()
1339 cm_ack_timeout(cm_id_priv->av.port->cm_dev->ack_delay, in cm_format_req()
1374 cm_ack_timeout(cm_id_priv->av.port->cm_dev->ack_delay, in cm_format_req()
1411 struct cm_id_private *cm_id_priv; in ib_send_cm_req() local
1421 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_req()
1422 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_req()
1424 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_req()
1428 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_req()
1430 cm_id_priv->timewait_info = cm_create_timewait_info(cm_id_priv-> in ib_send_cm_req()
1432 if (IS_ERR(cm_id_priv->timewait_info)) { in ib_send_cm_req()
1433 ret = PTR_ERR(cm_id_priv->timewait_info); in ib_send_cm_req()
1438 param->ppath_sgid_attr, &cm_id_priv->av, in ib_send_cm_req()
1439 cm_id_priv); in ib_send_cm_req()
1444 &cm_id_priv->alt_av, cm_id_priv); in ib_send_cm_req()
1450 cm_id_priv->timeout_ms = cm_convert_to_ms( in ib_send_cm_req()
1454 cm_id_priv->max_cm_retries = param->max_cm_retries; in ib_send_cm_req()
1455 cm_id_priv->initiator_depth = param->initiator_depth; in ib_send_cm_req()
1456 cm_id_priv->responder_resources = param->responder_resources; in ib_send_cm_req()
1457 cm_id_priv->retry_count = param->retry_count; in ib_send_cm_req()
1458 cm_id_priv->path_mtu = param->primary_path->mtu; in ib_send_cm_req()
1459 cm_id_priv->pkey = param->primary_path->pkey; in ib_send_cm_req()
1460 cm_id_priv->qp_type = param->qp_type; in ib_send_cm_req()
1462 ret = cm_alloc_msg(cm_id_priv, &cm_id_priv->msg); in ib_send_cm_req()
1466 req_msg = (struct cm_req_msg *) cm_id_priv->msg->mad; in ib_send_cm_req()
1467 cm_format_req(req_msg, cm_id_priv, param); in ib_send_cm_req()
1468 cm_id_priv->tid = req_msg->hdr.tid; in ib_send_cm_req()
1469 cm_id_priv->msg->timeout_ms = cm_id_priv->timeout_ms; in ib_send_cm_req()
1470 cm_id_priv->msg->context[1] = (void *) (unsigned long) IB_CM_REQ_SENT; in ib_send_cm_req()
1472 cm_id_priv->local_qpn = cm_req_get_local_qpn(req_msg); in ib_send_cm_req()
1473 cm_id_priv->rq_psn = cm_req_get_starting_psn(req_msg); in ib_send_cm_req()
1475 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_req()
1476 ret = ib_post_send_mad(cm_id_priv->msg, NULL); in ib_send_cm_req()
1478 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_req()
1483 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_req()
1486 error2: cm_free_msg(cm_id_priv->msg); in ib_send_cm_req()
1487 error1: kfree(cm_id_priv->timewait_info); in ib_send_cm_req()
1682 struct cm_id_private *cm_id_priv, in cm_format_req_event() argument
1692 param->port = cm_id_priv->av.port->port_num; in cm_format_req_event()
1716 param->ppath_sgid_attr = cm_id_priv->av.ah_attr.grh.sgid_attr; in cm_format_req_event()
1720 static void cm_process_work(struct cm_id_private *cm_id_priv, in cm_process_work() argument
1726 ret = cm_id_priv->id.cm_handler(&cm_id_priv->id, &work->cm_event); in cm_process_work()
1729 while (!ret && !atomic_add_negative(-1, &cm_id_priv->work_count)) { in cm_process_work()
1730 spin_lock_irq(&cm_id_priv->lock); in cm_process_work()
1731 work = cm_dequeue_work(cm_id_priv); in cm_process_work()
1732 spin_unlock_irq(&cm_id_priv->lock); in cm_process_work()
1736 ret = cm_id_priv->id.cm_handler(&cm_id_priv->id, in cm_process_work()
1740 cm_deref_id(cm_id_priv); in cm_process_work()
1742 cm_destroy_id(&cm_id_priv->id, ret); in cm_process_work()
1746 struct cm_id_private *cm_id_priv, in cm_format_mra() argument
1750 cm_format_mad_hdr(&mra_msg->hdr, CM_MRA_ATTR_ID, cm_id_priv->tid); in cm_format_mra()
1752 mra_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_mra()
1753 mra_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_mra()
1761 struct cm_id_private *cm_id_priv, in cm_format_rej() argument
1768 cm_format_mad_hdr(&rej_msg->hdr, CM_REJ_ATTR_ID, cm_id_priv->tid); in cm_format_rej()
1769 rej_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_rej()
1771 switch(cm_id_priv->id.state) { in cm_format_rej()
1777 rej_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_rej()
1782 rej_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_rej()
1786 rej_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_rej()
1802 struct cm_id_private *cm_id_priv) in cm_dup_req_handler() argument
1811 if (cm_id_priv->id.state == IB_CM_REQ_RCVD) in cm_dup_req_handler()
1818 spin_lock_irq(&cm_id_priv->lock); in cm_dup_req_handler()
1819 switch (cm_id_priv->id.state) { in cm_dup_req_handler()
1821 cm_format_mra((struct cm_mra_msg *) msg->mad, cm_id_priv, in cm_dup_req_handler()
1822 CM_MSG_RESPONSE_REQ, cm_id_priv->service_timeout, in cm_dup_req_handler()
1823 cm_id_priv->private_data, in cm_dup_req_handler()
1824 cm_id_priv->private_data_len); in cm_dup_req_handler()
1827 cm_format_rej((struct cm_rej_msg *) msg->mad, cm_id_priv, in cm_dup_req_handler()
1833 spin_unlock_irq(&cm_id_priv->lock); in cm_dup_req_handler()
1840 unlock: spin_unlock_irq(&cm_id_priv->lock); in cm_dup_req_handler()
1845 struct cm_id_private *cm_id_priv) in cm_match_req() argument
1856 timewait_info = cm_insert_remote_id(cm_id_priv->timewait_info); in cm_match_req()
1869 timewait_info = cm_insert_remote_qpn(cm_id_priv->timewait_info); in cm_match_req()
1871 cm_cleanup_timewait(cm_id_priv->timewait_info); in cm_match_req()
1888 listen_cm_id_priv = cm_find_listen(cm_id_priv->id.device, in cm_match_req()
1891 cm_cleanup_timewait(cm_id_priv->timewait_info); in cm_match_req()
1899 atomic_inc(&cm_id_priv->refcount); in cm_match_req()
1900 cm_id_priv->id.state = IB_CM_REQ_RCVD; in cm_match_req()
1901 atomic_inc(&cm_id_priv->work_count); in cm_match_req()
1938 struct cm_id_private *cm_id_priv, *listen_cm_id_priv; in cm_req_handler() local
1950 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_req_handler()
1951 cm_id_priv->id.remote_id = req_msg->local_comm_id; in cm_req_handler()
1954 &cm_id_priv->av); in cm_req_handler()
1957 cm_id_priv->timewait_info = cm_create_timewait_info(cm_id_priv-> in cm_req_handler()
1959 if (IS_ERR(cm_id_priv->timewait_info)) { in cm_req_handler()
1960 ret = PTR_ERR(cm_id_priv->timewait_info); in cm_req_handler()
1963 cm_id_priv->timewait_info->work.remote_id = req_msg->local_comm_id; in cm_req_handler()
1964 cm_id_priv->timewait_info->remote_ca_guid = req_msg->local_ca_guid; in cm_req_handler()
1965 cm_id_priv->timewait_info->remote_qpn = cm_req_get_local_qpn(req_msg); in cm_req_handler()
1967 listen_cm_id_priv = cm_match_req(work, cm_id_priv); in cm_req_handler()
1975 cm_id_priv->id.cm_handler = listen_cm_id_priv->id.cm_handler; in cm_req_handler()
1976 cm_id_priv->id.context = listen_cm_id_priv->id.context; in cm_req_handler()
1977 cm_id_priv->id.service_id = req_msg->service_id; in cm_req_handler()
1978 cm_id_priv->id.service_mask = ~cpu_to_be64(0); in cm_req_handler()
1985 grh = rdma_ah_read_grh(&cm_id_priv->av.ah_attr); in cm_req_handler()
2003 if (cm_id_priv->av.ah_attr.type == RDMA_AH_ATTR_TYPE_ROCE) in cm_req_handler()
2005 cm_id_priv->av.ah_attr.roce.dmac); in cm_req_handler()
2007 ret = cm_init_av_by_path(&work->path[0], gid_attr, &cm_id_priv->av, in cm_req_handler()
2008 cm_id_priv); in cm_req_handler()
2027 &cm_id_priv->alt_av, cm_id_priv); in cm_req_handler()
2035 cm_id_priv->tid = req_msg->hdr.tid; in cm_req_handler()
2036 cm_id_priv->timeout_ms = cm_convert_to_ms( in cm_req_handler()
2038 cm_id_priv->max_cm_retries = cm_req_get_max_cm_retries(req_msg); in cm_req_handler()
2039 cm_id_priv->remote_qpn = cm_req_get_local_qpn(req_msg); in cm_req_handler()
2040 cm_id_priv->initiator_depth = cm_req_get_resp_res(req_msg); in cm_req_handler()
2041 cm_id_priv->responder_resources = cm_req_get_init_depth(req_msg); in cm_req_handler()
2042 cm_id_priv->path_mtu = cm_req_get_path_mtu(req_msg); in cm_req_handler()
2043 cm_id_priv->pkey = req_msg->pkey; in cm_req_handler()
2044 cm_id_priv->sq_psn = cm_req_get_starting_psn(req_msg); in cm_req_handler()
2045 cm_id_priv->retry_count = cm_req_get_retry_count(req_msg); in cm_req_handler()
2046 cm_id_priv->rnr_retry_count = cm_req_get_rnr_retry_count(req_msg); in cm_req_handler()
2047 cm_id_priv->qp_type = cm_req_get_qp_type(req_msg); in cm_req_handler()
2049 cm_format_req_event(work, cm_id_priv, &listen_cm_id_priv->id); in cm_req_handler()
2050 cm_process_work(cm_id_priv, work); in cm_req_handler()
2055 atomic_dec(&cm_id_priv->refcount); in cm_req_handler()
2058 kfree(cm_id_priv->timewait_info); in cm_req_handler()
2065 struct cm_id_private *cm_id_priv, in cm_format_rep() argument
2068 cm_format_mad_hdr(&rep_msg->hdr, CM_REP_ATTR_ID, cm_id_priv->tid); in cm_format_rep()
2069 rep_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_rep()
2070 rep_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_rep()
2074 cm_id_priv->av.port->cm_dev->ack_delay); in cm_format_rep()
2077 rep_msg->local_ca_guid = cm_id_priv->id.device->node_guid; in cm_format_rep()
2079 if (cm_id_priv->qp_type != IB_QPT_XRC_TGT) { in cm_format_rep()
2097 struct cm_id_private *cm_id_priv; in ib_send_cm_rep() local
2107 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rep()
2108 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_rep()
2112 be32_to_cpu(cm_id_priv->id.local_id), cm_id->state); in ib_send_cm_rep()
2117 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_rep()
2122 cm_format_rep(rep_msg, cm_id_priv, param); in ib_send_cm_rep()
2123 msg->timeout_ms = cm_id_priv->timeout_ms; in ib_send_cm_rep()
2128 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rep()
2134 cm_id_priv->msg = msg; in ib_send_cm_rep()
2135 cm_id_priv->initiator_depth = param->initiator_depth; in ib_send_cm_rep()
2136 cm_id_priv->responder_resources = param->responder_resources; in ib_send_cm_rep()
2137 cm_id_priv->rq_psn = cm_rep_get_starting_psn(rep_msg); in ib_send_cm_rep()
2138 cm_id_priv->local_qpn = cpu_to_be32(param->qp_num & 0xFFFFFF); in ib_send_cm_rep()
2140 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rep()
2146 struct cm_id_private *cm_id_priv, in cm_format_rtu() argument
2150 cm_format_mad_hdr(&rtu_msg->hdr, CM_RTU_ATTR_ID, cm_id_priv->tid); in cm_format_rtu()
2151 rtu_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_rtu()
2152 rtu_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_rtu()
2162 struct cm_id_private *cm_id_priv; in ib_send_cm_rtu() local
2175 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rtu()
2176 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_rtu()
2185 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_rtu()
2189 cm_format_rtu((struct cm_rtu_msg *) msg->mad, cm_id_priv, in ib_send_cm_rtu()
2194 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rtu()
2201 cm_set_private_data(cm_id_priv, data, private_data_len); in ib_send_cm_rtu()
2202 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rtu()
2205 error: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rtu()
2234 struct cm_id_private *cm_id_priv; in cm_dup_rep_handler() local
2240 cm_id_priv = cm_acquire_id(rep_msg->remote_comm_id, in cm_dup_rep_handler()
2242 if (!cm_id_priv) in cm_dup_rep_handler()
2251 spin_lock_irq(&cm_id_priv->lock); in cm_dup_rep_handler()
2252 if (cm_id_priv->id.state == IB_CM_ESTABLISHED) in cm_dup_rep_handler()
2253 cm_format_rtu((struct cm_rtu_msg *) msg->mad, cm_id_priv, in cm_dup_rep_handler()
2254 cm_id_priv->private_data, in cm_dup_rep_handler()
2255 cm_id_priv->private_data_len); in cm_dup_rep_handler()
2256 else if (cm_id_priv->id.state == IB_CM_MRA_REP_SENT) in cm_dup_rep_handler()
2257 cm_format_mra((struct cm_mra_msg *) msg->mad, cm_id_priv, in cm_dup_rep_handler()
2258 CM_MSG_RESPONSE_REP, cm_id_priv->service_timeout, in cm_dup_rep_handler()
2259 cm_id_priv->private_data, in cm_dup_rep_handler()
2260 cm_id_priv->private_data_len); in cm_dup_rep_handler()
2263 spin_unlock_irq(&cm_id_priv->lock); in cm_dup_rep_handler()
2270 unlock: spin_unlock_irq(&cm_id_priv->lock); in cm_dup_rep_handler()
2272 deref: cm_deref_id(cm_id_priv); in cm_dup_rep_handler()
2277 struct cm_id_private *cm_id_priv; in cm_rep_handler() local
2285 cm_id_priv = cm_acquire_id(rep_msg->remote_comm_id, 0); in cm_rep_handler()
2286 if (!cm_id_priv) { in cm_rep_handler()
2293 cm_format_rep_event(work, cm_id_priv->qp_type); in cm_rep_handler()
2295 spin_lock_irq(&cm_id_priv->lock); in cm_rep_handler()
2296 switch (cm_id_priv->id.state) { in cm_rep_handler()
2301 spin_unlock_irq(&cm_id_priv->lock); in cm_rep_handler()
2304 __func__, cm_id_priv->id.state, in cm_rep_handler()
2310 cm_id_priv->timewait_info->work.remote_id = rep_msg->local_comm_id; in cm_rep_handler()
2311 cm_id_priv->timewait_info->remote_ca_guid = rep_msg->local_ca_guid; in cm_rep_handler()
2312 cm_id_priv->timewait_info->remote_qpn = cm_rep_get_qpn(rep_msg, cm_id_priv->qp_type); in cm_rep_handler()
2316 if (cm_insert_remote_id(cm_id_priv->timewait_info)) { in cm_rep_handler()
2318 spin_unlock_irq(&cm_id_priv->lock); in cm_rep_handler()
2325 timewait_info = cm_insert_remote_qpn(cm_id_priv->timewait_info); in cm_rep_handler()
2327 rb_erase(&cm_id_priv->timewait_info->remote_id_node, in cm_rep_handler()
2329 cm_id_priv->timewait_info->inserted_remote_id = 0; in cm_rep_handler()
2334 spin_unlock_irq(&cm_id_priv->lock); in cm_rep_handler()
2353 cm_id_priv->id.state = IB_CM_REP_RCVD; in cm_rep_handler()
2354 cm_id_priv->id.remote_id = rep_msg->local_comm_id; in cm_rep_handler()
2355 cm_id_priv->remote_qpn = cm_rep_get_qpn(rep_msg, cm_id_priv->qp_type); in cm_rep_handler()
2356 cm_id_priv->initiator_depth = rep_msg->resp_resources; in cm_rep_handler()
2357 cm_id_priv->responder_resources = rep_msg->initiator_depth; in cm_rep_handler()
2358 cm_id_priv->sq_psn = cm_rep_get_starting_psn(rep_msg); in cm_rep_handler()
2359 cm_id_priv->rnr_retry_count = cm_rep_get_rnr_retry_count(rep_msg); in cm_rep_handler()
2360 cm_id_priv->target_ack_delay = cm_rep_get_target_ack_delay(rep_msg); in cm_rep_handler()
2361 cm_id_priv->av.timeout = in cm_rep_handler()
2362 cm_ack_timeout(cm_id_priv->target_ack_delay, in cm_rep_handler()
2363 cm_id_priv->av.timeout - 1); in cm_rep_handler()
2364 cm_id_priv->alt_av.timeout = in cm_rep_handler()
2365 cm_ack_timeout(cm_id_priv->target_ack_delay, in cm_rep_handler()
2366 cm_id_priv->alt_av.timeout - 1); in cm_rep_handler()
2370 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_rep_handler()
2371 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_rep_handler()
2373 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_rep_handler()
2374 spin_unlock_irq(&cm_id_priv->lock); in cm_rep_handler()
2377 cm_process_work(cm_id_priv, work); in cm_rep_handler()
2379 cm_deref_id(cm_id_priv); in cm_rep_handler()
2383 cm_deref_id(cm_id_priv); in cm_rep_handler()
2389 struct cm_id_private *cm_id_priv; in cm_establish_handler() local
2393 cm_id_priv = cm_acquire_id(work->local_id, work->remote_id); in cm_establish_handler()
2394 if (!cm_id_priv) in cm_establish_handler()
2397 spin_lock_irq(&cm_id_priv->lock); in cm_establish_handler()
2398 if (cm_id_priv->id.state != IB_CM_ESTABLISHED) { in cm_establish_handler()
2399 spin_unlock_irq(&cm_id_priv->lock); in cm_establish_handler()
2403 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_establish_handler()
2404 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_establish_handler()
2406 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_establish_handler()
2407 spin_unlock_irq(&cm_id_priv->lock); in cm_establish_handler()
2410 cm_process_work(cm_id_priv, work); in cm_establish_handler()
2412 cm_deref_id(cm_id_priv); in cm_establish_handler()
2415 cm_deref_id(cm_id_priv); in cm_establish_handler()
2421 struct cm_id_private *cm_id_priv; in cm_rtu_handler() local
2426 cm_id_priv = cm_acquire_id(rtu_msg->remote_comm_id, in cm_rtu_handler()
2428 if (!cm_id_priv) in cm_rtu_handler()
2433 spin_lock_irq(&cm_id_priv->lock); in cm_rtu_handler()
2434 if (cm_id_priv->id.state != IB_CM_REP_SENT && in cm_rtu_handler()
2435 cm_id_priv->id.state != IB_CM_MRA_REP_RCVD) { in cm_rtu_handler()
2436 spin_unlock_irq(&cm_id_priv->lock); in cm_rtu_handler()
2441 cm_id_priv->id.state = IB_CM_ESTABLISHED; in cm_rtu_handler()
2443 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_rtu_handler()
2444 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_rtu_handler()
2446 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_rtu_handler()
2447 spin_unlock_irq(&cm_id_priv->lock); in cm_rtu_handler()
2450 cm_process_work(cm_id_priv, work); in cm_rtu_handler()
2452 cm_deref_id(cm_id_priv); in cm_rtu_handler()
2455 cm_deref_id(cm_id_priv); in cm_rtu_handler()
2460 struct cm_id_private *cm_id_priv, in cm_format_dreq() argument
2465 cm_form_tid(cm_id_priv)); in cm_format_dreq()
2466 dreq_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_dreq()
2467 dreq_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_dreq()
2468 cm_dreq_set_remote_qpn(dreq_msg, cm_id_priv->remote_qpn); in cm_format_dreq()
2478 struct cm_id_private *cm_id_priv; in ib_send_cm_dreq() local
2486 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_dreq()
2487 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_dreq()
2497 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in ib_send_cm_dreq()
2499 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_dreq()
2501 cm_enter_timewait(cm_id_priv); in ib_send_cm_dreq()
2505 cm_format_dreq((struct cm_dreq_msg *) msg->mad, cm_id_priv, in ib_send_cm_dreq()
2507 msg->timeout_ms = cm_id_priv->timeout_ms; in ib_send_cm_dreq()
2512 cm_enter_timewait(cm_id_priv); in ib_send_cm_dreq()
2513 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_dreq()
2519 cm_id_priv->msg = msg; in ib_send_cm_dreq()
2520 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_dreq()
2526 struct cm_id_private *cm_id_priv, in cm_format_drep() argument
2530 cm_format_mad_hdr(&drep_msg->hdr, CM_DREP_ATTR_ID, cm_id_priv->tid); in cm_format_drep()
2531 drep_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_drep()
2532 drep_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_drep()
2542 struct cm_id_private *cm_id_priv; in ib_send_cm_drep() local
2555 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_drep()
2556 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_drep()
2558 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_drep()
2565 cm_set_private_data(cm_id_priv, data, private_data_len); in ib_send_cm_drep()
2566 cm_enter_timewait(cm_id_priv); in ib_send_cm_drep()
2568 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_drep()
2572 cm_format_drep((struct cm_drep_msg *) msg->mad, cm_id_priv, in ib_send_cm_drep()
2577 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_drep()
2582 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_drep()
2615 struct cm_id_private *cm_id_priv; in cm_dreq_handler() local
2621 cm_id_priv = cm_acquire_id(dreq_msg->remote_comm_id, in cm_dreq_handler()
2623 if (!cm_id_priv) { in cm_dreq_handler()
2635 spin_lock_irq(&cm_id_priv->lock); in cm_dreq_handler()
2636 if (cm_id_priv->local_qpn != cm_dreq_get_remote_qpn(dreq_msg)) in cm_dreq_handler()
2639 switch (cm_id_priv->id.state) { in cm_dreq_handler()
2642 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_dreq_handler()
2645 if (cm_id_priv->id.lap_state == IB_CM_LAP_SENT || in cm_dreq_handler()
2646 cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD) in cm_dreq_handler()
2647 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_dreq_handler()
2658 cm_format_drep((struct cm_drep_msg *) msg->mad, cm_id_priv, in cm_dreq_handler()
2659 cm_id_priv->private_data, in cm_dreq_handler()
2660 cm_id_priv->private_data_len); in cm_dreq_handler()
2661 spin_unlock_irq(&cm_id_priv->lock); in cm_dreq_handler()
2673 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_dreq_handler()
2674 cm_id_priv->id.state); in cm_dreq_handler()
2677 cm_id_priv->id.state = IB_CM_DREQ_RCVD; in cm_dreq_handler()
2678 cm_id_priv->tid = dreq_msg->hdr.tid; in cm_dreq_handler()
2679 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_dreq_handler()
2681 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_dreq_handler()
2682 spin_unlock_irq(&cm_id_priv->lock); in cm_dreq_handler()
2685 cm_process_work(cm_id_priv, work); in cm_dreq_handler()
2687 cm_deref_id(cm_id_priv); in cm_dreq_handler()
2690 unlock: spin_unlock_irq(&cm_id_priv->lock); in cm_dreq_handler()
2691 deref: cm_deref_id(cm_id_priv); in cm_dreq_handler()
2697 struct cm_id_private *cm_id_priv; in cm_drep_handler() local
2702 cm_id_priv = cm_acquire_id(drep_msg->remote_comm_id, in cm_drep_handler()
2704 if (!cm_id_priv) in cm_drep_handler()
2709 spin_lock_irq(&cm_id_priv->lock); in cm_drep_handler()
2710 if (cm_id_priv->id.state != IB_CM_DREQ_SENT && in cm_drep_handler()
2711 cm_id_priv->id.state != IB_CM_DREQ_RCVD) { in cm_drep_handler()
2712 spin_unlock_irq(&cm_id_priv->lock); in cm_drep_handler()
2715 cm_enter_timewait(cm_id_priv); in cm_drep_handler()
2717 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_drep_handler()
2718 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_drep_handler()
2720 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_drep_handler()
2721 spin_unlock_irq(&cm_id_priv->lock); in cm_drep_handler()
2724 cm_process_work(cm_id_priv, work); in cm_drep_handler()
2726 cm_deref_id(cm_id_priv); in cm_drep_handler()
2729 cm_deref_id(cm_id_priv); in cm_drep_handler()
2740 struct cm_id_private *cm_id_priv; in ib_send_cm_rej() local
2749 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rej()
2751 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_rej()
2759 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_rej()
2762 cm_id_priv, reason, ari, ari_length, in ib_send_cm_rej()
2765 cm_reset_to_idle(cm_id_priv); in ib_send_cm_rej()
2769 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_rej()
2772 cm_id_priv, reason, ari, ari_length, in ib_send_cm_rej()
2775 cm_enter_timewait(cm_id_priv); in ib_send_cm_rej()
2779 be32_to_cpu(cm_id_priv->id.local_id), cm_id->state); in ib_send_cm_rej()
2791 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_rej()
2812 struct cm_id_private *cm_id_priv; in cm_acquire_rejected_id() local
2825 cm_id_priv = xa_load(&cm.local_id_table, in cm_acquire_rejected_id()
2827 if (cm_id_priv) { in cm_acquire_rejected_id()
2828 if (cm_id_priv->id.remote_id == remote_id) in cm_acquire_rejected_id()
2829 atomic_inc(&cm_id_priv->refcount); in cm_acquire_rejected_id()
2831 cm_id_priv = NULL; in cm_acquire_rejected_id()
2835 cm_id_priv = cm_acquire_id(rej_msg->remote_comm_id, 0); in cm_acquire_rejected_id()
2837 cm_id_priv = cm_acquire_id(rej_msg->remote_comm_id, remote_id); in cm_acquire_rejected_id()
2839 return cm_id_priv; in cm_acquire_rejected_id()
2844 struct cm_id_private *cm_id_priv; in cm_rej_handler() local
2849 cm_id_priv = cm_acquire_rejected_id(rej_msg); in cm_rej_handler()
2850 if (!cm_id_priv) in cm_rej_handler()
2855 spin_lock_irq(&cm_id_priv->lock); in cm_rej_handler()
2856 switch (cm_id_priv->id.state) { in cm_rej_handler()
2861 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_rej_handler()
2866 cm_enter_timewait(cm_id_priv); in cm_rej_handler()
2868 cm_reset_to_idle(cm_id_priv); in cm_rej_handler()
2871 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_rej_handler()
2875 cm_enter_timewait(cm_id_priv); in cm_rej_handler()
2878 if (cm_id_priv->id.lap_state == IB_CM_LAP_UNINIT || in cm_rej_handler()
2879 cm_id_priv->id.lap_state == IB_CM_LAP_SENT) { in cm_rej_handler()
2880 if (cm_id_priv->id.lap_state == IB_CM_LAP_SENT) in cm_rej_handler()
2881 ib_cancel_mad(cm_id_priv->av.port->mad_agent, in cm_rej_handler()
2882 cm_id_priv->msg); in cm_rej_handler()
2883 cm_enter_timewait(cm_id_priv); in cm_rej_handler()
2888 spin_unlock_irq(&cm_id_priv->lock); in cm_rej_handler()
2890 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_rej_handler()
2891 cm_id_priv->id.state); in cm_rej_handler()
2896 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_rej_handler()
2898 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_rej_handler()
2899 spin_unlock_irq(&cm_id_priv->lock); in cm_rej_handler()
2902 cm_process_work(cm_id_priv, work); in cm_rej_handler()
2904 cm_deref_id(cm_id_priv); in cm_rej_handler()
2907 cm_deref_id(cm_id_priv); in cm_rej_handler()
2916 struct cm_id_private *cm_id_priv; in ib_send_cm_mra() local
2932 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_mra()
2934 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_mra()
2935 switch(cm_id_priv->id.state) { in ib_send_cm_mra()
2956 __func__, be32_to_cpu(cm_id_priv->id.local_id), in ib_send_cm_mra()
2957 cm_id_priv->id.state); in ib_send_cm_mra()
2963 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_mra()
2967 cm_format_mra((struct cm_mra_msg *) msg->mad, cm_id_priv, in ib_send_cm_mra()
2977 cm_id_priv->service_timeout = service_timeout; in ib_send_cm_mra()
2978 cm_set_private_data(cm_id_priv, data, private_data_len); in ib_send_cm_mra()
2979 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_mra()
2982 error1: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_mra()
2986 error2: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_mra()
3009 struct cm_id_private *cm_id_priv; in cm_mra_handler() local
3014 cm_id_priv = cm_acquire_mraed_id(mra_msg); in cm_mra_handler()
3015 if (!cm_id_priv) in cm_mra_handler()
3022 cm_convert_to_ms(cm_id_priv->av.timeout); in cm_mra_handler()
3024 spin_lock_irq(&cm_id_priv->lock); in cm_mra_handler()
3025 switch (cm_id_priv->id.state) { in cm_mra_handler()
3028 ib_modify_mad(cm_id_priv->av.port->mad_agent, in cm_mra_handler()
3029 cm_id_priv->msg, timeout)) in cm_mra_handler()
3031 cm_id_priv->id.state = IB_CM_MRA_REQ_RCVD; in cm_mra_handler()
3035 ib_modify_mad(cm_id_priv->av.port->mad_agent, in cm_mra_handler()
3036 cm_id_priv->msg, timeout)) in cm_mra_handler()
3038 cm_id_priv->id.state = IB_CM_MRA_REP_RCVD; in cm_mra_handler()
3042 cm_id_priv->id.lap_state != IB_CM_LAP_SENT || in cm_mra_handler()
3043 ib_modify_mad(cm_id_priv->av.port->mad_agent, in cm_mra_handler()
3044 cm_id_priv->msg, timeout)) { in cm_mra_handler()
3045 if (cm_id_priv->id.lap_state == IB_CM_MRA_LAP_RCVD) in cm_mra_handler()
3051 cm_id_priv->id.lap_state = IB_CM_MRA_LAP_RCVD; in cm_mra_handler()
3060 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_mra_handler()
3061 cm_id_priv->id.state); in cm_mra_handler()
3065 cm_id_priv->msg->context[1] = (void *) (unsigned long) in cm_mra_handler()
3066 cm_id_priv->id.state; in cm_mra_handler()
3067 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_mra_handler()
3069 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_mra_handler()
3070 spin_unlock_irq(&cm_id_priv->lock); in cm_mra_handler()
3073 cm_process_work(cm_id_priv, work); in cm_mra_handler()
3075 cm_deref_id(cm_id_priv); in cm_mra_handler()
3078 spin_unlock_irq(&cm_id_priv->lock); in cm_mra_handler()
3079 cm_deref_id(cm_id_priv); in cm_mra_handler()
3084 struct cm_id_private *cm_id_priv, in cm_format_lap() argument
3095 cm_form_tid(cm_id_priv)); in cm_format_lap()
3096 lap_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_lap()
3097 lap_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_lap()
3098 cm_lap_set_remote_qpn(lap_msg, cm_id_priv->remote_qpn); in cm_format_lap()
3120 cm_ack_timeout(cm_id_priv->av.port->cm_dev->ack_delay, in cm_format_lap()
3132 struct cm_id_private *cm_id_priv; in ib_send_cm_lap() local
3140 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_lap()
3141 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_lap()
3149 ret = cm_init_av_by_path(alternate_path, NULL, &cm_id_priv->alt_av, in ib_send_cm_lap()
3150 cm_id_priv); in ib_send_cm_lap()
3153 cm_id_priv->alt_av.timeout = in ib_send_cm_lap()
3154 cm_ack_timeout(cm_id_priv->target_ack_delay, in ib_send_cm_lap()
3155 cm_id_priv->alt_av.timeout - 1); in ib_send_cm_lap()
3157 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_lap()
3161 cm_format_lap((struct cm_lap_msg *) msg->mad, cm_id_priv, in ib_send_cm_lap()
3163 msg->timeout_ms = cm_id_priv->timeout_ms; in ib_send_cm_lap()
3168 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_lap()
3174 cm_id_priv->msg = msg; in ib_send_cm_lap()
3176 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_lap()
3198 static void cm_format_path_from_lap(struct cm_id_private *cm_id_priv, in cm_format_path_from_lap() argument
3208 path->pkey = cm_id_priv->pkey; in cm_format_path_from_lap()
3211 path->mtu = cm_id_priv->path_mtu; in cm_format_path_from_lap()
3222 struct cm_id_private *cm_id_priv; in cm_lap_handler() local
3237 cm_id_priv = cm_acquire_id(lap_msg->remote_comm_id, in cm_lap_handler()
3239 if (!cm_id_priv) in cm_lap_handler()
3249 cm_format_path_from_lap(cm_id_priv, param->alternate_path, lap_msg); in cm_lap_handler()
3252 spin_lock_irq(&cm_id_priv->lock); in cm_lap_handler()
3253 if (cm_id_priv->id.state != IB_CM_ESTABLISHED) in cm_lap_handler()
3256 switch (cm_id_priv->id.lap_state) { in cm_lap_handler()
3267 cm_format_mra((struct cm_mra_msg *) msg->mad, cm_id_priv, in cm_lap_handler()
3269 cm_id_priv->service_timeout, in cm_lap_handler()
3270 cm_id_priv->private_data, in cm_lap_handler()
3271 cm_id_priv->private_data_len); in cm_lap_handler()
3272 spin_unlock_irq(&cm_id_priv->lock); in cm_lap_handler()
3288 &cm_id_priv->av); in cm_lap_handler()
3293 &cm_id_priv->alt_av, cm_id_priv); in cm_lap_handler()
3297 cm_id_priv->id.lap_state = IB_CM_LAP_RCVD; in cm_lap_handler()
3298 cm_id_priv->tid = lap_msg->hdr.tid; in cm_lap_handler()
3299 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_lap_handler()
3301 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_lap_handler()
3302 spin_unlock_irq(&cm_id_priv->lock); in cm_lap_handler()
3305 cm_process_work(cm_id_priv, work); in cm_lap_handler()
3307 cm_deref_id(cm_id_priv); in cm_lap_handler()
3310 unlock: spin_unlock_irq(&cm_id_priv->lock); in cm_lap_handler()
3311 deref: cm_deref_id(cm_id_priv); in cm_lap_handler()
3316 struct cm_id_private *cm_id_priv, in cm_format_apr() argument
3323 cm_format_mad_hdr(&apr_msg->hdr, CM_APR_ATTR_ID, cm_id_priv->tid); in cm_format_apr()
3324 apr_msg->local_comm_id = cm_id_priv->id.local_id; in cm_format_apr()
3325 apr_msg->remote_comm_id = cm_id_priv->id.remote_id; in cm_format_apr()
3344 struct cm_id_private *cm_id_priv; in ib_send_cm_apr() local
3353 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_apr()
3354 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_apr()
3362 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_apr()
3366 cm_format_apr((struct cm_apr_msg *) msg->mad, cm_id_priv, status, in ib_send_cm_apr()
3370 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_apr()
3376 out: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_apr()
3383 struct cm_id_private *cm_id_priv; in cm_apr_handler() local
3395 cm_id_priv = cm_acquire_id(apr_msg->remote_comm_id, in cm_apr_handler()
3397 if (!cm_id_priv) in cm_apr_handler()
3405 spin_lock_irq(&cm_id_priv->lock); in cm_apr_handler()
3406 if (cm_id_priv->id.state != IB_CM_ESTABLISHED || in cm_apr_handler()
3407 (cm_id_priv->id.lap_state != IB_CM_LAP_SENT && in cm_apr_handler()
3408 cm_id_priv->id.lap_state != IB_CM_MRA_LAP_RCVD)) { in cm_apr_handler()
3409 spin_unlock_irq(&cm_id_priv->lock); in cm_apr_handler()
3412 cm_id_priv->id.lap_state = IB_CM_LAP_IDLE; in cm_apr_handler()
3413 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_apr_handler()
3414 cm_id_priv->msg = NULL; in cm_apr_handler()
3416 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_apr_handler()
3418 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_apr_handler()
3419 spin_unlock_irq(&cm_id_priv->lock); in cm_apr_handler()
3422 cm_process_work(cm_id_priv, work); in cm_apr_handler()
3424 cm_deref_id(cm_id_priv); in cm_apr_handler()
3427 cm_deref_id(cm_id_priv); in cm_apr_handler()
3434 struct cm_id_private *cm_id_priv; in cm_timewait_handler() local
3442 cm_id_priv = cm_acquire_id(timewait_info->work.local_id, in cm_timewait_handler()
3444 if (!cm_id_priv) in cm_timewait_handler()
3447 spin_lock_irq(&cm_id_priv->lock); in cm_timewait_handler()
3448 if (cm_id_priv->id.state != IB_CM_TIMEWAIT || in cm_timewait_handler()
3449 cm_id_priv->remote_qpn != timewait_info->remote_qpn) { in cm_timewait_handler()
3450 spin_unlock_irq(&cm_id_priv->lock); in cm_timewait_handler()
3453 cm_id_priv->id.state = IB_CM_IDLE; in cm_timewait_handler()
3454 ret = atomic_inc_and_test(&cm_id_priv->work_count); in cm_timewait_handler()
3456 list_add_tail(&work->list, &cm_id_priv->work_list); in cm_timewait_handler()
3457 spin_unlock_irq(&cm_id_priv->lock); in cm_timewait_handler()
3460 cm_process_work(cm_id_priv, work); in cm_timewait_handler()
3462 cm_deref_id(cm_id_priv); in cm_timewait_handler()
3465 cm_deref_id(cm_id_priv); in cm_timewait_handler()
3470 struct cm_id_private *cm_id_priv, in cm_format_sidr_req() argument
3474 cm_form_tid(cm_id_priv)); in cm_format_sidr_req()
3475 sidr_req_msg->request_id = cm_id_priv->id.local_id; in cm_format_sidr_req()
3487 struct cm_id_private *cm_id_priv; in ib_send_cm_sidr_req() local
3496 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_req()
3498 &cm_id_priv->av, in ib_send_cm_sidr_req()
3499 cm_id_priv); in ib_send_cm_sidr_req()
3505 cm_id_priv->timeout_ms = param->timeout_ms; in ib_send_cm_sidr_req()
3506 cm_id_priv->max_cm_retries = param->max_cm_retries; in ib_send_cm_sidr_req()
3507 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_sidr_req()
3511 cm_format_sidr_req((struct cm_sidr_req_msg *) msg->mad, cm_id_priv, in ib_send_cm_sidr_req()
3513 msg->timeout_ms = cm_id_priv->timeout_ms; in ib_send_cm_sidr_req()
3516 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_sidr_req()
3523 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_sidr_req()
3528 cm_id_priv->msg = msg; in ib_send_cm_sidr_req()
3529 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_sidr_req()
3557 struct cm_id_private *cm_id_priv, *cur_cm_id_priv; in cm_sidr_req_handler() local
3565 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_sidr_req_handler()
3571 cm_id_priv->av.dgid.global.subnet_prefix = cpu_to_be64(wc->slid); in cm_sidr_req_handler()
3572 cm_id_priv->av.dgid.global.interface_id = 0; in cm_sidr_req_handler()
3575 &cm_id_priv->av); in cm_sidr_req_handler()
3579 cm_id_priv->id.remote_id = sidr_req_msg->request_id; in cm_sidr_req_handler()
3580 cm_id_priv->tid = sidr_req_msg->hdr.tid; in cm_sidr_req_handler()
3581 atomic_inc(&cm_id_priv->work_count); in cm_sidr_req_handler()
3584 cur_cm_id_priv = cm_insert_remote_sidr(cm_id_priv); in cm_sidr_req_handler()
3591 cm_id_priv->id.state = IB_CM_SIDR_REQ_RCVD; in cm_sidr_req_handler()
3596 cm_reject_sidr_req(cm_id_priv, IB_SIDR_UNSUPPORTED); in cm_sidr_req_handler()
3600 atomic_inc(&cm_id_priv->refcount); in cm_sidr_req_handler()
3603 cm_id_priv->id.cm_handler = cur_cm_id_priv->id.cm_handler; in cm_sidr_req_handler()
3604 cm_id_priv->id.context = cur_cm_id_priv->id.context; in cm_sidr_req_handler()
3605 cm_id_priv->id.service_id = sidr_req_msg->service_id; in cm_sidr_req_handler()
3606 cm_id_priv->id.service_mask = ~cpu_to_be64(0); in cm_sidr_req_handler()
3608 cm_format_sidr_req_event(work, cm_id_priv, &cur_cm_id_priv->id); in cm_sidr_req_handler()
3609 cm_process_work(cm_id_priv, work); in cm_sidr_req_handler()
3613 ib_destroy_cm_id(&cm_id_priv->id); in cm_sidr_req_handler()
3618 struct cm_id_private *cm_id_priv, in cm_format_sidr_rep() argument
3622 cm_id_priv->tid); in cm_format_sidr_rep()
3623 sidr_rep_msg->request_id = cm_id_priv->id.remote_id; in cm_format_sidr_rep()
3626 sidr_rep_msg->service_id = cm_id_priv->id.service_id; in cm_format_sidr_rep()
3640 struct cm_id_private *cm_id_priv; in ib_send_cm_sidr_rep() local
3650 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_rep()
3651 spin_lock_irqsave(&cm_id_priv->lock, flags); in ib_send_cm_sidr_rep()
3657 ret = cm_alloc_msg(cm_id_priv, &msg); in ib_send_cm_sidr_rep()
3661 cm_format_sidr_rep((struct cm_sidr_rep_msg *) msg->mad, cm_id_priv, in ib_send_cm_sidr_rep()
3665 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_sidr_rep()
3670 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_sidr_rep()
3673 if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) { in ib_send_cm_sidr_rep()
3674 rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table); in ib_send_cm_sidr_rep()
3675 RB_CLEAR_NODE(&cm_id_priv->sidr_id_node); in ib_send_cm_sidr_rep()
3680 error: spin_unlock_irqrestore(&cm_id_priv->lock, flags); in ib_send_cm_sidr_rep()
3686 const struct cm_id_private *cm_id_priv) in cm_format_sidr_rep_event() argument
3699 param->sgid_attr = cm_id_priv->av.ah_attr.grh.sgid_attr; in cm_format_sidr_rep_event()
3706 struct cm_id_private *cm_id_priv; in cm_sidr_rep_handler() local
3710 cm_id_priv = cm_acquire_id(sidr_rep_msg->request_id, 0); in cm_sidr_rep_handler()
3711 if (!cm_id_priv) in cm_sidr_rep_handler()
3714 spin_lock_irq(&cm_id_priv->lock); in cm_sidr_rep_handler()
3715 if (cm_id_priv->id.state != IB_CM_SIDR_REQ_SENT) { in cm_sidr_rep_handler()
3716 spin_unlock_irq(&cm_id_priv->lock); in cm_sidr_rep_handler()
3719 cm_id_priv->id.state = IB_CM_IDLE; in cm_sidr_rep_handler()
3720 ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); in cm_sidr_rep_handler()
3721 spin_unlock_irq(&cm_id_priv->lock); in cm_sidr_rep_handler()
3723 cm_format_sidr_rep_event(work, cm_id_priv); in cm_sidr_rep_handler()
3724 cm_process_work(cm_id_priv, work); in cm_sidr_rep_handler()
3727 cm_deref_id(cm_id_priv); in cm_sidr_rep_handler()
3734 struct cm_id_private *cm_id_priv; in cm_process_send_error() local
3740 cm_id_priv = msg->context[0]; in cm_process_send_error()
3743 spin_lock_irq(&cm_id_priv->lock); in cm_process_send_error()
3745 if (msg != cm_id_priv->msg || state != cm_id_priv->id.state) in cm_process_send_error()
3753 cm_reset_to_idle(cm_id_priv); in cm_process_send_error()
3758 cm_reset_to_idle(cm_id_priv); in cm_process_send_error()
3762 cm_enter_timewait(cm_id_priv); in cm_process_send_error()
3766 cm_id_priv->id.state = IB_CM_IDLE; in cm_process_send_error()
3772 spin_unlock_irq(&cm_id_priv->lock); in cm_process_send_error()
3776 ret = cm_id_priv->id.cm_handler(&cm_id_priv->id, &cm_event); in cm_process_send_error()
3779 ib_destroy_cm_id(&cm_id_priv->id); in cm_process_send_error()
3782 spin_unlock_irq(&cm_id_priv->lock); in cm_process_send_error()
3882 struct cm_id_private *cm_id_priv; in cm_establish() local
3896 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_establish()
3897 spin_lock_irqsave(&cm_id_priv->lock, flags); in cm_establish()
3913 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in cm_establish()
3948 struct cm_id_private *cm_id_priv; in cm_migrate() local
3954 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_migrate()
3955 spin_lock_irqsave(&cm_id_priv->lock, flags); in cm_migrate()
3961 tmp_av = cm_id_priv->av; in cm_migrate()
3962 cm_id_priv->av = cm_id_priv->alt_av; in cm_migrate()
3963 cm_id_priv->alt_av = tmp_av; in cm_migrate()
3965 tmp_send_port_not_ready = cm_id_priv->prim_send_port_not_ready; in cm_migrate()
3966 cm_id_priv->prim_send_port_not_ready = cm_id_priv->altr_send_port_not_ready; in cm_migrate()
3967 cm_id_priv->altr_send_port_not_ready = tmp_send_port_not_ready; in cm_migrate()
3970 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in cm_migrate()
4077 static int cm_init_qp_init_attr(struct cm_id_private *cm_id_priv, in cm_init_qp_init_attr() argument
4084 spin_lock_irqsave(&cm_id_priv->lock, flags); in cm_init_qp_init_attr()
4085 switch (cm_id_priv->id.state) { in cm_init_qp_init_attr()
4098 if (cm_id_priv->responder_resources) in cm_init_qp_init_attr()
4101 qp_attr->pkey_index = cm_id_priv->av.pkey_index; in cm_init_qp_init_attr()
4102 qp_attr->port_num = cm_id_priv->av.port->port_num; in cm_init_qp_init_attr()
4107 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_init_qp_init_attr()
4108 cm_id_priv->id.state); in cm_init_qp_init_attr()
4112 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in cm_init_qp_init_attr()
4116 static int cm_init_qp_rtr_attr(struct cm_id_private *cm_id_priv, in cm_init_qp_rtr_attr() argument
4123 spin_lock_irqsave(&cm_id_priv->lock, flags); in cm_init_qp_rtr_attr()
4124 switch (cm_id_priv->id.state) { in cm_init_qp_rtr_attr()
4134 qp_attr->ah_attr = cm_id_priv->av.ah_attr; in cm_init_qp_rtr_attr()
4135 qp_attr->path_mtu = cm_id_priv->path_mtu; in cm_init_qp_rtr_attr()
4136 qp_attr->dest_qp_num = be32_to_cpu(cm_id_priv->remote_qpn); in cm_init_qp_rtr_attr()
4137 qp_attr->rq_psn = be32_to_cpu(cm_id_priv->rq_psn); in cm_init_qp_rtr_attr()
4138 if (cm_id_priv->qp_type == IB_QPT_RC || in cm_init_qp_rtr_attr()
4139 cm_id_priv->qp_type == IB_QPT_XRC_TGT) { in cm_init_qp_rtr_attr()
4143 cm_id_priv->responder_resources; in cm_init_qp_rtr_attr()
4146 if (rdma_ah_get_dlid(&cm_id_priv->alt_av.ah_attr)) { in cm_init_qp_rtr_attr()
4148 qp_attr->alt_port_num = cm_id_priv->alt_av.port->port_num; in cm_init_qp_rtr_attr()
4149 qp_attr->alt_pkey_index = cm_id_priv->alt_av.pkey_index; in cm_init_qp_rtr_attr()
4150 qp_attr->alt_timeout = cm_id_priv->alt_av.timeout; in cm_init_qp_rtr_attr()
4151 qp_attr->alt_ah_attr = cm_id_priv->alt_av.ah_attr; in cm_init_qp_rtr_attr()
4157 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_init_qp_rtr_attr()
4158 cm_id_priv->id.state); in cm_init_qp_rtr_attr()
4162 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in cm_init_qp_rtr_attr()
4166 static int cm_init_qp_rts_attr(struct cm_id_private *cm_id_priv, in cm_init_qp_rts_attr() argument
4173 spin_lock_irqsave(&cm_id_priv->lock, flags); in cm_init_qp_rts_attr()
4174 switch (cm_id_priv->id.state) { in cm_init_qp_rts_attr()
4184 if (cm_id_priv->id.lap_state == IB_CM_LAP_UNINIT) { in cm_init_qp_rts_attr()
4186 qp_attr->sq_psn = be32_to_cpu(cm_id_priv->sq_psn); in cm_init_qp_rts_attr()
4187 switch (cm_id_priv->qp_type) { in cm_init_qp_rts_attr()
4192 qp_attr->retry_cnt = cm_id_priv->retry_count; in cm_init_qp_rts_attr()
4193 qp_attr->rnr_retry = cm_id_priv->rnr_retry_count; in cm_init_qp_rts_attr()
4194 qp_attr->max_rd_atomic = cm_id_priv->initiator_depth; in cm_init_qp_rts_attr()
4198 qp_attr->timeout = cm_id_priv->av.timeout; in cm_init_qp_rts_attr()
4203 if (rdma_ah_get_dlid(&cm_id_priv->alt_av.ah_attr)) { in cm_init_qp_rts_attr()
4209 qp_attr->alt_port_num = cm_id_priv->alt_av.port->port_num; in cm_init_qp_rts_attr()
4210 qp_attr->alt_pkey_index = cm_id_priv->alt_av.pkey_index; in cm_init_qp_rts_attr()
4211 qp_attr->alt_timeout = cm_id_priv->alt_av.timeout; in cm_init_qp_rts_attr()
4212 qp_attr->alt_ah_attr = cm_id_priv->alt_av.ah_attr; in cm_init_qp_rts_attr()
4219 __func__, be32_to_cpu(cm_id_priv->id.local_id), in cm_init_qp_rts_attr()
4220 cm_id_priv->id.state); in cm_init_qp_rts_attr()
4224 spin_unlock_irqrestore(&cm_id_priv->lock, flags); in cm_init_qp_rts_attr()
4232 struct cm_id_private *cm_id_priv; in ib_cm_init_qp_attr() local
4235 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_cm_init_qp_attr()
4238 ret = cm_init_qp_init_attr(cm_id_priv, qp_attr, qp_attr_mask); in ib_cm_init_qp_attr()
4241 ret = cm_init_qp_rtr_attr(cm_id_priv, qp_attr, qp_attr_mask); in ib_cm_init_qp_attr()
4244 ret = cm_init_qp_rts_attr(cm_id_priv, qp_attr, qp_attr_mask); in ib_cm_init_qp_attr()
4421 struct cm_id_private *cm_id_priv; in cm_remove_one() local
4448 list_for_each_entry(cm_id_priv, &port->cm_priv_altr_list, altr_list) in cm_remove_one()
4449 cm_id_priv->altr_send_port_not_ready = 1; in cm_remove_one()
4450 list_for_each_entry(cm_id_priv, &port->cm_priv_prim_list, prim_list) in cm_remove_one()
4451 cm_id_priv->prim_send_port_not_ready = 1; in cm_remove_one()