Lines Matching refs:conn
99 struct iscsi_conn *conn,
106 struct iscsi_session *sess = conn->sess;
116 se_nacl = conn->sess->se_sess->se_node_acl;
149 strcpy(conn->sess->auth_type, "CHAP");
151 strcpy(conn->sess->auth_type, NONE);
156 return chap_main_loop(conn, auth, in_buf, out_buf,
162 static void iscsi_remove_failed_auth_entry(struct iscsi_conn *conn)
164 kfree(conn->auth_protocol);
168 struct iscsi_conn *conn,
184 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
193 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
205 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
216 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
226 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
234 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
242 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
259 struct iscsi_conn *conn,
267 list_for_each_entry(param, &conn->param_list->param_list, p_list) {
272 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
287 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
298 se_nacl = conn->sess->se_sess->se_node_acl;
302 iscsit_tx_login_rsp(conn,
314 iscsit_tx_login_rsp(conn,
326 static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_login *login)
338 login_rsp->statsn = cpu_to_be32(conn->stat_sn++);
339 login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn);
340 login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn));
356 int rc = iscsit_start_kthreads(conn);
358 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
364 if (conn->conn_transport->iscsit_put_login_tx(conn, login,
374 if (conn->rx_thread && conn->rx_thread_active) {
375 send_sig(SIGINT, conn->rx_thread, 1);
376 complete(&conn->rx_login_comp);
377 kthread_stop(conn->rx_thread);
379 if (conn->tx_thread && conn->tx_thread_active) {
380 send_sig(SIGINT, conn->tx_thread, 1);
381 kthread_stop(conn->tx_thread);
384 bitmap_release_region(iscsit_global->ts_bitmap, conn->bitmap_id,
393 struct iscsi_conn *conn = sk->sk_user_data;
396 pr_debug("Entering iscsi_target_sk_data_ready: conn: %p\n", conn);
403 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) {
405 pr_debug("Got LOGIN_FLAGS_READY=0, conn: %p >>>>\n", conn);
408 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) {
410 pr_debug("Got LOGIN_FLAGS_CLOSED=1, conn: %p >>>>\n", conn);
413 if (test_and_set_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags)) {
415 pr_debug("Got LOGIN_FLAGS_READ_ACTIVE=1, conn: %p >>>>\n", conn);
416 if (iscsi_target_sk_data_ready == conn->orig_data_ready)
418 conn->orig_data_ready(sk);
422 rc = schedule_delayed_work(&conn->login_work, 0);
432 static void iscsi_target_set_sock_callbacks(struct iscsi_conn *conn)
436 if (!conn->sock)
439 sk = conn->sock->sk;
440 pr_debug("Entering iscsi_target_set_sock_callbacks: conn: %p\n", conn);
443 sk->sk_user_data = conn;
444 conn->orig_data_ready = sk->sk_data_ready;
445 conn->orig_state_change = sk->sk_state_change;
454 static void iscsi_target_restore_sock_callbacks(struct iscsi_conn *conn)
458 if (!conn->sock)
461 sk = conn->sock->sk;
462 pr_debug("Entering iscsi_target_restore_sock_callbacks: conn: %p\n", conn);
470 sk->sk_data_ready = conn->orig_data_ready;
471 sk->sk_state_change = conn->orig_state_change;
490 static bool iscsi_target_sk_check_close(struct iscsi_conn *conn)
494 if (conn->sock) {
495 struct sock *sk = conn->sock->sk;
499 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags));
505 static bool iscsi_target_sk_check_flag(struct iscsi_conn *conn, unsigned int flag)
509 if (conn->sock) {
510 struct sock *sk = conn->sock->sk;
513 state = test_bit(flag, &conn->login_flags);
519 static bool iscsi_target_sk_check_and_clear(struct iscsi_conn *conn, unsigned int flag)
523 if (conn->sock) {
524 struct sock *sk = conn->sock->sk;
528 test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags));
530 clear_bit(flag, &conn->login_flags);
536 static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login *login)
540 iscsi_remove_failed_auth_entry(conn);
541 iscsi_target_nego_release(conn);
542 iscsi_target_login_sess_out(conn, zero_tsih, true);
547 struct iscsi_conn *conn;
553 struct iscsi_conn *conn = timeout->conn;
557 if (conn->login_kworker) {
558 pr_debug("Sending SIGINT to conn->login_kworker %s/%d\n",
559 conn->login_kworker->comm, conn->login_kworker->pid);
560 send_sig(SIGINT, conn->login_kworker, 1);
566 struct iscsi_conn *conn = container_of(work,
568 struct iscsi_login *login = conn->login;
570 struct iscsi_portal_group *tpg = conn->tpg;
571 struct iscsi_tpg_np *tpg_np = conn->tpg_np;
576 pr_debug("entering iscsi_target_do_login_rx, conn: %p, %s:%d\n",
577 conn, current->comm, current->pid);
585 * cancel_delayed_work_sync(&conn->login_work), and cleanup the
588 if (iscsi_target_sk_check_flag(conn, LOGIN_FLAGS_INITIAL_PDU)) {
589 schedule_delayed_work(&conn->login_work, msecs_to_jiffies(10));
602 if (iscsi_target_sk_check_close(conn)) {
607 conn->login_kworker = current;
610 timeout.conn = conn;
615 rc = conn->conn_transport->iscsit_get_login_rx(conn, login);
619 conn->login_kworker = NULL;
625 conn, current->comm, current->pid);
638 if (conn->sock) {
639 struct sock *sk = conn->sock->sk;
642 if (!test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags)) {
643 clear_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags);
644 set_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags);
649 rc = iscsi_target_do_login(conn, login);
653 if (iscsi_target_sk_check_and_clear(conn,
657 cancel_delayed_work(&conn->login_work);
658 iscsi_target_nego_release(conn);
659 iscsi_post_login_handler(np, conn, zero_tsih);
665 iscsi_target_restore_sock_callbacks(conn);
666 cancel_delayed_work(&conn->login_work);
667 iscsi_target_login_drop(conn, login);
673 struct iscsi_conn *conn;
680 conn = sk->sk_user_data;
681 if (!conn) {
685 orig_state_change = conn->orig_state_change;
687 if (!test_bit(LOGIN_FLAGS_READY, &conn->login_flags)) {
688 pr_debug("Got LOGIN_FLAGS_READY=0 sk_state_change conn: %p\n",
689 conn);
697 if (test_bit(LOGIN_FLAGS_READ_ACTIVE, &conn->login_flags) ||
698 test_bit(LOGIN_FLAGS_WRITE_ACTIVE, &conn->login_flags)) {
700 " sk_state_change conn: %p\n", conn);
702 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags);
707 if (test_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags)) {
708 pr_debug("Got LOGIN_FLAGS_CLOSED=1 sk_state_change conn: %p\n",
709 conn);
716 * but only queue conn->login_work -> iscsi_target_do_login_rx()
731 set_bit(LOGIN_FLAGS_CLOSED, &conn->login_flags);
732 state = test_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags);
738 schedule_delayed_work(&conn->login_work, 0);
752 struct iscsi_conn *conn,
761 return iscsi_check_for_session_reinstatement(conn);
763 return iscsi_login_post_auth_non_zero_tsih(conn, login->cid,
768 struct iscsi_conn *conn,
781 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list);
786 conn,
808 conn, login);
812 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
818 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
827 struct iscsi_conn *conn,
840 param = iscsi_find_param_from_key(AUTHMETHOD, conn->param_list);
849 conn);
858 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
867 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
873 if (iscsi_target_check_first_request(conn, login) < 0)
881 conn->param_list,
882 conn->tpg->tpg_attrib.login_keys_workaround);
886 if (!iscsi_check_negotiated_keys(conn->param_list)) {
887 if (conn->tpg->tpg_attrib.authentication &&
892 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
897 if (conn->tpg->tpg_attrib.authentication &&
914 return iscsi_target_do_authentication(conn, login);
917 static int iscsi_target_handle_csg_one(struct iscsi_conn *conn, struct iscsi_login *login)
933 conn);
935 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
941 if (iscsi_target_check_first_request(conn, login) < 0)
944 if (iscsi_target_check_for_existing_instances(conn, login) < 0)
952 conn->param_list,
953 conn->tpg->tpg_attrib.login_keys_workaround);
955 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
961 conn->tpg->tpg_attrib.authentication) {
965 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
970 if (!iscsi_check_negotiated_keys(conn->param_list))
979 static int iscsi_target_do_login(struct iscsi_conn *conn, struct iscsi_login *login)
991 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
999 if (iscsi_target_handle_csg_zero(conn, login) < 0)
1004 if (iscsi_target_handle_csg_one(conn, login) < 0)
1013 if (iscsi_target_sk_check_close(conn))
1016 login->tsih = conn->sess->tsih;
1018 iscsi_target_restore_sock_callbacks(conn);
1019 if (iscsi_target_do_tx_login_io(conn,
1032 if (iscsi_target_do_tx_login_io(conn, login) < 0)
1065 struct iscsi_conn *conn,
1070 struct iscsi_session *sess = conn->sess;
1078 INIT_DELAYED_WORK(&conn->login_work, iscsi_target_do_login_rx);
1079 iscsi_target_set_sock_callbacks(conn);
1082 conn->tpg = NULL;
1123 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
1141 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
1159 if (iscsi_login_setup_crypto(conn) < 0) {
1168 conn->tpg = iscsit_global->discovery_tpg;
1169 if (iscsit_access_np(np, conn->tpg) < 0) {
1170 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
1172 conn->tpg = NULL;
1185 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
1198 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
1208 conn->tpg = iscsit_get_tpg_from_np(tiqn, np, &tpg_np);
1209 if (!conn->tpg) {
1213 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
1218 conn->tpg_np = tpg_np;
1219 pr_debug("Located Portal Group Object: %hu\n", conn->tpg->tpgt);
1223 if (iscsi_login_setup_crypto(conn) < 0) {
1227 conn->tpg = NULL;
1235 if (iscsit_access_np(np, conn->tpg) < 0) {
1238 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
1240 conn->tpg = NULL;
1246 * conn->sess->node_acl will be set when the referenced
1264 &conn->tpg->tpg_se_tpg, i_buf);
1268 i_buf, conn->tpg->tpgt);
1269 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_INITIATOR_ERR,
1287 tag_size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size;
1291 iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
1302 struct iscsi_conn *conn)
1306 if (conn->sock) {
1307 struct sock *sk = conn->sock->sk;
1310 set_bit(LOGIN_FLAGS_READY, &conn->login_flags);
1311 set_bit(LOGIN_FLAGS_INITIAL_PDU, &conn->login_flags);
1323 ret = iscsi_target_do_login(conn, login);
1324 if (!ret && iscsi_target_sk_check_and_clear(conn, LOGIN_FLAGS_INITIAL_PDU))
1328 cancel_delayed_work_sync(&conn->login_work);
1329 iscsi_target_restore_sock_callbacks(conn);
1330 iscsi_remove_failed_auth_entry(conn);
1333 iscsi_target_nego_release(conn);
1338 void iscsi_target_nego_release(struct iscsi_conn *conn)
1340 struct iscsi_login *login = conn->conn_login;
1349 conn->conn_login = NULL;