• Home
  • Raw
  • Download

Lines Matching refs:conn

98 	struct iscsi_conn *conn,  in iscsi_handle_authentication()  argument
105 struct iscsi_session *sess = conn->sess; in iscsi_handle_authentication()
115 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_handle_authentication()
141 strcpy(conn->sess->auth_type, "CHAP"); in iscsi_handle_authentication()
143 strcpy(conn->sess->auth_type, NONE); in iscsi_handle_authentication()
148 return chap_main_loop(conn, auth, in_buf, out_buf, in iscsi_handle_authentication()
154 static void iscsi_remove_failed_auth_entry(struct iscsi_conn *conn) in iscsi_remove_failed_auth_entry() argument
156 kfree(conn->auth_protocol); in iscsi_remove_failed_auth_entry()
160 struct iscsi_conn *conn, in iscsi_target_check_login_request() argument
176 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
185 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
197 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
208 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_login_request()
218 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()
251 struct iscsi_conn *conn, in iscsi_target_check_first_request() argument
259 list_for_each_entry(param, &conn->param_list->param_list, p_list) { in iscsi_target_check_first_request()
264 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
279 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_check_first_request()
290 se_nacl = conn->sess->se_sess->se_node_acl; in iscsi_target_check_first_request()
294 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
306 iscsit_tx_login_rsp(conn, in iscsi_target_check_first_request()
318 static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_tx_login_io() argument
330 login_rsp->statsn = cpu_to_be32(conn->stat_sn++); in iscsi_target_do_tx_login_io()
331 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn); in iscsi_target_do_tx_login_io()
332 login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn)); in iscsi_target_do_tx_login_io()
348 int rc = iscsit_start_kthreads(conn); in iscsi_target_do_tx_login_io()
350 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_tx_login_io()
356 if (conn->conn_transport->iscsit_put_login_tx(conn, login, in iscsi_target_do_tx_login_io()
366 if (conn->rx_thread && conn->rx_thread_active) { in iscsi_target_do_tx_login_io()
367 send_sig(SIGINT, conn->rx_thread, 1); in iscsi_target_do_tx_login_io()
368 complete(&conn->rx_login_comp); in iscsi_target_do_tx_login_io()
369 kthread_stop(conn->rx_thread); in iscsi_target_do_tx_login_io()
371 if (conn->tx_thread && conn->tx_thread_active) { in iscsi_target_do_tx_login_io()
372 send_sig(SIGINT, conn->tx_thread, 1); in iscsi_target_do_tx_login_io()
373 kthread_stop(conn->tx_thread); in iscsi_target_do_tx_login_io()
376 bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id, in iscsi_target_do_tx_login_io()
385 struct iscsi_conn *conn = sk->sk_user_data; in iscsi_target_sk_data_ready() local
388 pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn); in iscsi_target_sk_data_ready()
395 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_data_ready()
397 pr_debug("Got LOGIN_FLAGS_READY=0, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
400 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_data_ready()
402 pr_debug("Got LOGIN_FLAGS_CLOSED=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
405 if (test_and_set_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_data_ready()
407 pr_debug("Got LOGIN_FLAGS_READ_ACTIVE=1, conn: %p >>>>\n", conn); in iscsi_target_sk_data_ready()
408 if (iscsi_target_sk_data_ready == conn->orig_data_ready) in iscsi_target_sk_data_ready()
410 conn->orig_data_ready(sk); in iscsi_target_sk_data_ready()
414 rc = schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_data_ready()
424 static void iscsi_target_set_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_set_sock_callbacks() argument
428 if (!conn->sock) in iscsi_target_set_sock_callbacks()
431 sk = conn->sock->sk; in iscsi_target_set_sock_callbacks()
432 pr_debug("Entering iscsi_target_set_sock_callbacks: conn: %p\n", conn); in iscsi_target_set_sock_callbacks()
435 sk->sk_user_data = conn; in iscsi_target_set_sock_callbacks()
436 conn->orig_data_ready = sk->sk_data_ready; in iscsi_target_set_sock_callbacks()
437 conn->orig_state_change = sk->sk_state_change; in iscsi_target_set_sock_callbacks()
446 static void iscsi_target_restore_sock_callbacks(struct iscsi_conn *conn) in iscsi_target_restore_sock_callbacks() argument
450 if (!conn->sock) in iscsi_target_restore_sock_callbacks()
453 sk = conn->sock->sk; in iscsi_target_restore_sock_callbacks()
454 pr_debug("Entering iscsi_target_restore_sock_callbacks: conn: %p\n", conn); in iscsi_target_restore_sock_callbacks()
462 sk->sk_data_ready = conn->orig_data_ready; in iscsi_target_restore_sock_callbacks()
463 sk->sk_state_change = conn->orig_state_change; in iscsi_target_restore_sock_callbacks()
482 static bool iscsi_target_sk_check_close(struct iscsi_conn *conn) in iscsi_target_sk_check_close() argument
486 if (conn->sock) { in iscsi_target_sk_check_close()
487 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_close()
491 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)); in iscsi_target_sk_check_close()
497 static bool iscsi_target_sk_check_flag(struct iscsi_conn *conn, unsigned int flag) in iscsi_target_sk_check_flag() argument
501 if (conn->sock) { in iscsi_target_sk_check_flag()
502 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_flag()
505 state = test_bit(flag, &conn->login_flags); in iscsi_target_sk_check_flag()
511 static bool iscsi_target_sk_check_and_clear(struct iscsi_conn *conn, unsigned int flag) in iscsi_target_sk_check_and_clear() argument
515 if (conn->sock) { in iscsi_target_sk_check_and_clear()
516 struct sock *sk = conn->sock->sk; in iscsi_target_sk_check_and_clear()
520 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)); in iscsi_target_sk_check_and_clear()
522 clear_bit(flag, &conn->login_flags); in iscsi_target_sk_check_and_clear()
528 static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_login_drop() argument
532 iscsi_remove_failed_auth_entry(conn); in iscsi_target_login_drop()
533 iscsi_target_nego_release(conn); in iscsi_target_login_drop()
534 iscsi_target_login_sess_out(conn, zero_tsih, true); in iscsi_target_login_drop()
539 struct iscsi_conn *conn; member
545 struct iscsi_conn *conn = timeout->conn; in iscsi_target_login_timeout() local
549 if (conn->login_kworker) { in iscsi_target_login_timeout()
551 conn->login_kworker->comm, conn->login_kworker->pid); in iscsi_target_login_timeout()
552 send_sig(SIGINT, conn->login_kworker, 1); in iscsi_target_login_timeout()
558 struct iscsi_conn *conn = container_of(work, in iscsi_target_do_login_rx() local
560 struct iscsi_login *login = conn->login; in iscsi_target_do_login_rx()
562 struct iscsi_portal_group *tpg = conn->tpg; in iscsi_target_do_login_rx()
563 struct iscsi_tpg_np *tpg_np = conn->tpg_np; in iscsi_target_do_login_rx()
569 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
580 if (iscsi_target_sk_check_flag(conn, LOGIN_FLAGS_INITIAL_PDU)) { in iscsi_target_do_login_rx()
581 schedule_delayed_work(&conn->login_work, msecs_to_jiffies(10)); in iscsi_target_do_login_rx()
594 if (iscsi_target_sk_check_close(conn)) { in iscsi_target_do_login_rx()
599 conn->login_kworker = current; in iscsi_target_do_login_rx()
602 timeout.conn = conn; in iscsi_target_do_login_rx()
607 rc = conn->conn_transport->iscsit_get_login_rx(conn, login); in iscsi_target_do_login_rx()
611 conn->login_kworker = NULL; in iscsi_target_do_login_rx()
617 conn, current->comm, current->pid); in iscsi_target_do_login_rx()
630 if (conn->sock) { in iscsi_target_do_login_rx()
631 struct sock *sk = conn->sock->sk; in iscsi_target_do_login_rx()
634 if (!test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags)) { in iscsi_target_do_login_rx()
635 clear_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
636 set_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags); in iscsi_target_do_login_rx()
641 rc = iscsi_target_do_login(conn, login); in iscsi_target_do_login_rx()
645 if (iscsi_target_sk_check_and_clear(conn, in iscsi_target_do_login_rx()
649 cancel_delayed_work(&conn->login_work); in iscsi_target_do_login_rx()
650 iscsi_target_nego_release(conn); in iscsi_target_do_login_rx()
651 iscsi_post_login_handler(np, conn, zero_tsih); in iscsi_target_do_login_rx()
657 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login_rx()
658 cancel_delayed_work(&conn->login_work); in iscsi_target_do_login_rx()
659 iscsi_target_login_drop(conn, login); in iscsi_target_do_login_rx()
665 struct iscsi_conn *conn; in iscsi_target_sk_state_change() local
672 conn = sk->sk_user_data; in iscsi_target_sk_state_change()
673 if (!conn) { in iscsi_target_sk_state_change()
677 orig_state_change = conn->orig_state_change; in iscsi_target_sk_state_change()
679 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) { in iscsi_target_sk_state_change()
681 conn); in iscsi_target_sk_state_change()
689 if (test_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags) || in iscsi_target_sk_state_change()
690 test_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags)) { in iscsi_target_sk_state_change()
692 " sk_state_change conn: %p\n", conn); in iscsi_target_sk_state_change()
694 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags); in iscsi_target_sk_state_change()
699 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) { in iscsi_target_sk_state_change()
701 conn); in iscsi_target_sk_state_change()
723 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags); in iscsi_target_sk_state_change()
724 state = test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); in iscsi_target_sk_state_change()
730 schedule_delayed_work(&conn->login_work, 0); in iscsi_target_sk_state_change()
744 struct iscsi_conn *conn, in iscsi_target_check_for_existing_instances() argument
753 return iscsi_check_for_session_reinstatement(conn); in iscsi_target_check_for_existing_instances()
755 return iscsi_login_post_auth_non_zero_tsih(conn, login->cid, in iscsi_target_check_for_existing_instances()
760 struct iscsi_conn *conn, in iscsi_target_do_authentication() argument
773 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_do_authentication()
778 conn, in iscsi_target_do_authentication()
800 conn, login); in iscsi_target_do_authentication()
804 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_do_authentication()
810 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_authentication()
819 struct iscsi_conn *conn, in iscsi_target_handle_csg_zero() argument
832 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list); in iscsi_target_handle_csg_zero()
841 conn); in iscsi_target_handle_csg_zero()
850 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
859 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
865 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_zero()
873 conn->param_list, in iscsi_target_handle_csg_zero()
874 conn->tpg->tpg_attrib.login_keys_workaround); in iscsi_target_handle_csg_zero()
878 if (!iscsi_check_negotiated_keys(conn->param_list)) { in iscsi_target_handle_csg_zero()
879 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
884 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_zero()
889 if (conn->tpg->tpg_attrib.authentication && in iscsi_target_handle_csg_zero()
906 return iscsi_target_do_authentication(conn, login); in iscsi_target_handle_csg_zero()
909 static int iscsi_target_handle_csg_one(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_handle_csg_one() argument
925 conn); in iscsi_target_handle_csg_one()
927 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
933 if (iscsi_target_check_first_request(conn, login) < 0) in iscsi_target_handle_csg_one()
936 if (iscsi_target_check_for_existing_instances(conn, login) < 0) in iscsi_target_handle_csg_one()
944 conn->param_list, in iscsi_target_handle_csg_one()
945 conn->tpg->tpg_attrib.login_keys_workaround); in iscsi_target_handle_csg_one()
947 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
953 conn->tpg->tpg_attrib.authentication) { in iscsi_target_handle_csg_one()
957 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_handle_csg_one()
962 if (!iscsi_check_negotiated_keys(conn->param_list)) in iscsi_target_handle_csg_one()
971 static int iscsi_target_do_login(struct iscsi_conn *conn, struct iscsi_login *login) in iscsi_target_do_login() argument
983 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_do_login()
991 if (iscsi_target_handle_csg_zero(conn, login) < 0) in iscsi_target_do_login()
996 if (iscsi_target_handle_csg_one(conn, login) < 0) in iscsi_target_do_login()
1005 if (iscsi_target_sk_check_close(conn)) in iscsi_target_do_login()
1008 login->tsih = conn->sess->tsih; in iscsi_target_do_login()
1010 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_do_login()
1011 if (iscsi_target_do_tx_login_io(conn, in iscsi_target_do_login()
1024 if (iscsi_target_do_tx_login_io(conn, login) < 0) in iscsi_target_do_login()
1057 struct iscsi_conn *conn, in iscsi_target_locate_portal() argument
1062 struct iscsi_session *sess = conn->sess; in iscsi_target_locate_portal()
1070 INIT_DELAYED_WORK(&conn->login_work, iscsi_target_do_login_rx); in iscsi_target_locate_portal()
1071 iscsi_target_set_sock_callbacks(conn); in iscsi_target_locate_portal()
1074 conn->tpg = NULL; in iscsi_target_locate_portal()
1113 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1131 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1149 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1158 conn->tpg = iscsit_global->discovery_tpg; in iscsi_target_locate_portal()
1159 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1160 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1162 conn->tpg = NULL; in iscsi_target_locate_portal()
1175 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1188 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1198 conn->tpg = iscsit_get_tpg_from_np(tiqn, np, &tpg_np); in iscsi_target_locate_portal()
1199 if (!conn->tpg) { in iscsi_target_locate_portal()
1203 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1208 conn->tpg_np = tpg_np; in iscsi_target_locate_portal()
1209 pr_debug("Located Portal Group Object: %hu\n", conn->tpg->tpgt); in iscsi_target_locate_portal()
1213 if (iscsi_login_setup_crypto(conn) < 0) { in iscsi_target_locate_portal()
1217 conn->tpg = NULL; in iscsi_target_locate_portal()
1225 if (iscsit_access_np(np, conn->tpg) < 0) { in iscsi_target_locate_portal()
1228 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1230 conn->tpg = NULL; in iscsi_target_locate_portal()
1254 &conn->tpg->tpg_se_tpg, i_buf); in iscsi_target_locate_portal()
1258 i_buf, conn->tpg->tpgt); in iscsi_target_locate_portal()
1259 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR, in iscsi_target_locate_portal()
1277 tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size; in iscsi_target_locate_portal()
1281 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR, in iscsi_target_locate_portal()
1292 struct iscsi_conn *conn) in iscsi_target_start_negotiation() argument
1296 if (conn->sock) { in iscsi_target_start_negotiation()
1297 struct sock *sk = conn->sock->sk; in iscsi_target_start_negotiation()
1300 set_bit(LOGIN_FLAGS_READY, &conn->login_flags); in iscsi_target_start_negotiation()
1301 set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags); in iscsi_target_start_negotiation()
1313 ret = iscsi_target_do_login(conn, login); in iscsi_target_start_negotiation()
1314 if (!ret && iscsi_target_sk_check_and_clear(conn, LOGIN_FLAGS_INITIAL_PDU)) in iscsi_target_start_negotiation()
1318 cancel_delayed_work_sync(&conn->login_work); in iscsi_target_start_negotiation()
1319 iscsi_target_restore_sock_callbacks(conn); in iscsi_target_start_negotiation()
1320 iscsi_remove_failed_auth_entry(conn); in iscsi_target_start_negotiation()
1323 iscsi_target_nego_release(conn); in iscsi_target_start_negotiation()
1328 void iscsi_target_nego_release(struct iscsi_conn *conn) in iscsi_target_nego_release() argument
1330 struct iscsi_login *login = conn->conn_login; in iscsi_target_nego_release()
1339 conn->conn_login = NULL; in iscsi_target_nego_release()