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
353 login_rsp->statsn = cpu_to_be32(conn->stat_sn++); in iscsi_target_do_tx_login_io()
354 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); in iscsi_target_do_tx_login_io()
355 login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn)); in iscsi_target_do_tx_login_io()
371 int rc = iscsit_start_kthreads(conn); in iscsi_target_do_tx_login_io()
373 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_tx_login_io()
379 if (conn->conn_transport->iscsit_put_login_tx(conn, login, in iscsi_target_do_tx_login_io()
389 if (conn->rx_thread && conn->rx_thread_active) { in iscsi_target_do_tx_login_io()
390 send_sig(SIGINT, conn->rx_thread, 1); in iscsi_target_do_tx_login_io()
391 complete(&conn->rx_login_comp); in iscsi_target_do_tx_login_io()
392 kthread_stop(conn->rx_thread); in iscsi_target_do_tx_login_io()
394 if (conn->tx_thread && conn->tx_thread_active) { in iscsi_target_do_tx_login_io()
395 send_sig(SIGINT, conn->tx_thread, 1); in iscsi_target_do_tx_login_io()
396 kthread_stop(conn->tx_thread); in iscsi_target_do_tx_login_io()
399 bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, in iscsi_target_do_tx_login_io()
408 struct iscsi_conn *conn = sk->sk_user_data; in iscsi_target_sk_data_ready() local
411 pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn); in iscsi_target_sk_data_ready()
418 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_data_ready()
420 pr_debug("Got LOGIN_FLAGS_READY=0, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
423 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_data_ready()
425 pr_debug("Got LOGIN_FLAGS_CLOSED=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
428 if (test_and_set_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_data_ready()
430 pr_debug("Got LOGIN_FLAGS_READ_ACTIVE=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
434 rc = schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_data_ready()
444 static void iscsi_target_set_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_set_sock_callbacks() argument
448 if (!conn->sock) in iscsi_target_set_sock_callbacks()
451 sk = conn->sock->sk; in iscsi_target_set_sock_callbacks()
452 pr_debug("Entering iscsi_target_set_sock_callbacks: conn: %p\n", conn); in iscsi_target_set_sock_callbacks()
455 sk->sk_user_data = conn; in iscsi_target_set_sock_callbacks()
456 conn->orig_data_ready = sk->sk_data_ready; in iscsi_target_set_sock_callbacks()
457 conn->orig_state_change = sk->sk_state_change; in iscsi_target_set_sock_callbacks()
466 static void iscsi_target_restore_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_restore_sock_callbacks() argument
470 if (!conn->sock) in iscsi_target_restore_sock_callbacks()
473 sk = conn->sock->sk; in iscsi_target_restore_sock_callbacks()
474 pr_debug("Entering iscsi_target_restore_sock_callbacks: conn: %p\n", conn); in iscsi_target_restore_sock_callbacks()
482 sk->sk_data_ready = conn->orig_data_ready; in iscsi_target_restore_sock_callbacks()
483 sk->sk_state_change = conn->orig_state_change; in iscsi_target_restore_sock_callbacks()
502 static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_login_drop() argument
507 iscsi_remove_failed_auth_entry(conn); in iscsi_target_login_drop()
508 iscsi_target_nego_release(conn); in iscsi_target_login_drop()
509 iscsi_target_login_sess_out(conn, np, zero_tsih, true); in iscsi_target_login_drop()
514 struct iscsi_conn *conn = (struct iscsi_conn *)data; in iscsi_target_login_timeout() local
518 if (conn->login_kworker) { in iscsi_target_login_timeout()
520 conn->login_kworker->comm, conn->login_kworker->pid); in iscsi_target_login_timeout()
521 send_sig(SIGINT, conn->login_kworker, 1); in iscsi_target_login_timeout()
527 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_login_rx() local
529 struct iscsi_login *login = conn->login; in iscsi_target_do_login_rx()
531 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_login_rx()
532 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_login_rx()
538 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
546 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
547 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
552 if (conn->sock) { in iscsi_target_do_login_rx()
553 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
561 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
562 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
568 conn->login_kworker = current; in iscsi_target_do_login_rx()
573 login_timer.data = (unsigned long)conn; in iscsi_target_do_login_rx()
578 rc = conn->conn_transport->iscsit_get_login_rx(conn, login); in iscsi_target_do_login_rx()
581 conn->login_kworker = NULL; in iscsi_target_do_login_rx()
584 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
585 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
591 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
593 rc = iscsi_target_do_login(conn, login); in iscsi_target_do_login_rx()
595 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
596 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
599 if (conn->sock) { in iscsi_target_do_login_rx()
600 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
603 clear_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
607 iscsi_target_nego_release(conn); in iscsi_target_do_login_rx()
608 iscsi_post_login_handler(np, conn, zero_tsih); in iscsi_target_do_login_rx()
615 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_cleanup() local
617 struct sock *sk = conn->sock->sk; in iscsi_target_do_cleanup()
618 struct iscsi_login *login = conn->login; in iscsi_target_do_cleanup()
620 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_cleanup()
621 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_cleanup()
625 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_do_cleanup()
626 conn->orig_state_change(sk); in iscsi_target_do_cleanup()
628 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_cleanup()
629 iscsi_target_login_drop(conn, login); in iscsi_target_do_cleanup()
637 struct iscsi_conn *conn; in iscsi_target_sk_state_change() local
644 conn = sk->sk_user_data; in iscsi_target_sk_state_change()
645 if (!conn) { in iscsi_target_sk_state_change()
649 orig_state_change = conn->orig_state_change; in iscsi_target_sk_state_change()
651 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_state_change()
653 conn); in iscsi_target_sk_state_change()
658 if (test_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_state_change()
660 " conn: %p\n", conn); in iscsi_target_sk_state_change()
665 if (test_and_set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_state_change()
667 conn); in iscsi_target_sk_state_change()
680 schedule_delayed_work(&conn->login_cleanup_work, 0); in iscsi_target_sk_state_change()
692 struct iscsi_conn *conn, in iscsi_target_check_for_existing_instances() argument
701 return iscsi_check_for_session_reinstatement(conn); in iscsi_target_check_for_existing_instances()
703 return iscsi_login_post_auth_non_zero_tsih(conn, login->cid, in iscsi_target_check_for_existing_instances()
708 struct iscsi_conn *conn, in iscsi_target_do_authentication() argument
721 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_do_authentication()
726 conn, in iscsi_target_do_authentication()
748 conn, login); in iscsi_target_do_authentication()
752 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_do_authentication()
758 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_authentication()
767 struct iscsi_conn *conn, in iscsi_target_handle_csg_zero() argument
780 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_handle_csg_zero()
789 conn); in iscsi_target_handle_csg_zero()
798 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
807 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
813 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_zero()
821 conn->param_list); in iscsi_target_handle_csg_zero()
825 if (!iscsi_check_negotiated_keys(conn->param_list)) { in iscsi_target_handle_csg_zero()
826 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
831 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
836 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
853 return iscsi_target_do_authentication(conn, login); in iscsi_target_handle_csg_zero()
856 static int iscsi_target_handle_csg_one(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_handle_csg_one() argument
872 conn); in iscsi_target_handle_csg_one()
874 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
880 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_one()
883 if (iscsi_target_check_for_existing_instances(conn, login) < 0) in iscsi_target_handle_csg_one()
891 conn->param_list); in iscsi_target_handle_csg_one()
893 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
899 conn->tpg->tpg_attrib.authentication) { in iscsi_target_handle_csg_one()
903 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
908 if (!iscsi_check_negotiated_keys(conn->param_list)) in iscsi_target_handle_csg_one()
917 static int iscsi_target_do_login(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_login() argument
929 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_login()
937 if (iscsi_target_handle_csg_zero(conn, login) < 0) in iscsi_target_do_login()
942 if (iscsi_target_handle_csg_one(conn, login) < 0) in iscsi_target_do_login()
945 login->tsih = conn->sess->tsih; in iscsi_target_do_login()
947 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login()
948 if (iscsi_target_do_tx_login_io(conn, in iscsi_target_do_login()
961 if (iscsi_target_do_tx_login_io(conn, login) < 0) in iscsi_target_do_login()
971 if (conn->sock) { in iscsi_target_do_login()
972 struct sock *sk = conn->sock->sk; in iscsi_target_do_login()
981 " conn: %p\n", conn); in iscsi_target_do_login()
1009 struct iscsi_conn *conn, in iscsi_target_locate_portal() argument
1014 struct iscsi_session *sess = conn->sess; in iscsi_target_locate_portal()
1022 INIT_DELAYED_WORK(&conn->login_work, iscsi_target_do_login_rx); in iscsi_target_locate_portal()
1023 INIT_DELAYED_WORK(&conn->login_cleanup_work, iscsi_target_do_cleanup); in iscsi_target_locate_portal()
1024 iscsi_target_set_sock_callbacks(conn); in iscsi_target_locate_portal()
1067 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1085 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1096 conn->tpg = iscsit_global->discovery_tpg; in iscsi_target_locate_portal()
1104 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1113 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1114 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1128 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1141 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1151 conn->tpg = iscsit_get_tpg_from_np(tiqn, np, &tpg_np); in iscsi_target_locate_portal()
1152 if (!conn->tpg) { in iscsi_target_locate_portal()
1156 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1161 conn->tpg_np = tpg_np; in iscsi_target_locate_portal()
1162 pr_debug("Located Portal Group Object: %hu\n", conn->tpg->tpgt); in iscsi_target_locate_portal()
1166 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1170 conn->tpg = NULL; in iscsi_target_locate_portal()
1178 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1181 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1183 conn->tpg = NULL; in iscsi_target_locate_portal()
1207 &conn->tpg->tpg_se_tpg, i_buf); in iscsi_target_locate_portal()
1211 i_buf, conn->tpg->tpgt); in iscsi_target_locate_portal()
1212 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1230 tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; in iscsi_target_locate_portal()
1234 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1245 struct iscsi_conn *conn) in iscsi_target_start_negotiation() argument
1249 ret = iscsi_target_do_login(conn, login); in iscsi_target_start_negotiation()
1251 if (conn->sock) { in iscsi_target_start_negotiation()
1252 struct sock *sk = conn->sock->sk; in iscsi_target_start_negotiation()
1255 set_bit(LOGIN_FLAGS_READY, &conn->login_flags); in iscsi_target_start_negotiation()
1259 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_start_negotiation()
1260 cancel_delayed_work_sync(&conn->login_cleanup_work); in iscsi_target_start_negotiation()
1261 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_start_negotiation()
1262 iscsi_remove_failed_auth_entry(conn); in iscsi_target_start_negotiation()
1265 iscsi_target_nego_release(conn); in iscsi_target_start_negotiation()
1270 void iscsi_target_nego_release(struct iscsi_conn *conn) in iscsi_target_nego_release() argument
1272 struct iscsi_login *login = conn->conn_login; in iscsi_target_nego_release()
1281 conn->conn_login = NULL; in iscsi_target_nego_release()