Lines Matching refs:conn

104 	struct iscsi_conn *conn,  in iscsi_handle_authentication()  argument
111 struct iscsi_session *sess = conn->sess; in iscsi_handle_authentication()
121 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_handle_authentication()
154 strcpy(conn->sess->auth_type, "CHAP"); in iscsi_handle_authentication()
156 strcpy(conn->sess->auth_type, NONE); in iscsi_handle_authentication()
162 return srp_main_loop(conn, auth, in_buf, out_buf, in iscsi_handle_authentication()
166 return chap_main_loop(conn, auth, in_buf, out_buf, in iscsi_handle_authentication()
178 static void iscsi_remove_failed_auth_entry(struct iscsi_conn *conn) in iscsi_remove_failed_auth_entry() argument
180 kfree(conn->auth_protocol); in iscsi_remove_failed_auth_entry()
184 struct iscsi_conn *conn, in iscsi_target_check_login_request() argument
200 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
209 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
221 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
232 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
242 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
250 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
258 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
274 struct iscsi_conn *conn, in iscsi_target_check_first_request() argument
282 list_for_each_entry(param, &conn->param_list->param_list, p_list) { in iscsi_target_check_first_request()
287 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
302 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
313 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_target_check_first_request()
317 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
329 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
341 static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_tx_login_io() argument
344 struct iscsi_session *sess = conn->sess; in iscsi_target_do_tx_login_io()
354 login_rsp->statsn = cpu_to_be32(conn->stat_sn++); in iscsi_target_do_tx_login_io()
355 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); in iscsi_target_do_tx_login_io()
356 login_rsp->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn); in iscsi_target_do_tx_login_io()
372 int rc = iscsit_start_kthreads(conn); in iscsi_target_do_tx_login_io()
374 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_tx_login_io()
380 if (conn->conn_transport->iscsit_put_login_tx(conn, login, in iscsi_target_do_tx_login_io()
394 if (conn->rx_thread && conn->rx_thread_active) { in iscsi_target_do_tx_login_io()
395 send_sig(SIGINT, conn->rx_thread, 1); in iscsi_target_do_tx_login_io()
396 complete(&conn->rx_login_comp); in iscsi_target_do_tx_login_io()
397 kthread_stop(conn->rx_thread); in iscsi_target_do_tx_login_io()
399 if (conn->tx_thread && conn->tx_thread_active) { in iscsi_target_do_tx_login_io()
400 send_sig(SIGINT, conn->tx_thread, 1); in iscsi_target_do_tx_login_io()
401 kthread_stop(conn->tx_thread); in iscsi_target_do_tx_login_io()
404 bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, in iscsi_target_do_tx_login_io()
413 struct iscsi_conn *conn = sk->sk_user_data; in iscsi_target_sk_data_ready() local
416 pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn); in iscsi_target_sk_data_ready()
423 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_data_ready()
425 pr_debug("Got LOGIN_FLAGS_READY=0, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
428 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_data_ready()
430 pr_debug("Got LOGIN_FLAGS_CLOSED=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
433 if (test_and_set_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_data_ready()
435 pr_debug("Got LOGIN_FLAGS_READ_ACTIVE=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
439 rc = schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_data_ready()
449 static void iscsi_target_set_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_set_sock_callbacks() argument
453 if (!conn->sock) in iscsi_target_set_sock_callbacks()
456 sk = conn->sock->sk; in iscsi_target_set_sock_callbacks()
457 pr_debug("Entering iscsi_target_set_sock_callbacks: conn: %p\n", conn); in iscsi_target_set_sock_callbacks()
460 sk->sk_user_data = conn; in iscsi_target_set_sock_callbacks()
461 conn->orig_data_ready = sk->sk_data_ready; in iscsi_target_set_sock_callbacks()
462 conn->orig_state_change = sk->sk_state_change; in iscsi_target_set_sock_callbacks()
471 static void iscsi_target_restore_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_restore_sock_callbacks() argument
475 if (!conn->sock) in iscsi_target_restore_sock_callbacks()
478 sk = conn->sock->sk; in iscsi_target_restore_sock_callbacks()
479 pr_debug("Entering iscsi_target_restore_sock_callbacks: conn: %p\n", conn); in iscsi_target_restore_sock_callbacks()
487 sk->sk_data_ready = conn->orig_data_ready; in iscsi_target_restore_sock_callbacks()
488 sk->sk_state_change = conn->orig_state_change; in iscsi_target_restore_sock_callbacks()
507 static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_login_drop() argument
512 iscsi_remove_failed_auth_entry(conn); in iscsi_target_login_drop()
513 iscsi_target_nego_release(conn); in iscsi_target_login_drop()
514 iscsi_target_login_sess_out(conn, np, zero_tsih, true); in iscsi_target_login_drop()
519 struct iscsi_conn *conn = (struct iscsi_conn *)data; in iscsi_target_login_timeout() local
523 if (conn->login_kworker) { in iscsi_target_login_timeout()
525 conn->login_kworker->comm, conn->login_kworker->pid); in iscsi_target_login_timeout()
526 send_sig(SIGINT, conn->login_kworker, 1); in iscsi_target_login_timeout()
532 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_login_rx() local
534 struct iscsi_login *login = conn->login; in iscsi_target_do_login_rx()
536 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_login_rx()
537 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_login_rx()
543 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
551 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
552 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
557 if (conn->sock) { in iscsi_target_do_login_rx()
558 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
566 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
567 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
573 conn->login_kworker = current; in iscsi_target_do_login_rx()
578 login_timer.data = (unsigned long)conn; in iscsi_target_do_login_rx()
583 rc = conn->conn_transport->iscsit_get_login_rx(conn, login); in iscsi_target_do_login_rx()
586 conn->login_kworker = NULL; in iscsi_target_do_login_rx()
589 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
590 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
596 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
598 rc = iscsi_target_do_login(conn, login); in iscsi_target_do_login_rx()
600 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
601 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
604 if (conn->sock) { in iscsi_target_do_login_rx()
605 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
608 clear_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
612 iscsi_target_nego_release(conn); in iscsi_target_do_login_rx()
613 iscsi_post_login_handler(np, conn, zero_tsih); in iscsi_target_do_login_rx()
620 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_cleanup() local
622 struct sock *sk = conn->sock->sk; in iscsi_target_do_cleanup()
623 struct iscsi_login *login = conn->login; in iscsi_target_do_cleanup()
625 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_cleanup()
626 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_cleanup()
630 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_do_cleanup()
631 conn->orig_state_change(sk); in iscsi_target_do_cleanup()
633 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_cleanup()
634 iscsi_target_login_drop(conn, login); in iscsi_target_do_cleanup()
642 struct iscsi_conn *conn; in iscsi_target_sk_state_change() local
649 conn = sk->sk_user_data; in iscsi_target_sk_state_change()
650 if (!conn) { in iscsi_target_sk_state_change()
654 orig_state_change = conn->orig_state_change; in iscsi_target_sk_state_change()
656 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_state_change()
658 conn); in iscsi_target_sk_state_change()
663 if (test_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_state_change()
665 " conn: %p\n", conn); in iscsi_target_sk_state_change()
670 if (test_and_set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_state_change()
672 conn); in iscsi_target_sk_state_change()
685 schedule_delayed_work(&conn->login_cleanup_work, 0); in iscsi_target_sk_state_change()
697 struct iscsi_conn *conn, in iscsi_target_check_for_existing_instances() argument
706 return iscsi_check_for_session_reinstatement(conn); in iscsi_target_check_for_existing_instances()
708 return iscsi_login_post_auth_non_zero_tsih(conn, login->cid, in iscsi_target_check_for_existing_instances()
713 struct iscsi_conn *conn, in iscsi_target_do_authentication() argument
726 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_do_authentication()
731 conn, in iscsi_target_do_authentication()
753 conn, login); in iscsi_target_do_authentication()
757 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_do_authentication()
763 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_authentication()
772 struct iscsi_conn *conn, in iscsi_target_handle_csg_zero() argument
785 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_handle_csg_zero()
794 conn); in iscsi_target_handle_csg_zero()
803 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
812 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
818 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_zero()
826 conn->param_list); in iscsi_target_handle_csg_zero()
830 if (!iscsi_check_negotiated_keys(conn->param_list)) { in iscsi_target_handle_csg_zero()
831 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
836 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
841 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
858 return iscsi_target_do_authentication(conn, login); in iscsi_target_handle_csg_zero()
861 static int iscsi_target_handle_csg_one(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_handle_csg_one() argument
877 conn); in iscsi_target_handle_csg_one()
879 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
885 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_one()
888 if (iscsi_target_check_for_existing_instances(conn, login) < 0) in iscsi_target_handle_csg_one()
896 conn->param_list); in iscsi_target_handle_csg_one()
898 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
904 conn->tpg->tpg_attrib.authentication) { in iscsi_target_handle_csg_one()
908 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
913 if (!iscsi_check_negotiated_keys(conn->param_list)) in iscsi_target_handle_csg_one()
922 static int iscsi_target_do_login(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_login() argument
934 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_login()
942 if (iscsi_target_handle_csg_zero(conn, login) < 0) in iscsi_target_do_login()
947 if (iscsi_target_handle_csg_one(conn, login) < 0) in iscsi_target_do_login()
950 login->tsih = conn->sess->tsih; in iscsi_target_do_login()
952 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login()
953 if (iscsi_target_do_tx_login_io(conn, in iscsi_target_do_login()
966 if (iscsi_target_do_tx_login_io(conn, login) < 0) in iscsi_target_do_login()
976 if (conn->sock) { in iscsi_target_do_login()
977 struct sock *sk = conn->sock->sk; in iscsi_target_do_login()
986 " conn: %p\n", conn); in iscsi_target_do_login()
1014 struct iscsi_conn *conn, in iscsi_target_locate_portal() argument
1019 struct iscsi_session *sess = conn->sess; in iscsi_target_locate_portal()
1027 INIT_DELAYED_WORK(&conn->login_work, iscsi_target_do_login_rx); in iscsi_target_locate_portal()
1028 INIT_DELAYED_WORK(&conn->login_cleanup_work, iscsi_target_do_cleanup); in iscsi_target_locate_portal()
1029 iscsi_target_set_sock_callbacks(conn); in iscsi_target_locate_portal()
1072 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1090 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1101 conn->tpg = iscsit_global->discovery_tpg; in iscsi_target_locate_portal()
1109 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1118 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1119 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1133 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1146 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1156 conn->tpg = iscsit_get_tpg_from_np(tiqn, np, &tpg_np); in iscsi_target_locate_portal()
1157 if (!conn->tpg) { in iscsi_target_locate_portal()
1161 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1166 conn->tpg_np = tpg_np; in iscsi_target_locate_portal()
1167 pr_debug("Located Portal Group Object: %hu\n", conn->tpg->tpgt); in iscsi_target_locate_portal()
1171 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1175 conn->tpg = NULL; in iscsi_target_locate_portal()
1183 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1186 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1188 conn->tpg = NULL; in iscsi_target_locate_portal()
1212 &conn->tpg->tpg_se_tpg, i_buf); in iscsi_target_locate_portal()
1216 i_buf, conn->tpg->tpgt); in iscsi_target_locate_portal()
1217 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1235 tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; in iscsi_target_locate_portal()
1239 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1250 struct iscsi_conn *conn) in iscsi_target_start_negotiation() argument
1254 ret = iscsi_target_do_login(conn, login); in iscsi_target_start_negotiation()
1256 if (conn->sock) { in iscsi_target_start_negotiation()
1257 struct sock *sk = conn->sock->sk; in iscsi_target_start_negotiation()
1260 set_bit(LOGIN_FLAGS_READY, &conn->login_flags); in iscsi_target_start_negotiation()
1264 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_start_negotiation()
1265 cancel_delayed_work_sync(&conn->login_cleanup_work); in iscsi_target_start_negotiation()
1266 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_start_negotiation()
1267 iscsi_remove_failed_auth_entry(conn); in iscsi_target_start_negotiation()
1270 iscsi_target_nego_release(conn); in iscsi_target_start_negotiation()
1275 void iscsi_target_nego_release(struct iscsi_conn *conn) in iscsi_target_nego_release() argument
1277 struct iscsi_login *login = conn->conn_login; in iscsi_target_nego_release()
1286 conn->conn_login = NULL; in iscsi_target_nego_release()