Lines Matching refs:cm_id
808 static void cm_destroy_id(struct ib_cm_id *cm_id, int err) in cm_destroy_id() argument
813 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_destroy_id()
816 switch (cm_id->state) { in cm_destroy_id()
831 cm_id->state = IB_CM_IDLE; in cm_destroy_id()
848 ib_send_cm_rej(cm_id, IB_CM_REJ_TIMEOUT, in cm_destroy_id()
860 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
872 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
879 ib_send_cm_dreq(cm_id, NULL, 0); in cm_destroy_id()
888 ib_send_cm_drep(cm_id, NULL, 0); in cm_destroy_id()
895 cm_free_id(cm_id->local_id); in cm_destroy_id()
904 void ib_destroy_cm_id(struct ib_cm_id *cm_id) in ib_destroy_cm_id() argument
906 cm_destroy_id(cm_id, 0); in ib_destroy_cm_id()
923 static int __ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, in __ib_cm_listen() argument
935 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in __ib_cm_listen()
936 if (cm_id->state != IB_CM_IDLE) in __ib_cm_listen()
939 cm_id->state = IB_CM_LISTEN; in __ib_cm_listen()
943 cm_id->service_id = cpu_to_be64(cm.listen_service_id++); in __ib_cm_listen()
944 cm_id->service_mask = ~cpu_to_be64(0); in __ib_cm_listen()
946 cm_id->service_id = service_id; in __ib_cm_listen()
947 cm_id->service_mask = service_mask; in __ib_cm_listen()
952 cm_id->state = IB_CM_IDLE; in __ib_cm_listen()
959 int ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, __be64 service_mask) in ib_cm_listen() argument
965 ret = __ib_cm_listen(cm_id, service_id, service_mask); in ib_cm_listen()
993 struct ib_cm_id *cm_id; in ib_cm_insert_listen() local
998 cm_id = ib_create_cm_id(device, cm_handler, NULL); in ib_cm_insert_listen()
999 if (IS_ERR(cm_id)) in ib_cm_insert_listen()
1000 return cm_id; in ib_cm_insert_listen()
1010 if (cm_id->cm_handler != cm_handler || cm_id->context) { in ib_cm_insert_listen()
1020 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1021 cm_id = &cm_id_priv->id; in ib_cm_insert_listen()
1022 return cm_id; in ib_cm_insert_listen()
1027 err = __ib_cm_listen(cm_id, service_id, 0); in ib_cm_insert_listen()
1032 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1035 return cm_id; in ib_cm_insert_listen()
1166 int ib_send_cm_req(struct ib_cm_id *cm_id, in ib_send_cm_req() argument
1179 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_req()
1181 if (cm_id->state != IB_CM_IDLE) { in ib_send_cm_req()
1204 cm_id->service_id = param->service_id; in ib_send_cm_req()
1205 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_req()
1237 BUG_ON(cm_id->state != IB_CM_IDLE); in ib_send_cm_req()
1238 cm_id->state = IB_CM_REQ_SENT; in ib_send_cm_req()
1600 struct ib_cm_id *cm_id; in cm_req_handler() local
1607 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_req_handler()
1608 if (IS_ERR(cm_id)) in cm_req_handler()
1609 return PTR_ERR(cm_id); in cm_req_handler()
1611 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_req_handler()
1647 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID, in cm_req_handler()
1655 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_ALT_GID, in cm_req_handler()
1684 ib_destroy_cm_id(cm_id); in cm_req_handler()
1718 int ib_send_cm_rep(struct ib_cm_id *cm_id, in ib_send_cm_rep() argument
1731 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rep()
1733 if (cm_id->state != IB_CM_REQ_RCVD && in ib_send_cm_rep()
1734 cm_id->state != IB_CM_MRA_REQ_SENT) { in ib_send_cm_rep()
1755 cm_id->state = IB_CM_REP_SENT; in ib_send_cm_rep()
1780 int ib_send_cm_rtu(struct ib_cm_id *cm_id, in ib_send_cm_rtu() argument
1797 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rtu()
1799 if (cm_id->state != IB_CM_REP_RCVD && in ib_send_cm_rtu()
1800 cm_id->state != IB_CM_MRA_REP_SENT) { in ib_send_cm_rtu()
1820 cm_id->state = IB_CM_ESTABLISHED; in ib_send_cm_rtu()
2069 int ib_send_cm_dreq(struct ib_cm_id *cm_id, in ib_send_cm_dreq() argument
2081 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_dreq()
2083 if (cm_id->state != IB_CM_ESTABLISHED) { in ib_send_cm_dreq()
2088 if (cm_id->lap_state == IB_CM_LAP_SENT || in ib_send_cm_dreq()
2089 cm_id->lap_state == IB_CM_MRA_LAP_RCVD) in ib_send_cm_dreq()
2111 cm_id->state = IB_CM_DREQ_SENT; in ib_send_cm_dreq()
2131 int ib_send_cm_drep(struct ib_cm_id *cm_id, in ib_send_cm_drep() argument
2148 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_drep()
2150 if (cm_id->state != IB_CM_DREQ_RCVD) { in ib_send_cm_drep()
2316 int ib_send_cm_rej(struct ib_cm_id *cm_id, in ib_send_cm_rej() argument
2332 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rej()
2335 switch (cm_id->state) { in ib_send_cm_rej()
2490 int ib_send_cm_mra(struct ib_cm_id *cm_id, in ib_send_cm_mra() argument
2511 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_mra()
2517 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2522 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2526 if (cm_id->lap_state == IB_CM_LAP_RCVD) { in ib_send_cm_mra()
2527 cm_state = cm_id->state; in ib_send_cm_mra()
2550 cm_id->state = cm_state; in ib_send_cm_mra()
2551 cm_id->lap_state = lap_state; in ib_send_cm_mra()
2686 int ib_send_cm_lap(struct ib_cm_id *cm_id, in ib_send_cm_lap() argument
2699 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_lap()
2701 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_lap()
2702 (cm_id->lap_state != IB_CM_LAP_UNINIT && in ib_send_cm_lap()
2703 cm_id->lap_state != IB_CM_LAP_IDLE)) { in ib_send_cm_lap()
2731 cm_id->lap_state = IB_CM_LAP_SENT; in ib_send_cm_lap()
2859 int ib_send_cm_apr(struct ib_cm_id *cm_id, in ib_send_cm_apr() argument
2875 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_apr()
2877 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_apr()
2878 (cm_id->lap_state != IB_CM_LAP_RCVD && in ib_send_cm_apr()
2879 cm_id->lap_state != IB_CM_MRA_LAP_SENT)) { in ib_send_cm_apr()
2897 cm_id->lap_state = IB_CM_LAP_IDLE; in ib_send_cm_apr()
2999 int ib_send_cm_sidr_req(struct ib_cm_id *cm_id, in ib_send_cm_sidr_req() argument
3011 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_req()
3016 cm_id->service_id = param->service_id; in ib_send_cm_sidr_req()
3017 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_sidr_req()
3030 if (cm_id->state == IB_CM_IDLE) in ib_send_cm_sidr_req()
3040 cm_id->state = IB_CM_SIDR_REQ_SENT; in ib_send_cm_sidr_req()
3067 struct ib_cm_id *cm_id; in cm_sidr_req_handler() local
3072 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_sidr_req_handler()
3073 if (IS_ERR(cm_id)) in cm_sidr_req_handler()
3074 return PTR_ERR(cm_id); in cm_sidr_req_handler()
3075 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_sidr_req_handler()
3099 cur_cm_id_priv = cm_find_listen(cm_id->device, in cm_sidr_req_handler()
3144 int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, in ib_send_cm_sidr_rep() argument
3157 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_rep()
3159 if (cm_id->state != IB_CM_SIDR_REQ_RCVD) { in ib_send_cm_sidr_rep()
3176 cm_id->state = IB_CM_IDLE; in ib_send_cm_sidr_rep()
3382 static int cm_establish(struct ib_cm_id *cm_id) in cm_establish() argument
3390 cm_dev = ib_get_client_data(cm_id->device, &cm_client); in cm_establish()
3398 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_establish()
3400 switch (cm_id->state) in cm_establish()
3404 cm_id->state = IB_CM_ESTABLISHED; in cm_establish()
3427 work->local_id = cm_id->local_id; in cm_establish()
3428 work->remote_id = cm_id->remote_id; in cm_establish()
3446 static int cm_migrate(struct ib_cm_id *cm_id) in cm_migrate() argument
3452 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_migrate()
3454 if (cm_id->state == IB_CM_ESTABLISHED && in cm_migrate()
3455 (cm_id->lap_state == IB_CM_LAP_UNINIT || in cm_migrate()
3456 cm_id->lap_state == IB_CM_LAP_IDLE)) { in cm_migrate()
3457 cm_id->lap_state = IB_CM_LAP_IDLE; in cm_migrate()
3466 int ib_cm_notify(struct ib_cm_id *cm_id, enum ib_event_type event) in ib_cm_notify() argument
3472 ret = cm_establish(cm_id); in ib_cm_notify()
3475 ret = cm_migrate(cm_id); in ib_cm_notify()
3708 int ib_cm_init_qp_attr(struct ib_cm_id *cm_id, in ib_cm_init_qp_attr() argument
3715 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_cm_init_qp_attr()