Lines Matching defs:ic

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