Lines Matching refs:iser_conn

71 DEFINE_CLASS(icl_iser, icl_iser_methods, sizeof(struct iser_conn));
76 * @iser_conn: iser connection
85 iser_initialize_headers(struct icl_iser_pdu *pdu, struct iser_conn *iser_conn)
88 struct iser_device *device = iser_conn->ib_conn.device;
114 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
119 memcpy(iser_conn->login_req_buf, addr, len);
143 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
151 iser_pdu->iser_conn = iser_conn;
219 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
223 if (iser_conn->state != ISER_CONN_UP)
226 ret = iser_initialize_headers(iser_pdu, iser_conn);
233 ret = iser_send_control(iser_conn, iser_pdu);
237 ret = iser_send_command(iser_conn, iser_pdu);
246 struct iser_conn *iser_conn;
251 iser_conn = (struct iser_conn *)kobj_create(&icl_iser_class, M_ICL_ISER, M_WAITOK | M_ZERO);
252 if (!iser_conn) {
258 cv_init(&iser_conn->up_cv, "iser_cv");
259 sx_init(&iser_conn->state_mutex, "iser_conn_state_mutex");
260 mtx_init(&iser_conn->ib_conn.beacon.flush_lock, "flush_lock", NULL, MTX_DEF);
261 cv_init(&iser_conn->ib_conn.beacon.flush_cv, "flush_cv");
262 mtx_init(&iser_conn->ib_conn.lock, "lock", NULL, MTX_DEF);
264 ic = &iser_conn->icl_conn;
277 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
280 cv_destroy(&iser_conn->ib_conn.beacon.flush_cv);
281 mtx_destroy(&iser_conn->ib_conn.beacon.flush_lock);
282 sx_destroy(&iser_conn->state_mutex);
283 cv_destroy(&iser_conn->up_cv);
284 kobj_delete((struct kobj *)iser_conn, M_ICL_ISER);
291 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
294 sx_xlock(&iser_conn->state_mutex);
295 if (iser_conn->state != ISER_CONN_UP) {
297 ISER_ERR("iser_conn %p state is %d, teardown started\n",
298 iser_conn, iser_conn->state);
302 error = iser_alloc_rx_descriptors(iser_conn, ic->ic_maxtags);
306 error = iser_post_recvm(iser_conn, iser_conn->min_posted_rx);
310 iser_conn->handoff_done = true;
312 sx_xunlock(&iser_conn->state_mutex);
316 iser_free_rx_descriptors(iser_conn);
318 sx_xunlock(&iser_conn->state_mutex);
329 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
330 struct ib_conn *ib_conn = &iser_conn->ib_conn;
331 struct iser_conn *curr, *tmp;
340 if (iser_conn == curr) {
341 ISER_WARN("found iser_conn %p", iser_conn);
342 list_del(&iser_conn->conn_list);
351 sx_xlock(&iser_conn->state_mutex);
352 iser_free_ib_conn_res(iser_conn, true);
353 sx_xunlock(&iser_conn->state_mutex);
365 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
367 ISER_INFO("closing conn %p", iser_conn);
369 sx_xlock(&iser_conn->state_mutex);
375 if (!iser_conn_terminate(iser_conn) && iser_conn->state == ISER_CONN_PENDING)
376 cv_signal(&iser_conn->up_cv);
377 sx_xunlock(&iser_conn->state_mutex);
385 struct iser_conn *iser_conn = icl_to_iser_conn(ic);
386 struct ib_conn *ib_conn = &iser_conn->ib_conn;
391 sx_xlock(&iser_conn->state_mutex);
394 iser_conn->handoff_done = false;
396 iser_conn->state = ISER_CONN_PENDING;
398 ib_conn->cma_id = rdma_create_id(iser_cma_handler, (void *)iser_conn,
414 ISER_DBG("before cv_wait: %p", iser_conn);
415 cv_wait(&iser_conn->up_cv, &iser_conn->state_mutex);
416 ISER_DBG("after cv_wait: %p", iser_conn);
418 if (iser_conn->state != ISER_CONN_UP) {
423 err = iser_alloc_login_buf(iser_conn);
426 sx_xunlock(&iser_conn->state_mutex);
429 list_add(&iser_conn->conn_list, &ig.connlist);
437 sx_xunlock(&iser_conn->state_mutex);
459 struct iser_device *device = iser_pdu->iser_conn->ib_conn.device;