Lines Matching refs:conn
99 struct iscsi_conn *conn, in iscsi_handle_authentication() argument
106 struct iscsi_session *sess = conn->sess; in iscsi_handle_authentication()
116 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_handle_authentication()
149 strcpy(conn->sess->auth_type, "CHAP"); in iscsi_handle_authentication()
151 strcpy(conn->sess->auth_type, NONE); in iscsi_handle_authentication()
156 return chap_main_loop(conn, auth, in_buf, out_buf, in iscsi_handle_authentication()
162 static void iscsi_remove_failed_auth_entry(struct iscsi_conn *conn) in iscsi_remove_failed_auth_entry() argument
164 kfree(conn->auth_protocol); in iscsi_remove_failed_auth_entry()
168 struct iscsi_conn *conn, in iscsi_target_check_login_request() argument
184 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
193 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
205 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
216 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
226 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
234 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()
259 struct iscsi_conn *conn, in iscsi_target_check_first_request() argument
267 list_for_each_entry(param, &conn->param_list->param_list, p_list) { in iscsi_target_check_first_request()
272 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
287 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
298 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_target_check_first_request()
302 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
314 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
326 static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_tx_login_io() argument
338 login_rsp->statsn = cpu_to_be32(conn->stat_sn++); in iscsi_target_do_tx_login_io()
339 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); in iscsi_target_do_tx_login_io()
340 login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn)); in iscsi_target_do_tx_login_io()
356 int rc = iscsit_start_kthreads(conn); in iscsi_target_do_tx_login_io()
358 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_tx_login_io()
364 if (conn->conn_transport->iscsit_put_login_tx(conn, login, in iscsi_target_do_tx_login_io()
374 if (conn->rx_thread && conn->rx_thread_active) { in iscsi_target_do_tx_login_io()
375 send_sig(SIGINT, conn->rx_thread, 1); in iscsi_target_do_tx_login_io()
376 complete(&conn->rx_login_comp); in iscsi_target_do_tx_login_io()
377 kthread_stop(conn->rx_thread); in iscsi_target_do_tx_login_io()
379 if (conn->tx_thread && conn->tx_thread_active) { in iscsi_target_do_tx_login_io()
380 send_sig(SIGINT, conn->tx_thread, 1); in iscsi_target_do_tx_login_io()
381 kthread_stop(conn->tx_thread); in iscsi_target_do_tx_login_io()
384 bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, in iscsi_target_do_tx_login_io()
393 struct iscsi_conn *conn = sk->sk_user_data; in iscsi_target_sk_data_ready() local
396 pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn); in iscsi_target_sk_data_ready()
403 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_data_ready()
405 pr_debug("Got LOGIN_FLAGS_READY=0, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
408 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_data_ready()
410 pr_debug("Got LOGIN_FLAGS_CLOSED=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
413 if (test_and_set_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_data_ready()
415 pr_debug("Got LOGIN_FLAGS_READ_ACTIVE=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
416 if (iscsi_target_sk_data_ready == conn->orig_data_ready) in iscsi_target_sk_data_ready()
418 conn->orig_data_ready(sk); in iscsi_target_sk_data_ready()
422 rc = schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_data_ready()
432 static void iscsi_target_set_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_set_sock_callbacks() argument
436 if (!conn->sock) in iscsi_target_set_sock_callbacks()
439 sk = conn->sock->sk; in iscsi_target_set_sock_callbacks()
440 pr_debug("Entering iscsi_target_set_sock_callbacks: conn: %p\n", conn); in iscsi_target_set_sock_callbacks()
443 sk->sk_user_data = conn; in iscsi_target_set_sock_callbacks()
444 conn->orig_data_ready = sk->sk_data_ready; in iscsi_target_set_sock_callbacks()
445 conn->orig_state_change = sk->sk_state_change; in iscsi_target_set_sock_callbacks()
454 static void iscsi_target_restore_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_restore_sock_callbacks() argument
458 if (!conn->sock) in iscsi_target_restore_sock_callbacks()
461 sk = conn->sock->sk; in iscsi_target_restore_sock_callbacks()
462 pr_debug("Entering iscsi_target_restore_sock_callbacks: conn: %p\n", conn); in iscsi_target_restore_sock_callbacks()
470 sk->sk_data_ready = conn->orig_data_ready; in iscsi_target_restore_sock_callbacks()
471 sk->sk_state_change = conn->orig_state_change; in iscsi_target_restore_sock_callbacks()
490 static bool iscsi_target_sk_check_close(struct iscsi_conn *conn) in iscsi_target_sk_check_close() argument
494 if (conn->sock) { in iscsi_target_sk_check_close()
495 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_close()
499 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)); in iscsi_target_sk_check_close()
505 static bool iscsi_target_sk_check_flag(struct iscsi_conn *conn, unsigned int flag) in iscsi_target_sk_check_flag() argument
509 if (conn->sock) { in iscsi_target_sk_check_flag()
510 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_flag()
513 state = test_bit(flag, &conn->login_flags); in iscsi_target_sk_check_flag()
519 static bool iscsi_target_sk_check_and_clear(struct iscsi_conn *conn, unsigned int flag) in iscsi_target_sk_check_and_clear() argument
523 if (conn->sock) { in iscsi_target_sk_check_and_clear()
524 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_and_clear()
528 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)); in iscsi_target_sk_check_and_clear()
530 clear_bit(flag, &conn->login_flags); in iscsi_target_sk_check_and_clear()
536 static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_login_drop() argument
540 iscsi_remove_failed_auth_entry(conn); in iscsi_target_login_drop()
541 iscsi_target_nego_release(conn); in iscsi_target_login_drop()
542 iscsi_target_login_sess_out(conn, zero_tsih, true); in iscsi_target_login_drop()
547 struct iscsi_conn *conn; member
553 struct iscsi_conn *conn = timeout->conn; in iscsi_target_login_timeout() local
557 if (conn->login_kworker) { in iscsi_target_login_timeout()
559 conn->login_kworker->comm, conn->login_kworker->pid); in iscsi_target_login_timeout()
560 send_sig(SIGINT, conn->login_kworker, 1); in iscsi_target_login_timeout()
566 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_login_rx() local
568 struct iscsi_login *login = conn->login; in iscsi_target_do_login_rx()
570 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_login_rx()
571 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_login_rx()
577 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
588 if (iscsi_target_sk_check_flag(conn, LOGIN_FLAGS_INITIAL_PDU)) { in iscsi_target_do_login_rx()
589 schedule_delayed_work(&conn->login_work, msecs_to_jiffies(10)); in iscsi_target_do_login_rx()
602 if (iscsi_target_sk_check_close(conn)) { in iscsi_target_do_login_rx()
607 conn->login_kworker = current; in iscsi_target_do_login_rx()
610 timeout.conn = conn; in iscsi_target_do_login_rx()
615 rc = conn->conn_transport->iscsit_get_login_rx(conn, login); in iscsi_target_do_login_rx()
619 conn->login_kworker = NULL; in iscsi_target_do_login_rx()
625 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
638 if (conn->sock) { in iscsi_target_do_login_rx()
639 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
642 if (!test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags)) { in iscsi_target_do_login_rx()
643 clear_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
644 set_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
649 rc = iscsi_target_do_login(conn, login); in iscsi_target_do_login_rx()
653 if (iscsi_target_sk_check_and_clear(conn, in iscsi_target_do_login_rx()
657 cancel_delayed_work(&conn->login_work); in iscsi_target_do_login_rx()
658 iscsi_target_nego_release(conn); in iscsi_target_do_login_rx()
659 iscsi_post_login_handler(np, conn, zero_tsih); in iscsi_target_do_login_rx()
665 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
666 cancel_delayed_work(&conn->login_work); in iscsi_target_do_login_rx()
667 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
673 struct iscsi_conn *conn; in iscsi_target_sk_state_change() local
680 conn = sk->sk_user_data; in iscsi_target_sk_state_change()
681 if (!conn) { in iscsi_target_sk_state_change()
685 orig_state_change = conn->orig_state_change; in iscsi_target_sk_state_change()
687 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_state_change()
689 conn); in iscsi_target_sk_state_change()
697 if (test_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags) || in iscsi_target_sk_state_change()
698 test_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_state_change()
700 " sk_state_change conn: %p\n", conn); in iscsi_target_sk_state_change()
702 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags); in iscsi_target_sk_state_change()
707 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_state_change()
709 conn); in iscsi_target_sk_state_change()
731 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags); in iscsi_target_sk_state_change()
732 state = test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); in iscsi_target_sk_state_change()
738 schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_state_change()
752 struct iscsi_conn *conn, in iscsi_target_check_for_existing_instances() argument
761 return iscsi_check_for_session_reinstatement(conn); in iscsi_target_check_for_existing_instances()
763 return iscsi_login_post_auth_non_zero_tsih(conn, login->cid, in iscsi_target_check_for_existing_instances()
768 struct iscsi_conn *conn, in iscsi_target_do_authentication() argument
781 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_do_authentication()
786 conn, in iscsi_target_do_authentication()
808 conn, login); in iscsi_target_do_authentication()
812 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_do_authentication()
818 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_authentication()
827 struct iscsi_conn *conn, in iscsi_target_handle_csg_zero() argument
840 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_handle_csg_zero()
849 conn); in iscsi_target_handle_csg_zero()
858 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
867 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
873 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_zero()
881 conn->param_list, in iscsi_target_handle_csg_zero()
882 conn->tpg->tpg_attrib.login_keys_workaround); in iscsi_target_handle_csg_zero()
886 if (!iscsi_check_negotiated_keys(conn->param_list)) { in iscsi_target_handle_csg_zero()
887 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
892 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
897 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
914 return iscsi_target_do_authentication(conn, login); in iscsi_target_handle_csg_zero()
917 static int iscsi_target_handle_csg_one(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_handle_csg_one() argument
933 conn); in iscsi_target_handle_csg_one()
935 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
941 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_one()
944 if (iscsi_target_check_for_existing_instances(conn, login) < 0) in iscsi_target_handle_csg_one()
952 conn->param_list, in iscsi_target_handle_csg_one()
953 conn->tpg->tpg_attrib.login_keys_workaround); in iscsi_target_handle_csg_one()
955 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
961 conn->tpg->tpg_attrib.authentication) { in iscsi_target_handle_csg_one()
965 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
970 if (!iscsi_check_negotiated_keys(conn->param_list)) in iscsi_target_handle_csg_one()
979 static int iscsi_target_do_login(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_login() argument
991 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_login()
999 if (iscsi_target_handle_csg_zero(conn, login) < 0) in iscsi_target_do_login()
1004 if (iscsi_target_handle_csg_one(conn, login) < 0) in iscsi_target_do_login()
1013 if (iscsi_target_sk_check_close(conn)) in iscsi_target_do_login()
1016 login->tsih = conn->sess->tsih; in iscsi_target_do_login()
1018 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login()
1019 if (iscsi_target_do_tx_login_io(conn, in iscsi_target_do_login()
1032 if (iscsi_target_do_tx_login_io(conn, login) < 0) in iscsi_target_do_login()
1065 struct iscsi_conn *conn, in iscsi_target_locate_portal() argument
1070 struct iscsi_session *sess = conn->sess; in iscsi_target_locate_portal()
1078 INIT_DELAYED_WORK(&conn->login_work, iscsi_target_do_login_rx); in iscsi_target_locate_portal()
1079 iscsi_target_set_sock_callbacks(conn); in iscsi_target_locate_portal()
1122 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1140 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1151 conn->tpg = iscsit_global->discovery_tpg; in iscsi_target_locate_portal()
1159 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1168 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1169 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1183 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1196 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1206 conn->tpg = iscsit_get_tpg_from_np(tiqn, np, &tpg_np); in iscsi_target_locate_portal()
1207 if (!conn->tpg) { in iscsi_target_locate_portal()
1211 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1216 conn->tpg_np = tpg_np; in iscsi_target_locate_portal()
1217 pr_debug("Located Portal Group Object: %hu\n", conn->tpg->tpgt); in iscsi_target_locate_portal()
1221 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1225 conn->tpg = NULL; in iscsi_target_locate_portal()
1233 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1236 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1238 conn->tpg = NULL; in iscsi_target_locate_portal()
1262 &conn->tpg->tpg_se_tpg, i_buf); in iscsi_target_locate_portal()
1266 i_buf, conn->tpg->tpgt); in iscsi_target_locate_portal()
1267 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1285 tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; in iscsi_target_locate_portal()
1289 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1300 struct iscsi_conn *conn) in iscsi_target_start_negotiation() argument
1304 if (conn->sock) { in iscsi_target_start_negotiation()
1305 struct sock *sk = conn->sock->sk; in iscsi_target_start_negotiation()
1308 set_bit(LOGIN_FLAGS_READY, &conn->login_flags); in iscsi_target_start_negotiation()
1309 set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); in iscsi_target_start_negotiation()
1321 ret = iscsi_target_do_login(conn, login); in iscsi_target_start_negotiation()
1322 if (!ret && iscsi_target_sk_check_and_clear(conn, LOGIN_FLAGS_INITIAL_PDU)) in iscsi_target_start_negotiation()
1326 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_start_negotiation()
1327 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_start_negotiation()
1328 iscsi_remove_failed_auth_entry(conn); in iscsi_target_start_negotiation()
1331 iscsi_target_nego_release(conn); in iscsi_target_start_negotiation()
1336 void iscsi_target_nego_release(struct iscsi_conn *conn) in iscsi_target_nego_release() argument
1338 struct iscsi_login *login = conn->conn_login; in iscsi_target_nego_release()
1347 conn->conn_login = NULL; in iscsi_target_nego_release()