Lines Matching refs:cm_id
97 struct iwcm_id_private *cm_id; member
155 list_add(&work->free_list, &work->cm_id->work_free_list); in put_work()
179 work->cm_id = cm_id_priv; in alloc_work_entries()
223 static void add_ref(struct iw_cm_id *cm_id) in add_ref() argument
226 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in add_ref()
230 static void rem_ref(struct iw_cm_id *cm_id) in rem_ref() argument
234 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in rem_ref()
239 static int cm_event_handler(struct iw_cm_id *cm_id, struct iw_cm_event *event);
306 int iw_cm_disconnect(struct iw_cm_id *cm_id, int abrupt) in iw_cm_disconnect() argument
313 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_disconnect()
373 static void destroy_cm_id(struct iw_cm_id *cm_id) in destroy_cm_id() argument
379 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in destroy_cm_id()
402 cm_id->device->ops.iw_destroy_listen(cm_id); in destroy_cm_id()
425 cm_id->device->ops.iw_reject(cm_id, NULL, 0); in destroy_cm_id()
438 if (cm_id->mapped) { in destroy_cm_id()
439 iwpm_remove_mapinfo(&cm_id->local_addr, &cm_id->m_local_addr); in destroy_cm_id()
440 iwpm_remove_mapping(&cm_id->local_addr, RDMA_NL_IWCM); in destroy_cm_id()
452 void iw_destroy_cm_id(struct iw_cm_id *cm_id) in iw_destroy_cm_id() argument
454 destroy_cm_id(cm_id); in iw_destroy_cm_id()
507 static int iw_cm_map(struct iw_cm_id *cm_id, bool active) in iw_cm_map() argument
509 const char *devname = dev_name(&cm_id->device->dev); in iw_cm_map()
510 const char *ifname = cm_id->device->iw_ifname; in iw_cm_map()
519 cm_id->m_local_addr = cm_id->local_addr; in iw_cm_map()
520 cm_id->m_remote_addr = cm_id->remote_addr; in iw_cm_map()
529 cm_id->mapped = true; in iw_cm_map()
530 pm_msg.loc_addr = cm_id->local_addr; in iw_cm_map()
531 pm_msg.rem_addr = cm_id->remote_addr; in iw_cm_map()
532 pm_msg.flags = (cm_id->device->iw_driver_flags & IW_F_NO_PORT_MAP) ? in iw_cm_map()
541 cm_id->m_local_addr = pm_msg.mapped_loc_addr; in iw_cm_map()
543 cm_id->m_remote_addr = pm_msg.mapped_rem_addr; in iw_cm_map()
545 &cm_id->remote_addr, in iw_cm_map()
546 &cm_id->m_remote_addr); in iw_cm_map()
550 return iwpm_create_mapinfo(&cm_id->local_addr, in iw_cm_map()
551 &cm_id->m_local_addr, in iw_cm_map()
561 int iw_cm_listen(struct iw_cm_id *cm_id, int backlog) in iw_cm_listen() argument
567 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_listen()
581 ret = iw_cm_map(cm_id, false); in iw_cm_listen()
583 ret = cm_id->device->ops.iw_create_listen(cm_id, in iw_cm_listen()
603 int iw_cm_reject(struct iw_cm_id *cm_id, in iw_cm_reject() argument
611 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_reject()
624 ret = cm_id->device->ops.iw_reject(cm_id, private_data, in iw_cm_reject()
641 int iw_cm_accept(struct iw_cm_id *cm_id, in iw_cm_accept() argument
649 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_accept()
660 qp = cm_id->device->ops.iw_get_qp(cm_id->device, iw_param->qpn); in iw_cm_accept()
667 cm_id->device->ops.iw_add_ref(qp); in iw_cm_accept()
671 ret = cm_id->device->ops.iw_accept(cm_id, iw_param); in iw_cm_accept()
681 cm_id->device->ops.iw_rem_ref(qp); in iw_cm_accept()
697 int iw_cm_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *iw_param) in iw_cm_connect() argument
704 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_connect()
719 qp = cm_id->device->ops.iw_get_qp(cm_id->device, iw_param->qpn); in iw_cm_connect()
724 cm_id->device->ops.iw_add_ref(qp); in iw_cm_connect()
729 ret = iw_cm_map(cm_id, true); in iw_cm_connect()
731 ret = cm_id->device->ops.iw_connect(cm_id, iw_param); in iw_cm_connect()
742 cm_id->device->ops.iw_rem_ref(qp); in iw_cm_connect()
768 struct iw_cm_id *cm_id; in cm_conn_req_handler() local
778 cm_id = iw_create_cm_id(listen_id_priv->id.device, in cm_conn_req_handler()
782 if (IS_ERR(cm_id)) in cm_conn_req_handler()
785 cm_id->provider_data = iw_event->provider_data; in cm_conn_req_handler()
786 cm_id->m_local_addr = iw_event->local_addr; in cm_conn_req_handler()
787 cm_id->m_remote_addr = iw_event->remote_addr; in cm_conn_req_handler()
788 cm_id->local_addr = listen_id_priv->id.local_addr; in cm_conn_req_handler()
792 &cm_id->remote_addr, in cm_conn_req_handler()
795 cm_id->remote_addr = iw_event->remote_addr; in cm_conn_req_handler()
799 &cm_id->local_addr); in cm_conn_req_handler()
800 iw_event->local_addr = cm_id->local_addr; in cm_conn_req_handler()
801 iw_event->remote_addr = cm_id->remote_addr; in cm_conn_req_handler()
804 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in cm_conn_req_handler()
814 iw_cm_reject(cm_id, NULL, 0); in cm_conn_req_handler()
815 iw_destroy_cm_id(cm_id); in cm_conn_req_handler()
822 iw_cm_reject(cm_id, NULL, 0); in cm_conn_req_handler()
823 iw_destroy_cm_id(cm_id); in cm_conn_req_handler()
828 ret = cm_id->cm_handler(cm_id, iw_event); in cm_conn_req_handler()
830 iw_cm_reject(cm_id, NULL, 0); in cm_conn_req_handler()
831 iw_destroy_cm_id(cm_id); in cm_conn_req_handler()
1019 struct iwcm_id_private *cm_id_priv = work->cm_id; in cm_work_handler()
1065 static int cm_event_handler(struct iw_cm_id *cm_id, in cm_event_handler() argument
1073 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in cm_event_handler()
1083 work->cm_id = cm_id_priv; in cm_event_handler()
1157 int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, in iw_cm_init_qp_attr() argument
1164 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); in iw_cm_init_qp_attr()