Lines Matching refs:cm_id
861 static void cm_destroy_id(struct ib_cm_id *cm_id, int err) in cm_destroy_id() argument
866 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_destroy_id()
869 switch (cm_id->state) { in cm_destroy_id()
884 cm_id->state = IB_CM_IDLE; in cm_destroy_id()
901 ib_send_cm_rej(cm_id, IB_CM_REJ_TIMEOUT, in cm_destroy_id()
913 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
925 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
932 ib_send_cm_dreq(cm_id, NULL, 0); in cm_destroy_id()
941 ib_send_cm_drep(cm_id, NULL, 0); in cm_destroy_id()
957 cm_free_id(cm_id->local_id); in cm_destroy_id()
966 void ib_destroy_cm_id(struct ib_cm_id *cm_id) in ib_destroy_cm_id() argument
968 cm_destroy_id(cm_id, 0); in ib_destroy_cm_id()
985 static int __ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, in __ib_cm_listen() argument
997 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in __ib_cm_listen()
998 if (cm_id->state != IB_CM_IDLE) in __ib_cm_listen()
1001 cm_id->state = IB_CM_LISTEN; in __ib_cm_listen()
1005 cm_id->service_id = cpu_to_be64(cm.listen_service_id++); in __ib_cm_listen()
1006 cm_id->service_mask = ~cpu_to_be64(0); in __ib_cm_listen()
1008 cm_id->service_id = service_id; in __ib_cm_listen()
1009 cm_id->service_mask = service_mask; in __ib_cm_listen()
1014 cm_id->state = IB_CM_IDLE; in __ib_cm_listen()
1021 int ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, __be64 service_mask) in ib_cm_listen() argument
1027 ret = __ib_cm_listen(cm_id, service_id, service_mask); in ib_cm_listen()
1055 struct ib_cm_id *cm_id; in ib_cm_insert_listen() local
1060 cm_id = ib_create_cm_id(device, cm_handler, NULL); in ib_cm_insert_listen()
1061 if (IS_ERR(cm_id)) in ib_cm_insert_listen()
1062 return cm_id; in ib_cm_insert_listen()
1072 if (cm_id->cm_handler != cm_handler || cm_id->context) { in ib_cm_insert_listen()
1076 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1083 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1084 cm_id = &cm_id_priv->id; in ib_cm_insert_listen()
1085 return cm_id; in ib_cm_insert_listen()
1090 err = __ib_cm_listen(cm_id, service_id, 0); in ib_cm_insert_listen()
1095 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1098 return cm_id; in ib_cm_insert_listen()
1229 int ib_send_cm_req(struct ib_cm_id *cm_id, in ib_send_cm_req() argument
1242 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_req()
1244 if (cm_id->state != IB_CM_IDLE) { in ib_send_cm_req()
1269 cm_id->service_id = param->service_id; in ib_send_cm_req()
1270 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_req()
1302 BUG_ON(cm_id->state != IB_CM_IDLE); in ib_send_cm_req()
1303 cm_id->state = IB_CM_REQ_SENT; in ib_send_cm_req()
1665 struct ib_cm_id *cm_id; in cm_req_handler() local
1672 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_req_handler()
1673 if (IS_ERR(cm_id)) in cm_req_handler()
1674 return PTR_ERR(cm_id); in cm_req_handler()
1676 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_req_handler()
1714 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID, in cm_req_handler()
1723 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_ALT_GID, in cm_req_handler()
1752 ib_destroy_cm_id(cm_id); in cm_req_handler()
1786 int ib_send_cm_rep(struct ib_cm_id *cm_id, in ib_send_cm_rep() argument
1799 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rep()
1801 if (cm_id->state != IB_CM_REQ_RCVD && in ib_send_cm_rep()
1802 cm_id->state != IB_CM_MRA_REQ_SENT) { in ib_send_cm_rep()
1823 cm_id->state = IB_CM_REP_SENT; in ib_send_cm_rep()
1848 int ib_send_cm_rtu(struct ib_cm_id *cm_id, in ib_send_cm_rtu() argument
1865 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rtu()
1867 if (cm_id->state != IB_CM_REP_RCVD && in ib_send_cm_rtu()
1868 cm_id->state != IB_CM_MRA_REP_SENT) { in ib_send_cm_rtu()
1888 cm_id->state = IB_CM_ESTABLISHED; in ib_send_cm_rtu()
2137 int ib_send_cm_dreq(struct ib_cm_id *cm_id, in ib_send_cm_dreq() argument
2149 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_dreq()
2151 if (cm_id->state != IB_CM_ESTABLISHED) { in ib_send_cm_dreq()
2156 if (cm_id->lap_state == IB_CM_LAP_SENT || in ib_send_cm_dreq()
2157 cm_id->lap_state == IB_CM_MRA_LAP_RCVD) in ib_send_cm_dreq()
2179 cm_id->state = IB_CM_DREQ_SENT; in ib_send_cm_dreq()
2199 int ib_send_cm_drep(struct ib_cm_id *cm_id, in ib_send_cm_drep() argument
2216 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_drep()
2218 if (cm_id->state != IB_CM_DREQ_RCVD) { in ib_send_cm_drep()
2384 int ib_send_cm_rej(struct ib_cm_id *cm_id, in ib_send_cm_rej() argument
2400 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rej()
2403 switch (cm_id->state) { in ib_send_cm_rej()
2558 int ib_send_cm_mra(struct ib_cm_id *cm_id, in ib_send_cm_mra() argument
2579 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_mra()
2585 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2590 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2594 if (cm_id->lap_state == IB_CM_LAP_RCVD) { in ib_send_cm_mra()
2595 cm_state = cm_id->state; in ib_send_cm_mra()
2618 cm_id->state = cm_state; in ib_send_cm_mra()
2619 cm_id->lap_state = lap_state; in ib_send_cm_mra()
2754 int ib_send_cm_lap(struct ib_cm_id *cm_id, in ib_send_cm_lap() argument
2767 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_lap()
2769 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_lap()
2770 (cm_id->lap_state != IB_CM_LAP_UNINIT && in ib_send_cm_lap()
2771 cm_id->lap_state != IB_CM_LAP_IDLE)) { in ib_send_cm_lap()
2800 cm_id->lap_state = IB_CM_LAP_SENT; in ib_send_cm_lap()
2929 int ib_send_cm_apr(struct ib_cm_id *cm_id, in ib_send_cm_apr() argument
2945 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_apr()
2947 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_apr()
2948 (cm_id->lap_state != IB_CM_LAP_RCVD && in ib_send_cm_apr()
2949 cm_id->lap_state != IB_CM_MRA_LAP_SENT)) { in ib_send_cm_apr()
2967 cm_id->lap_state = IB_CM_LAP_IDLE; in ib_send_cm_apr()
3069 int ib_send_cm_sidr_req(struct ib_cm_id *cm_id, in ib_send_cm_sidr_req() argument
3081 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_req()
3086 cm_id->service_id = param->service_id; in ib_send_cm_sidr_req()
3087 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_sidr_req()
3100 if (cm_id->state == IB_CM_IDLE) in ib_send_cm_sidr_req()
3110 cm_id->state = IB_CM_SIDR_REQ_SENT; in ib_send_cm_sidr_req()
3137 struct ib_cm_id *cm_id; in cm_sidr_req_handler() local
3142 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_sidr_req_handler()
3143 if (IS_ERR(cm_id)) in cm_sidr_req_handler()
3144 return PTR_ERR(cm_id); in cm_sidr_req_handler()
3145 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_sidr_req_handler()
3169 cur_cm_id_priv = cm_find_listen(cm_id->device, in cm_sidr_req_handler()
3214 int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, in ib_send_cm_sidr_rep() argument
3227 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_rep()
3229 if (cm_id->state != IB_CM_SIDR_REQ_RCVD) { in ib_send_cm_sidr_rep()
3246 cm_id->state = IB_CM_IDLE; in ib_send_cm_sidr_rep()
3452 static int cm_establish(struct ib_cm_id *cm_id) in cm_establish() argument
3460 cm_dev = ib_get_client_data(cm_id->device, &cm_client); in cm_establish()
3468 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_establish()
3470 switch (cm_id->state) in cm_establish()
3474 cm_id->state = IB_CM_ESTABLISHED; in cm_establish()
3497 work->local_id = cm_id->local_id; in cm_establish()
3498 work->remote_id = cm_id->remote_id; in cm_establish()
3516 static int cm_migrate(struct ib_cm_id *cm_id) in cm_migrate() argument
3524 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_migrate()
3526 if (cm_id->state == IB_CM_ESTABLISHED && in cm_migrate()
3527 (cm_id->lap_state == IB_CM_LAP_UNINIT || in cm_migrate()
3528 cm_id->lap_state == IB_CM_LAP_IDLE)) { in cm_migrate()
3529 cm_id->lap_state = IB_CM_LAP_IDLE; in cm_migrate()
3545 int ib_cm_notify(struct ib_cm_id *cm_id, enum ib_event_type event) in ib_cm_notify() argument
3551 ret = cm_establish(cm_id); in ib_cm_notify()
3554 ret = cm_migrate(cm_id); in ib_cm_notify()
3787 int ib_cm_init_qp_attr(struct ib_cm_id *cm_id, in ib_cm_init_qp_attr() argument
3794 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_cm_init_qp_attr()