Lines Matching refs:cm_id

1016 static void cm_destroy_id(struct ib_cm_id *cm_id, int err)  in cm_destroy_id()  argument
1021 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_destroy_id()
1024 switch (cm_id->state) { in cm_destroy_id()
1039 cm_id->state = IB_CM_IDLE; in cm_destroy_id()
1056 ib_send_cm_rej(cm_id, IB_CM_REJ_TIMEOUT, in cm_destroy_id()
1068 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
1080 ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, in cm_destroy_id()
1087 ib_send_cm_dreq(cm_id, NULL, 0); in cm_destroy_id()
1096 ib_send_cm_drep(cm_id, NULL, 0); in cm_destroy_id()
1112 cm_free_id(cm_id->local_id); in cm_destroy_id()
1124 void ib_destroy_cm_id(struct ib_cm_id *cm_id) in ib_destroy_cm_id() argument
1126 cm_destroy_id(cm_id, 0); in ib_destroy_cm_id()
1143 static int __ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, in __ib_cm_listen() argument
1155 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in __ib_cm_listen()
1156 if (cm_id->state != IB_CM_IDLE) in __ib_cm_listen()
1159 cm_id->state = IB_CM_LISTEN; in __ib_cm_listen()
1163 cm_id->service_id = cpu_to_be64(cm.listen_service_id++); in __ib_cm_listen()
1164 cm_id->service_mask = ~cpu_to_be64(0); in __ib_cm_listen()
1166 cm_id->service_id = service_id; in __ib_cm_listen()
1167 cm_id->service_mask = service_mask; in __ib_cm_listen()
1172 cm_id->state = IB_CM_IDLE; in __ib_cm_listen()
1179 int ib_cm_listen(struct ib_cm_id *cm_id, __be64 service_id, __be64 service_mask) in ib_cm_listen() argument
1185 ret = __ib_cm_listen(cm_id, service_id, service_mask); in ib_cm_listen()
1213 struct ib_cm_id *cm_id; in ib_cm_insert_listen() local
1218 cm_id = ib_create_cm_id(device, cm_handler, NULL); in ib_cm_insert_listen()
1219 if (IS_ERR(cm_id)) in ib_cm_insert_listen()
1220 return cm_id; in ib_cm_insert_listen()
1230 if (cm_id->cm_handler != cm_handler || cm_id->context) { in ib_cm_insert_listen()
1240 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1241 cm_id = &cm_id_priv->id; in ib_cm_insert_listen()
1242 return cm_id; in ib_cm_insert_listen()
1247 err = __ib_cm_listen(cm_id, service_id, 0); in ib_cm_insert_listen()
1252 ib_destroy_cm_id(cm_id); in ib_cm_insert_listen()
1255 return cm_id; in ib_cm_insert_listen()
1411 int ib_send_cm_req(struct ib_cm_id *cm_id, in ib_send_cm_req() argument
1424 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_req()
1426 if (cm_id->state != IB_CM_IDLE) { in ib_send_cm_req()
1451 cm_id->service_id = param->service_id; in ib_send_cm_req()
1452 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_req()
1484 BUG_ON(cm_id->state != IB_CM_IDLE); in ib_send_cm_req()
1485 cm_id->state = IB_CM_REQ_SENT; in ib_send_cm_req()
1853 struct ib_cm_id *cm_id; in cm_match_req() local
1883 cm_id = &cur_cm_id_priv->id; in cm_match_req()
1884 ib_send_cm_dreq(cm_id, NULL, 0); in cm_match_req()
1940 struct ib_cm_id *cm_id; in cm_req_handler() local
1949 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_req_handler()
1950 if (IS_ERR(cm_id)) in cm_req_handler()
1951 return PTR_ERR(cm_id); in cm_req_handler()
1953 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_req_handler()
1973 be32_to_cpu(cm_id->local_id)); in cm_req_handler()
2018 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID, in cm_req_handler()
2021 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_GID, in cm_req_handler()
2031 ib_send_cm_rej(cm_id, IB_CM_REJ_INVALID_ALT_GID, in cm_req_handler()
2062 ib_destroy_cm_id(cm_id); in cm_req_handler()
2096 int ib_send_cm_rep(struct ib_cm_id *cm_id, in ib_send_cm_rep() argument
2109 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rep()
2111 if (cm_id->state != IB_CM_REQ_RCVD && in ib_send_cm_rep()
2112 cm_id->state != IB_CM_MRA_REQ_SENT) { in ib_send_cm_rep()
2114 be32_to_cpu(cm_id_priv->id.local_id), cm_id->state); in ib_send_cm_rep()
2135 cm_id->state = IB_CM_REP_SENT; in ib_send_cm_rep()
2160 int ib_send_cm_rtu(struct ib_cm_id *cm_id, in ib_send_cm_rtu() argument
2177 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rtu()
2179 if (cm_id->state != IB_CM_REP_RCVD && in ib_send_cm_rtu()
2180 cm_id->state != IB_CM_MRA_REP_SENT) { in ib_send_cm_rtu()
2182 be32_to_cpu(cm_id->local_id), cm_id->state); in ib_send_cm_rtu()
2202 cm_id->state = IB_CM_ESTABLISHED; in ib_send_cm_rtu()
2283 struct ib_cm_id *cm_id; in cm_rep_handler() local
2346 cm_id = &cur_cm_id_priv->id; in cm_rep_handler()
2347 ib_send_cm_dreq(cm_id, NULL, 0); in cm_rep_handler()
2476 int ib_send_cm_dreq(struct ib_cm_id *cm_id, in ib_send_cm_dreq() argument
2488 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_dreq()
2490 if (cm_id->state != IB_CM_ESTABLISHED) { in ib_send_cm_dreq()
2492 be32_to_cpu(cm_id->local_id), cm_id->state); in ib_send_cm_dreq()
2497 if (cm_id->lap_state == IB_CM_LAP_SENT || in ib_send_cm_dreq()
2498 cm_id->lap_state == IB_CM_MRA_LAP_RCVD) in ib_send_cm_dreq()
2520 cm_id->state = IB_CM_DREQ_SENT; in ib_send_cm_dreq()
2540 int ib_send_cm_drep(struct ib_cm_id *cm_id, in ib_send_cm_drep() argument
2557 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_drep()
2559 if (cm_id->state != IB_CM_DREQ_RCVD) { in ib_send_cm_drep()
2563 __func__, be32_to_cpu(cm_id->local_id), cm_id->state); in ib_send_cm_drep()
2735 int ib_send_cm_rej(struct ib_cm_id *cm_id, in ib_send_cm_rej() argument
2751 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_rej()
2754 switch (cm_id->state) { in ib_send_cm_rej()
2781 be32_to_cpu(cm_id_priv->id.local_id), cm_id->state); in ib_send_cm_rej()
2914 int ib_send_cm_mra(struct ib_cm_id *cm_id, in ib_send_cm_mra() argument
2935 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_mra()
2941 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2946 lap_state = cm_id->lap_state; in ib_send_cm_mra()
2950 if (cm_id->lap_state == IB_CM_LAP_RCVD) { in ib_send_cm_mra()
2951 cm_state = cm_id->state; in ib_send_cm_mra()
2978 cm_id->state = cm_state; in ib_send_cm_mra()
2979 cm_id->lap_state = lap_state; in ib_send_cm_mra()
3130 int ib_send_cm_lap(struct ib_cm_id *cm_id, in ib_send_cm_lap() argument
3143 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_lap()
3145 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_lap()
3146 (cm_id->lap_state != IB_CM_LAP_UNINIT && in ib_send_cm_lap()
3147 cm_id->lap_state != IB_CM_LAP_IDLE)) { in ib_send_cm_lap()
3176 cm_id->lap_state = IB_CM_LAP_SENT; in ib_send_cm_lap()
3337 int ib_send_cm_apr(struct ib_cm_id *cm_id, in ib_send_cm_apr() argument
3353 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_apr()
3355 if (cm_id->state != IB_CM_ESTABLISHED || in ib_send_cm_apr()
3356 (cm_id->lap_state != IB_CM_LAP_RCVD && in ib_send_cm_apr()
3357 cm_id->lap_state != IB_CM_MRA_LAP_SENT)) { in ib_send_cm_apr()
3375 cm_id->lap_state = IB_CM_LAP_IDLE; in ib_send_cm_apr()
3484 int ib_send_cm_sidr_req(struct ib_cm_id *cm_id, in ib_send_cm_sidr_req() argument
3496 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_req()
3503 cm_id->service_id = param->service_id; in ib_send_cm_sidr_req()
3504 cm_id->service_mask = ~cpu_to_be64(0); in ib_send_cm_sidr_req()
3517 if (cm_id->state == IB_CM_IDLE) in ib_send_cm_sidr_req()
3527 cm_id->state = IB_CM_SIDR_REQ_SENT; in ib_send_cm_sidr_req()
3556 struct ib_cm_id *cm_id; in cm_sidr_req_handler() local
3562 cm_id = ib_create_cm_id(work->port->cm_dev->ib_device, NULL, NULL); in cm_sidr_req_handler()
3563 if (IS_ERR(cm_id)) in cm_sidr_req_handler()
3564 return PTR_ERR(cm_id); in cm_sidr_req_handler()
3565 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_sidr_req_handler()
3592 cur_cm_id_priv = cm_find_listen(cm_id->device, in cm_sidr_req_handler()
3637 int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id, in ib_send_cm_sidr_rep() argument
3650 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_send_cm_sidr_rep()
3652 if (cm_id->state != IB_CM_SIDR_REQ_RCVD) { in ib_send_cm_sidr_rep()
3669 cm_id->state = IB_CM_IDLE; in ib_send_cm_sidr_rep()
3880 static int cm_establish(struct ib_cm_id *cm_id) in cm_establish() argument
3888 cm_dev = ib_get_client_data(cm_id->device, &cm_client); in cm_establish()
3896 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_establish()
3898 switch (cm_id->state) in cm_establish()
3902 cm_id->state = IB_CM_ESTABLISHED; in cm_establish()
3909 be32_to_cpu(cm_id->local_id), cm_id->state); in cm_establish()
3927 work->local_id = cm_id->local_id; in cm_establish()
3928 work->remote_id = cm_id->remote_id; in cm_establish()
3946 static int cm_migrate(struct ib_cm_id *cm_id) in cm_migrate() argument
3954 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in cm_migrate()
3956 if (cm_id->state == IB_CM_ESTABLISHED && in cm_migrate()
3957 (cm_id->lap_state == IB_CM_LAP_UNINIT || in cm_migrate()
3958 cm_id->lap_state == IB_CM_LAP_IDLE)) { in cm_migrate()
3959 cm_id->lap_state = IB_CM_LAP_IDLE; in cm_migrate()
3975 int ib_cm_notify(struct ib_cm_id *cm_id, enum ib_event_type event) in ib_cm_notify() argument
3981 ret = cm_establish(cm_id); in ib_cm_notify()
3984 ret = cm_migrate(cm_id); in ib_cm_notify()
4229 int ib_cm_init_qp_attr(struct ib_cm_id *cm_id, in ib_cm_init_qp_attr() argument
4236 cm_id_priv = container_of(cm_id, struct cm_id_private, id); in ib_cm_init_qp_attr()