Lines Matching refs:iser_conn

75 DEFINE_CLASS(icl_iser, icl_iser_methods, sizeof(struct iser_conn));
89 iser_initialize_headers(struct icl_iser_pdu *pdu, struct iser_conn *iser_conn) in iser_initialize_headers() argument
92 struct iser_device *device = iser_conn->ib_conn.device; in iser_initialize_headers()
130 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_pdu_append_data() local
136 memcpy(iser_conn->login_req_buf, addr, len); in iser_conn_pdu_append_data()
169 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_new_pdu() local
177 iser_pdu->iser_conn = iser_conn; in iser_new_pdu()
245 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_pdu_queue() local
249 if (iser_conn->state != ISER_CONN_UP) in iser_conn_pdu_queue()
252 ret = iser_initialize_headers(iser_pdu, iser_conn); in iser_conn_pdu_queue()
259 ret = iser_send_control(iser_conn, iser_pdu); in iser_conn_pdu_queue()
263 ret = iser_send_command(iser_conn, iser_pdu); in iser_conn_pdu_queue()
272 struct iser_conn *iser_conn; in iser_new_conn() local
277 iser_conn = (struct iser_conn *)kobj_create(&icl_iser_class, M_ICL_ISER, M_WAITOK | M_ZERO); in iser_new_conn()
278 if (!iser_conn) { in iser_new_conn()
284 cv_init(&iser_conn->up_cv, "iser_cv"); in iser_new_conn()
285 sx_init(&iser_conn->state_mutex, "iser_conn_state_mutex"); in iser_new_conn()
286 mtx_init(&iser_conn->ib_conn.beacon.flush_lock, "iser_flush_lock", NULL, MTX_DEF); in iser_new_conn()
287 cv_init(&iser_conn->ib_conn.beacon.flush_cv, "flush_cv"); in iser_new_conn()
288 mtx_init(&iser_conn->ib_conn.lock, "iser_lock", NULL, MTX_DEF); in iser_new_conn()
290 ic = &iser_conn->icl_conn; in iser_new_conn()
303 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_free() local
306 mtx_destroy(&iser_conn->ib_conn.lock); in iser_conn_free()
307 cv_destroy(&iser_conn->ib_conn.beacon.flush_cv); in iser_conn_free()
308 mtx_destroy(&iser_conn->ib_conn.beacon.flush_lock); in iser_conn_free()
309 sx_destroy(&iser_conn->state_mutex); in iser_conn_free()
310 cv_destroy(&iser_conn->up_cv); in iser_conn_free()
311 kobj_delete((struct kobj *)iser_conn, M_ICL_ISER); in iser_conn_free()
318 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_handoff() local
321 sx_xlock(&iser_conn->state_mutex); in iser_conn_handoff()
322 if (iser_conn->state != ISER_CONN_UP) { in iser_conn_handoff()
325 iser_conn, iser_conn->state); in iser_conn_handoff()
329 error = iser_alloc_rx_descriptors(iser_conn, ic->ic_maxtags); in iser_conn_handoff()
333 error = iser_post_recvm(iser_conn, iser_conn->min_posted_rx); in iser_conn_handoff()
337 iser_conn->handoff_done = true; in iser_conn_handoff()
339 sx_xunlock(&iser_conn->state_mutex); in iser_conn_handoff()
343 iser_free_rx_descriptors(iser_conn); in iser_conn_handoff()
345 sx_xunlock(&iser_conn->state_mutex); in iser_conn_handoff()
356 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_release() local
357 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_release()
358 struct iser_conn *curr, *tmp; in iser_conn_release()
367 if (iser_conn == curr) { in iser_conn_release()
368 ISER_WARN("found iser_conn %p", iser_conn); in iser_conn_release()
369 list_del(&iser_conn->conn_list); in iser_conn_release()
378 sx_xlock(&iser_conn->state_mutex); in iser_conn_release()
379 iser_free_ib_conn_res(iser_conn, true); in iser_conn_release()
380 sx_xunlock(&iser_conn->state_mutex); in iser_conn_release()
392 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_close() local
394 ISER_INFO("closing conn %p", iser_conn); in iser_conn_close()
396 sx_xlock(&iser_conn->state_mutex); in iser_conn_close()
402 if (!iser_conn_terminate(iser_conn) && iser_conn->state == ISER_CONN_PENDING) in iser_conn_close()
403 cv_signal(&iser_conn->up_cv); in iser_conn_close()
404 sx_xunlock(&iser_conn->state_mutex); in iser_conn_close()
412 struct iser_conn *iser_conn = icl_to_iser_conn(ic); in iser_conn_connect() local
413 struct ib_conn *ib_conn = &iser_conn->ib_conn; in iser_conn_connect()
418 sx_xlock(&iser_conn->state_mutex); in iser_conn_connect()
421 iser_conn->handoff_done = false; in iser_conn_connect()
423 iser_conn->state = ISER_CONN_PENDING; in iser_conn_connect()
425 ib_conn->cma_id = rdma_create_id(&init_net, iser_cma_handler, (void *)iser_conn, in iser_conn_connect()
441 ISER_DBG("before cv_wait: %p", iser_conn); in iser_conn_connect()
442 cv_wait(&iser_conn->up_cv, &iser_conn->state_mutex); in iser_conn_connect()
443 ISER_DBG("after cv_wait: %p", iser_conn); in iser_conn_connect()
445 if (iser_conn->state != ISER_CONN_UP) { in iser_conn_connect()
450 err = iser_alloc_login_buf(iser_conn); in iser_conn_connect()
453 sx_xunlock(&iser_conn->state_mutex); in iser_conn_connect()
456 list_add(&iser_conn->conn_list, &ig.connlist); in iser_conn_connect()
464 sx_xunlock(&iser_conn->state_mutex); in iser_conn_connect()
486 struct iser_device *device = iser_pdu->iser_conn->ib_conn.device; in iser_conn_task_done()