Lines Matching refs:ic

50 idm_state_s1_free(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
53 idm_state_s2_xpt_wait(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
56 idm_state_s3_xpt_up(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
59 idm_state_s4_in_login(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
62 idm_state_s5_logged_in(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
65 idm_state_s6_in_logout(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
71 idm_state_s7_logout_req(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
74 idm_state_s8_cleanup(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
77 idm_state_s9_init_error(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
80 idm_state_s9a_rejected(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
87 idm_state_s9b_wait_snd_done(idm_conn_t *ic,
91 idm_state_s10_in_cleanup(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
94 idm_state_s11_complete(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
97 idm_state_s12_enable_dm(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
100 idm_update_state(idm_conn_t *ic, idm_conn_state_t new_state,
110 idm_conn_sm_validate_pdu(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx,
114 idm_ffp_enable(idm_conn_t *ic);
117 idm_ffp_disable(idm_conn_t *ic, idm_ffp_disable_t disable_type);
120 idm_initial_login_actions(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
123 idm_login_success_actions(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx);
126 idm_conn_sm_init(idm_conn_t *ic) in idm_conn_sm_init() argument
134 ASSERT(ic->ic_internal_cid != 0); in idm_conn_sm_init()
136 ic->ic_internal_cid); in idm_conn_sm_init()
138 ic->ic_state_taskq = taskq_create(taskq_name, 1, minclsyspri, 4, 16384, in idm_conn_sm_init()
140 if (ic->ic_state_taskq == NULL) { in idm_conn_sm_init()
144 idm_sm_audit_init(&ic->ic_state_audit); in idm_conn_sm_init()
145 mutex_init(&ic->ic_state_mutex, NULL, MUTEX_DEFAULT, NULL); in idm_conn_sm_init()
146 cv_init(&ic->ic_state_cv, NULL, CV_DEFAULT, NULL); in idm_conn_sm_init()
148 ic->ic_state = CS_S1_FREE; in idm_conn_sm_init()
149 ic->ic_last_state = CS_S1_FREE; in idm_conn_sm_init()
155 idm_conn_sm_fini(idm_conn_t *ic) in idm_conn_sm_fini() argument
162 if (ic->ic_state_taskq == NULL) { in idm_conn_sm_fini()
166 taskq_destroy(ic->ic_state_taskq); in idm_conn_sm_fini()
168 cv_destroy(&ic->ic_state_cv); in idm_conn_sm_fini()
174 mutex_enter(&ic->ic_state_mutex); in idm_conn_sm_fini()
175 IDM_SM_TIMER_CLEAR(ic); in idm_conn_sm_fini()
176 mutex_destroy(&ic->ic_state_mutex); in idm_conn_sm_fini()
180 idm_conn_event(idm_conn_t *ic, idm_conn_event_t event, uintptr_t event_info) in idm_conn_event() argument
182 mutex_enter(&ic->ic_state_mutex); in idm_conn_event()
183 idm_conn_event_locked(ic, event, event_info, CT_NONE); in idm_conn_event()
184 mutex_exit(&ic->ic_state_mutex); in idm_conn_event()
211 idm_conn_tx_pdu_event(idm_conn_t *ic, idm_conn_event_t event, in idm_conn_tx_pdu_event() argument
214 ASSERT(mutex_owned(&ic->ic_state_mutex)); in idm_conn_tx_pdu_event()
215 ic->ic_pdu_events++; in idm_conn_tx_pdu_event()
216 idm_conn_event_locked(ic, event, event_info, CT_TX_PDU); in idm_conn_tx_pdu_event()
220 idm_conn_rx_pdu_event(idm_conn_t *ic, idm_conn_event_t event, in idm_conn_rx_pdu_event() argument
223 ASSERT(mutex_owned(&ic->ic_state_mutex)); in idm_conn_rx_pdu_event()
224 ic->ic_pdu_events++; in idm_conn_rx_pdu_event()
225 idm_conn_event_locked(ic, event, event_info, CT_RX_PDU); in idm_conn_rx_pdu_event()
229 idm_conn_event_locked(idm_conn_t *ic, idm_conn_event_t event, in idm_conn_event_locked() argument
234 ASSERT(mutex_owned(&ic->ic_state_mutex)); in idm_conn_event_locked()
236 idm_sm_audit_event(&ic->ic_state_audit, SAS_IDM_CONN, in idm_conn_event_locked()
237 (int)ic->ic_state, (int)event, event_info); in idm_conn_event_locked()
250 if ((ic->ic_state == CS_S9_INIT_ERROR) || in idm_conn_event_locked()
251 (ic->ic_state == CS_S9A_REJECTED) || in idm_conn_event_locked()
252 (ic->ic_state == CS_S11_COMPLETE)) { in idm_conn_event_locked()
255 ic->ic_pdu_events--; in idm_conn_event_locked()
262 idm_cs_name[ic->ic_state], ic->ic_state); in idm_conn_event_locked()
269 idm_conn_hold(ic); in idm_conn_event_locked()
272 event_ctx->iec_ic = ic; in idm_conn_event_locked()
277 (void) taskq_dispatch(ic->ic_state_taskq, &idm_conn_event_handler, in idm_conn_event_locked()
285 idm_conn_t *ic = event_ctx->iec_ic; in idm_conn_event_handler() local
290 (void *)ic, idm_ce_name[event_ctx->iec_event], in idm_conn_event_handler()
293 idm_conn_t *, ic, idm_conn_event_ctx_t *, event_ctx); in idm_conn_event_handler()
304 ASSERT(ic->ic_state != CS_S0_UNDEFINED); in idm_conn_event_handler()
305 ASSERT3U(ic->ic_state, <, CS_MAX_STATE); in idm_conn_event_handler()
318 action = idm_conn_sm_validate_pdu(ic, event_ctx, pdu); in idm_conn_event_handler()
353 switch (ic->ic_state) { in idm_conn_event_handler()
355 idm_state_s1_free(ic, event_ctx); in idm_conn_event_handler()
358 idm_state_s2_xpt_wait(ic, event_ctx); in idm_conn_event_handler()
361 idm_state_s3_xpt_up(ic, event_ctx); in idm_conn_event_handler()
364 idm_state_s4_in_login(ic, event_ctx); in idm_conn_event_handler()
367 idm_state_s5_logged_in(ic, event_ctx); in idm_conn_event_handler()
370 idm_state_s6_in_logout(ic, event_ctx); in idm_conn_event_handler()
373 idm_state_s7_logout_req(ic, event_ctx); in idm_conn_event_handler()
376 idm_state_s8_cleanup(ic, event_ctx); in idm_conn_event_handler()
379 idm_state_s9a_rejected(ic, event_ctx); in idm_conn_event_handler()
382 idm_state_s9b_wait_snd_done(ic, event_ctx); in idm_conn_event_handler()
385 idm_state_s9_init_error(ic, event_ctx); in idm_conn_event_handler()
388 idm_state_s10_in_cleanup(ic, event_ctx); in idm_conn_event_handler()
391 idm_state_s11_complete(ic, event_ctx); in idm_conn_event_handler()
394 idm_state_s12_enable_dm(ic, event_ctx); in idm_conn_event_handler()
410 idm_pdu_tx_protocol_error(ic, pdu); in idm_conn_event_handler()
413 idm_pdu_rx_protocol_error(ic, pdu); in idm_conn_event_handler()
419 idm_pdu_rx_forward(ic, pdu); in idm_conn_event_handler()
421 idm_pdu_tx_forward(ic, pdu); in idm_conn_event_handler()
441 mutex_enter(&ic->ic_state_mutex); in idm_conn_event_handler()
442 ic->ic_pdu_events--; in idm_conn_event_handler()
443 mutex_exit(&ic->ic_state_mutex); in idm_conn_event_handler()
446 idm_conn_rele(ic); in idm_conn_event_handler()
451 idm_state_s1_free(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s1_free() argument
456 idm_update_state(ic, CS_S2_XPT_WAIT, event_ctx); in idm_state_s1_free()
460 idm_update_state(ic, CS_S3_XPT_UP, event_ctx); in idm_state_s1_free()
465 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s1_free()
475 idm_state_s2_xpt_wait(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s2_xpt_wait() argument
480 idm_update_state(ic, CS_S4_IN_LOGIN, event_ctx); in idm_state_s2_xpt_wait()
488 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s2_xpt_wait()
500 idm_conn_t *ic = arg; in idm_login_timeout() local
502 ic->ic_state_timeout = 0; in idm_login_timeout()
503 idm_conn_event(ic, CE_LOGIN_TIMEOUT, (uintptr_t)NULL); in idm_login_timeout()
507 idm_state_s3_xpt_up(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s3_xpt_up() argument
513 idm_initial_login_actions(ic, event_ctx); in idm_state_s3_xpt_up()
514 idm_update_state(ic, CS_S4_IN_LOGIN, event_ctx); in idm_state_s3_xpt_up()
521 (void) idm_notify_client(ic, CN_LOGIN_FAIL, (uintptr_t)NULL); in idm_state_s3_xpt_up()
522 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s3_xpt_up()
531 IDM_SM_TIMER_CLEAR(ic); in idm_state_s3_xpt_up()
532 idm_update_state(ic, CS_S9A_REJECTED, event_ctx); in idm_state_s3_xpt_up()
538 IDM_SM_TIMER_CLEAR(ic); in idm_state_s3_xpt_up()
539 (void) idm_notify_client(ic, CN_LOGIN_FAIL, (uintptr_t)NULL); in idm_state_s3_xpt_up()
540 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s3_xpt_up()
553 idm_state_s4_in_login(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s4_in_login() argument
564 ASSERT(ic->ic_client_callback == NULL); in idm_state_s4_in_login()
566 IDM_SM_TIMER_CLEAR(ic); in idm_state_s4_in_login()
567 idm_login_success_actions(ic, event_ctx); in idm_state_s4_in_login()
568 if (ic->ic_rdma_extensions) { in idm_state_s4_in_login()
570 idm_update_state(ic, CS_S12_ENABLE_DM, event_ctx); in idm_state_s4_in_login()
573 idm_update_state(ic, CS_S5_LOGGED_IN, event_ctx); in idm_state_s4_in_login()
578 (void) idm_notify_client(ic, CN_LOGIN_FAIL, (uintptr_t)NULL); in idm_state_s4_in_login()
579 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s4_in_login()
587 IDM_SM_TIMER_CLEAR(ic); in idm_state_s4_in_login()
589 ASSERT(ic->ic_client_callback == NULL); in idm_state_s4_in_login()
590 ic->ic_client_callback = pdu->isp_callback; in idm_state_s4_in_login()
593 idm_update_state(ic, CS_S9B_WAIT_SND_DONE, in idm_state_s4_in_login()
597 ASSERT(ic->ic_client_callback == NULL); in idm_state_s4_in_login()
605 idm_pdu_rx_forward(ic, pdu); in idm_state_s4_in_login()
611 IDM_SM_TIMER_CLEAR(ic); in idm_state_s4_in_login()
612 (void) idm_notify_client(ic, CN_LOGIN_FAIL, (uintptr_t)NULL); in idm_state_s4_in_login()
613 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s4_in_login()
623 IDM_SM_TIMER_CLEAR(ic); in idm_state_s4_in_login()
624 if (IDM_CONN_ISTGT(ic)) { in idm_state_s4_in_login()
625 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_state_s4_in_login()
627 ic->ic_transport_ops->it_ini_conn_disconnect(ic); in idm_state_s4_in_login()
629 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s4_in_login()
633 ASSERT(ic->ic_client_callback == NULL); in idm_state_s4_in_login()
639 mutex_enter(&ic->ic_state_mutex); in idm_state_s4_in_login()
640 if (!(ic->ic_state_flags & CF_INITIAL_LOGIN)) { in idm_state_s4_in_login()
641 idm_initial_login_actions(ic, event_ctx); in idm_state_s4_in_login()
643 mutex_exit(&ic->ic_state_mutex); in idm_state_s4_in_login()
660 idm_state_s5_logged_in(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s5_logged_in() argument
670 idm_ffp_disable(ic, FD_CONN_LOGOUT); /* Explicit logout */ in idm_state_s5_logged_in()
671 idm_update_state(ic, CS_S6_IN_LOGOUT, event_ctx); in idm_state_s5_logged_in()
676 idm_ffp_disable(ic, FD_SESS_LOGOUT); /* Explicit logout */ in idm_state_s5_logged_in()
677 idm_update_state(ic, CS_S6_IN_LOGOUT, event_ctx); in idm_state_s5_logged_in()
681 idm_ffp_disable(ic, FD_SESS_LOGOUT); /* Explicit logout */ in idm_state_s5_logged_in()
684 if (IDM_CONN_ISTGT(ic)) { in idm_state_s5_logged_in()
685 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_state_s5_logged_in()
687 ic->ic_transport_ops->it_ini_conn_disconnect(ic); in idm_state_s5_logged_in()
690 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s5_logged_in()
695 idm_update_state(ic, CS_S7_LOGOUT_REQ, event_ctx); in idm_state_s5_logged_in()
703 idm_ffp_disable(ic, FD_CONN_FAIL); /* Implicit logout */ in idm_state_s5_logged_in()
704 idm_update_state(ic, CS_S8_CLEANUP, event_ctx); in idm_state_s5_logged_in()
720 idm_conn_t *ic = pdu->isp_ic; in idm_state_s6_in_logout_success_snd_done() local
727 idm_conn_event(ic, CE_LOGOUT_SUCCESS_SND_DONE, (uintptr_t)pdu); in idm_state_s6_in_logout_success_snd_done()
733 idm_conn_t *ic = pdu->isp_ic; in idm_state_s6_in_logout_fail_snd_done() local
740 idm_conn_event(ic, CE_LOGOUT_FAIL_SND_DONE, (uintptr_t)pdu); in idm_state_s6_in_logout_fail_snd_done()
744 idm_state_s6_in_logout(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s6_in_logout() argument
753 ASSERT(IDM_CONN_ISTGT(ic)); in idm_state_s6_in_logout()
754 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_state_s6_in_logout()
757 pdu->isp_callback = ic->ic_client_callback; in idm_state_s6_in_logout()
758 ic->ic_client_callback = NULL; in idm_state_s6_in_logout()
760 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s6_in_logout()
765 pdu->isp_callback = ic->ic_client_callback; in idm_state_s6_in_logout()
766 ic->ic_client_callback = NULL; in idm_state_s6_in_logout()
768 idm_update_state(ic, CS_S8_CLEANUP, event_ctx); in idm_state_s6_in_logout()
778 ASSERT(ic->ic_client_callback == NULL); in idm_state_s6_in_logout()
779 ic->ic_client_callback = pdu->isp_callback; in idm_state_s6_in_logout()
796 idm_pdu_rx_forward(ic, pdu); in idm_state_s6_in_logout()
802 if (IDM_CONN_ISTGT(ic)) { in idm_state_s6_in_logout()
803 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_state_s6_in_logout()
805 ic->ic_transport_ops->it_ini_conn_disconnect(ic); in idm_state_s6_in_logout()
808 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s6_in_logout()
819 idm_update_state(ic, CS_S8_CLEANUP, event_ctx); in idm_state_s6_in_logout()
837 idm_conn_t *ic = arg; in idm_logout_req_timeout() local
839 ic->ic_state_timeout = 0; in idm_logout_req_timeout()
840 idm_conn_event(ic, CE_LOGOUT_TIMEOUT, (uintptr_t)NULL); in idm_logout_req_timeout()
844 idm_state_s7_logout_req(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s7_logout_req() argument
853 if (IDM_CONN_ISTGT(ic)) { in idm_state_s7_logout_req()
854 IDM_SM_TIMER_CLEAR(ic); in idm_state_s7_logout_req()
856 idm_ffp_disable(ic, FD_CONN_LOGOUT); /* Explicit logout */ in idm_state_s7_logout_req()
857 idm_update_state(ic, CS_S6_IN_LOGOUT, event_ctx); in idm_state_s7_logout_req()
862 if (IDM_CONN_ISTGT(ic)) { in idm_state_s7_logout_req()
863 IDM_SM_TIMER_CLEAR(ic); in idm_state_s7_logout_req()
865 idm_ffp_disable(ic, FD_SESS_LOGOUT); /* Explicit logout */ in idm_state_s7_logout_req()
866 idm_update_state(ic, CS_S6_IN_LOGOUT, event_ctx); in idm_state_s7_logout_req()
878 if (IDM_CONN_ISTGT(ic)) { in idm_state_s7_logout_req()
879 IDM_SM_TIMER_CLEAR(ic); in idm_state_s7_logout_req()
883 idm_ffp_disable(ic, FD_CONN_FAIL); /* Implicit logout */ in idm_state_s7_logout_req()
884 idm_update_state(ic, CS_S8_CLEANUP, event_ctx); in idm_state_s7_logout_req()
888 if (IDM_CONN_ISTGT(ic)) { in idm_state_s7_logout_req()
889 IDM_SM_TIMER_CLEAR(ic); in idm_state_s7_logout_req()
891 idm_ffp_disable(ic, FD_SESS_LOGOUT); /* Explicit logout */ in idm_state_s7_logout_req()
894 if (IDM_CONN_ISTGT(ic)) { in idm_state_s7_logout_req()
895 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_state_s7_logout_req()
897 ic->ic_transport_ops->it_ini_conn_disconnect(ic); in idm_state_s7_logout_req()
900 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s7_logout_req()
918 idm_conn_t *ic = arg; in idm_cleanup_timeout() local
920 ic->ic_state_timeout = 0; in idm_cleanup_timeout()
921 idm_conn_event(ic, CE_CLEANUP_TIMEOUT, (uintptr_t)NULL); in idm_cleanup_timeout()
925 idm_state_s8_cleanup(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s8_cleanup() argument
937 IDM_SM_TIMER_CLEAR(ic); in idm_state_s8_cleanup()
941 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s8_cleanup()
946 idm_update_state(ic, CS_S10_IN_CLEANUP, event_ctx); in idm_state_s8_cleanup()
952 pdu->isp_callback = ic->ic_client_callback; in idm_state_s8_cleanup()
953 ic->ic_client_callback = NULL; in idm_state_s8_cleanup()
974 idm_state_s9_init_error(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s9_init_error() argument
981 idm_state_s9a_rejected(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s9a_rejected() argument
990 idm_conn_t *ic = pdu->isp_ic; in idm_state_s9b_wait_snd_done_cb() local
997 idm_conn_event(ic, CE_LOGIN_FAIL_SND_DONE, (uintptr_t)pdu); in idm_state_s9b_wait_snd_done_cb()
1005 idm_state_s9b_wait_snd_done(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s9b_wait_snd_done() argument
1016 pdu->isp_callback = ic->ic_client_callback; in idm_state_s9b_wait_snd_done()
1017 ic->ic_client_callback = NULL; in idm_state_s9b_wait_snd_done()
1019 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s9b_wait_snd_done()
1030 idm_state_s10_in_cleanup(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s10_in_cleanup() argument
1041 idm_update_state(ic, CS_S8_CLEANUP, event_ctx); in idm_state_s10_in_cleanup()
1046 IDM_SM_TIMER_CLEAR(ic); in idm_state_s10_in_cleanup()
1049 idm_update_state(ic, CS_S11_COMPLETE, event_ctx); in idm_state_s10_in_cleanup()
1055 pdu->isp_callback = ic->ic_client_callback; in idm_state_s10_in_cleanup()
1056 ic->ic_client_callback = NULL; in idm_state_s10_in_cleanup()
1074 idm_state_s11_complete(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s11_complete() argument
1093 pdu->isp_callback = ic->ic_client_callback; in idm_state_s11_complete()
1094 ic->ic_client_callback = NULL; in idm_state_s11_complete()
1102 idm_state_s12_enable_dm(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_state_s12_enable_dm() argument
1107 idm_update_state(ic, CS_S5_LOGGED_IN, event_ctx); in idm_state_s12_enable_dm()
1111 idm_update_state(ic, CS_S9_INIT_ERROR, event_ctx); in idm_state_s12_enable_dm()
1132 idm_update_state(idm_conn_t *ic, idm_conn_state_t new_state, in idm_update_state() argument
1153 "%s(%d) --> %s(%d)", (void *)ic, in idm_update_state()
1155 idm_cs_name[ic->ic_state], ic->ic_state, in idm_update_state()
1159 idm_conn_t *, ic, idm_conn_state_t, new_state); in idm_update_state()
1161 mutex_enter(&ic->ic_state_mutex); in idm_update_state()
1162 idm_sm_audit_state_change(&ic->ic_state_audit, SAS_IDM_CONN, in idm_update_state()
1163 (int)ic->ic_state, (int)new_state); in idm_update_state()
1164 ic->ic_last_state = ic->ic_state; in idm_update_state()
1165 ic->ic_state = new_state; in idm_update_state()
1166 cv_signal(&ic->ic_state_cv); in idm_update_state()
1167 mutex_exit(&ic->ic_state_mutex); in idm_update_state()
1169 switch (ic->ic_state) { in idm_update_state()
1174 if ((rc = idm_ini_conn_finish(ic)) != 0) { in idm_update_state()
1175 idm_conn_event(ic, CE_CONNECT_FAIL, (uintptr_t)NULL); in idm_update_state()
1177 idm_conn_event(ic, CE_CONNECT_SUCCESS, (uintptr_t)NULL); in idm_update_state()
1187 if ((rc = idm_tgt_conn_finish(ic)) != IDM_STATUS_SUCCESS) { in idm_update_state()
1190 idm_conn_event(ic, CE_CONNECT_REJECT, in idm_update_state()
1194 idm_conn_event(ic, CE_CONNECT_FAIL, in idm_update_state()
1204 IDM_SM_TIMER_CHECK(ic); in idm_update_state()
1205 ic->ic_state_timeout = timeout(idm_login_timeout, ic, in idm_update_state()
1209 if (ic->ic_conn_type == CONN_TYPE_INI) { in idm_update_state()
1210 (void) idm_notify_client(ic, CN_READY_FOR_LOGIN, in idm_update_state()
1212 mutex_enter(&ic->ic_state_mutex); in idm_update_state()
1213 ic->ic_state_flags |= CF_LOGIN_READY; in idm_update_state()
1214 cv_signal(&ic->ic_state_cv); in idm_update_state()
1215 mutex_exit(&ic->ic_state_mutex); in idm_update_state()
1219 ASSERT(!ic->ic_ffp); in idm_update_state()
1225 idm_status = idm_ffp_enable(ic); in idm_update_state()
1227 idm_conn_event(ic, CE_TRANSPORT_FAIL, (uintptr_t)NULL); in idm_update_state()
1230 if (ic->ic_reinstate_conn) { in idm_update_state()
1232 idm_conn_event(ic->ic_reinstate_conn, in idm_update_state()
1240 if (IDM_CONN_ISTGT(ic)) { in idm_update_state()
1241 IDM_SM_TIMER_CHECK(ic); in idm_update_state()
1242 ic->ic_state_timeout = timeout(idm_logout_req_timeout, in idm_update_state()
1243 ic, drv_usectohz(IDM_LOGOUT_SECONDS*1000000)); in idm_update_state()
1248 if (IDM_CONN_ISTGT(ic)) { in idm_update_state()
1249 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_update_state()
1251 ic->ic_transport_ops->it_ini_conn_disconnect(ic); in idm_update_state()
1255 (void) idm_task_abort(ic, NULL, AT_INTERNAL_SUSPEND); in idm_update_state()
1258 IDM_SM_TIMER_CHECK(ic); in idm_update_state()
1259 ic->ic_state_timeout = timeout(idm_cleanup_timeout, ic, in idm_update_state()
1270 idm_refcnt_async_wait_ref(&ic->ic_refcnt, in idm_update_state()
1276 if (IDM_CONN_ISTGT(ic)) { in idm_update_state()
1277 ic->ic_transport_ops->it_tgt_conn_disconnect(ic); in idm_update_state()
1279 mutex_enter(&ic->ic_state_mutex); in idm_update_state()
1280 ic->ic_state_flags |= CF_ERROR; in idm_update_state()
1281 ic->ic_conn_sm_status = IDM_STATUS_FAIL; in idm_update_state()
1282 cv_signal(&ic->ic_state_cv); in idm_update_state()
1283 mutex_exit(&ic->ic_state_mutex); in idm_update_state()
1284 if (ic->ic_last_state != CS_S1_FREE && in idm_update_state()
1285 ic->ic_last_state != CS_S2_XPT_WAIT) { in idm_update_state()
1286 ic->ic_transport_ops->it_ini_conn_disconnect( in idm_update_state()
1287 ic); in idm_update_state()
1289 (void) idm_notify_client(ic, CN_CONNECT_FAIL, in idm_update_state()
1303 if (IDM_CONN_ISTGT(ic) || in idm_update_state()
1304 ((ic->ic_last_state != CS_S1_FREE) && in idm_update_state()
1305 (ic->ic_last_state != CS_S2_XPT_WAIT))) { in idm_update_state()
1306 (void) idm_notify_client(ic, CN_CONNECT_LOST, in idm_update_state()
1307 (uintptr_t)(ic->ic_last_state == CS_S4_IN_LOGIN)); in idm_update_state()
1311 (void) idm_task_abort(ic, NULL, AT_INTERNAL_ABORT); in idm_update_state()
1318 idm_refcnt_async_wait_ref(&ic->ic_refcnt, &idm_conn_unref); in idm_update_state()
1327 idm_status = (IDM_CONN_ISINI(ic)) ? in idm_update_state()
1328 ic->ic_transport_ops->it_ini_enable_datamover(ic) : in idm_update_state()
1329 ic->ic_transport_ops->it_tgt_enable_datamover(ic); in idm_update_state()
1332 idm_conn_event(ic, CE_ENABLE_DM_SUCCESS, in idm_update_state()
1335 idm_conn_event(ic, CE_ENABLE_DM_FAIL, (uintptr_t)NULL); in idm_update_state()
1351 idm_conn_t *ic = ic_void; in idm_conn_unref() local
1361 if (IDM_CONN_ISTGT(ic)) { in idm_conn_unref()
1362 (void) idm_notify_client(ic, CN_CONNECT_DESTROY, in idm_conn_unref()
1364 idm_svc_conn_destroy(ic); in idm_conn_unref()
1367 (void) idm_notify_client(ic, CN_CONNECT_DESTROY, in idm_conn_unref()
1375 idm_conn_t *ic = ic_void; in idm_conn_reject_unref() local
1377 ASSERT(IDM_CONN_ISTGT(ic)); in idm_conn_reject_unref()
1380 idm_svc_conn_destroy(ic); in idm_conn_reject_unref()
1386 idm_conn_sm_validate_pdu(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx, in idm_conn_sm_validate_pdu() argument
1415 if (IDM_CONN_ISINI(ic) && in idm_conn_sm_validate_pdu()
1422 if (IDM_CONN_ISTGT(ic) && in idm_conn_sm_validate_pdu()
1443 if (IDM_CONN_ISTGT(ic) && in idm_conn_sm_validate_pdu()
1450 if (IDM_CONN_ISINI(ic) && in idm_conn_sm_validate_pdu()
1476 switch (ic->ic_state) { in idm_conn_sm_validate_pdu()
1503 switch (ic->ic_state) { in idm_conn_sm_validate_pdu()
1523 switch (ic->ic_state) { in idm_conn_sm_validate_pdu()
1541 switch (ic->ic_state) { in idm_conn_sm_validate_pdu()
1573 idm_pdu_tx_protocol_error(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_tx_protocol_error() argument
1583 idm_pdu_rx_protocol_error(idm_conn_t *ic, idm_pdu_t *pdu) in idm_pdu_rx_protocol_error() argument
1589 (*ic->ic_conn_ops.icb_rx_error)(ic, pdu, IDM_STATUS_PROTOCOL_ERROR); in idm_pdu_rx_protocol_error()
1593 idm_notify_client(idm_conn_t *ic, idm_client_notify_t cn, uintptr_t data) in idm_notify_client() argument
1600 ASSERT(!mutex_owned(&ic->ic_state_mutex)); in idm_notify_client()
1603 (void *)ic, idm_cn_strings[cn], cn); in idm_notify_client()
1604 return ((*ic->ic_conn_ops.icb_client_notify)(ic, cn, data)); in idm_notify_client()
1608 idm_ffp_enable(idm_conn_t *ic) in idm_ffp_enable() argument
1620 mutex_enter(&ic->ic_state_mutex); in idm_ffp_enable()
1621 ic->ic_ffp = B_TRUE; in idm_ffp_enable()
1622 mutex_exit(&ic->ic_state_mutex); in idm_ffp_enable()
1624 rc = idm_notify_client(ic, CN_FFP_ENABLED, (uintptr_t)NULL); in idm_ffp_enable()
1626 mutex_enter(&ic->ic_state_mutex); in idm_ffp_enable()
1627 ic->ic_ffp = B_FALSE; in idm_ffp_enable()
1628 mutex_exit(&ic->ic_state_mutex); in idm_ffp_enable()
1634 idm_ffp_disable(idm_conn_t *ic, idm_ffp_disable_t disable_type) in idm_ffp_disable() argument
1636 mutex_enter(&ic->ic_state_mutex); in idm_ffp_disable()
1637 ic->ic_ffp = B_FALSE; in idm_ffp_disable()
1638 mutex_exit(&ic->ic_state_mutex); in idm_ffp_disable()
1641 (void) idm_notify_client(ic, CN_FFP_DISABLED, in idm_ffp_disable()
1646 idm_initial_login_actions(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_initial_login_actions() argument
1657 ic->ic_state_flags |= CF_INITIAL_LOGIN; in idm_initial_login_actions()
1661 idm_login_success_actions(idm_conn_t *ic, idm_conn_event_ctx_t *event_ctx) in idm_login_success_actions() argument
1673 mutex_enter(&ic->ic_state_mutex); in idm_login_success_actions()
1674 ic->ic_login_cid = ntohs(login_req->cid); in idm_login_success_actions()
1675 ic->ic_login_info_valid = B_TRUE; in idm_login_success_actions()
1677 mutex_exit(&ic->ic_state_mutex); in idm_login_success_actions()