Lines Matching refs:ic
51 idm_pdu_rx(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_rx() argument
59 ic->ic_timestamp = ddi_get_lbolt(); in idm_pdu_rx()
60 mutex_enter(&ic->ic_state_mutex); in idm_pdu_rx()
61 if (ic->ic_ffp && ic->ic_pdu_events == 0) { in idm_pdu_rx()
62 mutex_exit(&ic->ic_state_mutex); in idm_pdu_rx()
64 if (idm_pdu_rx_forward_ffp(ic, pdu) == B_TRUE) { in idm_pdu_rx()
68 mutex_enter(&ic->ic_state_mutex); in idm_pdu_rx()
87 DTRACE_ISCSI_2(login__command, idm_conn_t *, ic, in idm_pdu_rx()
89 idm_conn_rx_pdu_event(ic, CE_LOGIN_RCV, (uintptr_t)pdu); in idm_pdu_rx()
92 idm_parse_login_rsp(ic, pdu, /* RX */ B_TRUE); in idm_pdu_rx()
95 DTRACE_ISCSI_2(logout__command, idm_conn_t *, ic, in idm_pdu_rx()
98 idm_parse_logout_req(ic, pdu, /* RX */ B_TRUE); in idm_pdu_rx()
101 idm_parse_logout_rsp(ic, pdu, /* RX */ B_TRUE); in idm_pdu_rx()
107 idm_conn_rx_pdu_event(ic, CE_ASYNC_LOGOUT_RCV, in idm_pdu_rx()
111 idm_conn_rx_pdu_event(ic, CE_ASYNC_DROP_CONN_RCV, in idm_pdu_rx()
115 idm_conn_rx_pdu_event(ic, CE_ASYNC_DROP_ALL_CONN_RCV, in idm_pdu_rx()
121 idm_conn_rx_pdu_event(ic, CE_MISC_RX, in idm_pdu_rx()
146 idm_conn_rx_pdu_event(ic, CE_MISC_RX, (uintptr_t)pdu); in idm_pdu_rx()
149 DTRACE_ISCSI_2(data__receive, idm_conn_t *, ic, in idm_pdu_rx()
152 idm_conn_rx_pdu_event(ic, CE_MISC_RX, (uintptr_t)pdu); in idm_pdu_rx()
155 DTRACE_ISCSI_2(task__command, idm_conn_t *, ic, in idm_pdu_rx()
158 idm_conn_rx_pdu_event(ic, CE_MISC_RX, (uintptr_t)pdu); in idm_pdu_rx()
161 DTRACE_ISCSI_2(nop__receive, idm_conn_t *, ic, in idm_pdu_rx()
164 idm_conn_rx_pdu_event(ic, CE_MISC_RX, (uintptr_t)pdu); in idm_pdu_rx()
167 DTRACE_ISCSI_2(text__command, idm_conn_t *, ic, in idm_pdu_rx()
170 idm_conn_rx_pdu_event(ic, CE_MISC_RX, (uintptr_t)pdu); in idm_pdu_rx()
181 idm_conn_rx_pdu_event(ic, CE_MISC_RX, in idm_pdu_rx()
185 mutex_exit(&ic->ic_state_mutex); in idm_pdu_rx()
189 idm_pdu_tx_forward(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_tx_forward() argument
191 (*ic->ic_transport_ops->it_tx_pdu)(ic, pdu); in idm_pdu_tx_forward()
195 idm_pdu_rx_forward_ffp(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_rx_forward_ffp() argument
203 (*ic->ic_conn_ops.icb_rx_scsi_cmd)(ic, pdu); in idm_pdu_rx_forward_ffp()
206 DTRACE_ISCSI_2(data__receive, idm_conn_t *, ic, in idm_pdu_rx_forward_ffp()
209 (*ic->ic_transport_ops->it_rx_dataout)(ic, pdu); in idm_pdu_rx_forward_ffp()
212 DTRACE_ISCSI_2(task__command, idm_conn_t *, ic, in idm_pdu_rx_forward_ffp()
215 (*ic->ic_conn_ops.icb_rx_misc)(ic, pdu); in idm_pdu_rx_forward_ffp()
218 DTRACE_ISCSI_2(nop__receive, idm_conn_t *, ic, in idm_pdu_rx_forward_ffp()
221 (*ic->ic_conn_ops.icb_rx_misc)(ic, pdu); in idm_pdu_rx_forward_ffp()
224 DTRACE_ISCSI_2(text__command, idm_conn_t *, ic, in idm_pdu_rx_forward_ffp()
227 (*ic->ic_conn_ops.icb_rx_misc)(ic, pdu); in idm_pdu_rx_forward_ffp()
231 (*ic->ic_conn_ops.icb_rx_scsi_rsp)(ic, pdu); in idm_pdu_rx_forward_ffp()
234 (*ic->ic_transport_ops->it_rx_datain)(ic, pdu); in idm_pdu_rx_forward_ffp()
237 (*ic->ic_transport_ops->it_rx_rtt)(ic, pdu); in idm_pdu_rx_forward_ffp()
242 (*ic->ic_conn_ops.icb_rx_misc)(ic, pdu); in idm_pdu_rx_forward_ffp()
251 idm_pdu_rx_forward(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_rx_forward() argument
260 if (idm_pdu_rx_forward_ffp(ic, pdu) == B_FALSE) { in idm_pdu_rx_forward()
264 (*ic->ic_conn_ops.icb_rx_misc)(ic, pdu); in idm_pdu_rx_forward()
269 idm_parse_login_rsp(idm_conn_t *ic, idm_pdu_t *login_rsp_pdu, boolean_t rx) in idm_parse_login_rsp() argument
290 idm_conn_rx_pdu_event(ic, new_event, (uintptr_t)login_rsp_pdu); in idm_parse_login_rsp()
292 idm_conn_tx_pdu_event(ic, new_event, (uintptr_t)login_rsp_pdu); in idm_parse_login_rsp()
298 idm_parse_logout_req(idm_conn_t *ic, idm_pdu_t *logout_req_pdu, boolean_t rx) in idm_parse_logout_req() argument
330 if (ntohs(logout_req->cid) == ic->ic_login_cid) { in idm_parse_logout_req()
350 idm_conn_rx_pdu_event(ic, new_event, (uintptr_t)logout_req_pdu); in idm_parse_logout_req()
352 idm_conn_tx_pdu_event(ic, new_event, (uintptr_t)logout_req_pdu); in idm_parse_logout_req()
359 idm_parse_logout_rsp(idm_conn_t *ic, idm_pdu_t *logout_rsp_pdu, boolean_t rx) in idm_parse_logout_rsp() argument
372 idm_conn_rx_pdu_event(ic, new_event, (uintptr_t)logout_rsp_pdu); in idm_parse_logout_rsp()
374 idm_conn_tx_pdu_event(ic, new_event, (uintptr_t)logout_rsp_pdu); in idm_parse_logout_rsp()
387 idm_conn_t *ic; in idm_svc_conn_create() local
402 ic = idm_conn_create_common(CONN_TYPE_TGT, tt, in idm_svc_conn_create()
404 if (ic == NULL) { in idm_svc_conn_create()
407 ic->ic_svc_binding = is; in idm_svc_conn_create()
412 if ((rc = idm_conn_sm_init(ic)) != 0) { in idm_svc_conn_create()
413 idm_conn_destroy_common(ic); in idm_svc_conn_create()
418 *ic_result = ic; in idm_svc_conn_create()
421 list_insert_tail(&idm.idm_tgt_conn_list, ic); in idm_svc_conn_create()
429 idm_svc_conn_destroy(idm_conn_t *ic) in idm_svc_conn_destroy() argument
432 list_remove(&idm.idm_tgt_conn_list, ic); in idm_svc_conn_destroy()
436 if (ic->ic_transport_private != NULL) { in idm_svc_conn_destroy()
437 ic->ic_transport_ops->it_tgt_conn_destroy(ic); in idm_svc_conn_destroy()
439 idm_conn_destroy_common(ic); in idm_svc_conn_destroy()
451 idm_conn_t *ic; in idm_conn_create_common() local
465 ic = kmem_zalloc(sizeof (idm_conn_t), KM_SLEEP); in idm_conn_create_common()
468 ic->ic_target_name[0] = '\0'; in idm_conn_create_common()
469 ic->ic_initiator_name[0] = '\0'; in idm_conn_create_common()
470 ic->ic_isid[0] = '\0'; in idm_conn_create_common()
471 ic->ic_tsih[0] = '\0'; in idm_conn_create_common()
472 ic->ic_conn_type = conn_type; in idm_conn_create_common()
473 ic->ic_conn_ops = *conn_ops; in idm_conn_create_common()
474 ic->ic_transport_ops = it->it_ops; in idm_conn_create_common()
475 ic->ic_transport_type = tt; in idm_conn_create_common()
476 ic->ic_transport_private = NULL; /* Set by transport service */ in idm_conn_create_common()
477 ic->ic_internal_cid = idm_cid_alloc(); in idm_conn_create_common()
478 if (ic->ic_internal_cid == 0) { in idm_conn_create_common()
479 kmem_free(ic, sizeof (idm_conn_t)); in idm_conn_create_common()
482 mutex_init(&ic->ic_mutex, NULL, MUTEX_DEFAULT, NULL); in idm_conn_create_common()
483 cv_init(&ic->ic_cv, NULL, CV_DEFAULT, NULL); in idm_conn_create_common()
484 idm_refcnt_init(&ic->ic_refcnt, ic); in idm_conn_create_common()
486 return (ic); in idm_conn_create_common()
490 idm_conn_destroy_common(idm_conn_t *ic) in idm_conn_destroy_common() argument
492 idm_conn_sm_fini(ic); in idm_conn_destroy_common()
493 idm_refcnt_destroy(&ic->ic_refcnt); in idm_conn_destroy_common()
494 cv_destroy(&ic->ic_cv); in idm_conn_destroy_common()
495 mutex_destroy(&ic->ic_mutex); in idm_conn_destroy_common()
496 idm_cid_free(ic->ic_internal_cid); in idm_conn_destroy_common()
498 kmem_free(ic, sizeof (idm_conn_t)); in idm_conn_destroy_common()
506 idm_ini_conn_finish(idm_conn_t *ic) in idm_ini_conn_finish() argument
509 return (ic->ic_transport_ops->it_ini_conn_connect(ic)); in idm_ini_conn_finish()
513 idm_tgt_conn_finish(idm_conn_t *ic) in idm_tgt_conn_finish() argument
517 rc = idm_notify_client(ic, CN_CONNECT_ACCEPT, (uintptr_t)NULL); in idm_tgt_conn_finish()
523 return (ic->ic_transport_ops->it_tgt_conn_connect(ic)); in idm_tgt_conn_finish()
1097 idm_conn_t *ic; in idm_wd_thread() local
1108 for (ic = list_head(&idm.idm_tgt_conn_list); in idm_wd_thread()
1109 ic != NULL; in idm_wd_thread()
1110 ic = list_next(&idm.idm_tgt_conn_list, ic)) { in idm_wd_thread()
1111 idle_time = ddi_get_lbolt() - ic->ic_timestamp; in idm_wd_thread()
1119 mutex_enter(&ic->ic_state_mutex); in idm_wd_thread()
1120 if (ic->ic_ffp) { in idm_wd_thread()
1121 idm_conn_hold(ic); in idm_wd_thread()
1123 mutex_exit(&ic->ic_state_mutex); in idm_wd_thread()
1137 !ic->ic_keepalive) { in idm_wd_thread()
1138 ic->ic_keepalive = B_TRUE; in idm_wd_thread()
1139 if (ic->ic_conn_ops.icb_keepalive) { in idm_wd_thread()
1140 mutex_exit(&ic->ic_state_mutex); in idm_wd_thread()
1142 (*ic->ic_conn_ops.icb_keepalive)(ic); in idm_wd_thread()
1144 mutex_enter(&ic->ic_state_mutex); in idm_wd_thread()
1149 ic->ic_keepalive = B_FALSE; in idm_wd_thread()
1167 mutex_exit(&ic->ic_state_mutex); in idm_wd_thread()
1172 (void *)ic, (int)idle_time); in idm_wd_thread()
1173 idm_conn_event(ic, CE_TRANSPORT_FAIL, in idm_wd_thread()
1176 mutex_enter(&ic->ic_state_mutex); in idm_wd_thread()
1179 idm_conn_rele(ic); in idm_wd_thread()
1181 mutex_exit(&ic->ic_state_mutex); in idm_wd_thread()