Lines Matching refs:conn

78 	iscsit_add_cmd_to_immediate_queue(cmd, cmd->conn, ISTATE_SEND_R2T);
172 struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state)
175 struct se_session *se_sess = conn->sess->se_sess;
184 size = sizeof(struct iscsi_cmd) + conn->conn_transport->priv_size;
190 cmd->conn = conn;
302 int iscsit_sequence_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
309 mutex_lock(&conn->sess->cmdsn_mutex);
311 cmdsn_ret = iscsit_check_received_cmdsn(conn->sess, be32_to_cpu(cmdsn));
315 if ((ret >= 0) && !list_empty(&conn->sess->sess_ooo_cmdsn_list))
316 iscsit_execute_ooo_cmdsns(conn->sess);
323 ret = iscsit_handle_ooo_cmdsn(conn->sess, cmd, be32_to_cpu(cmdsn));
335 iscsit_add_cmd_to_immediate_queue(cmd, conn, cmd->i_state);
344 mutex_unlock(&conn->sess->cmdsn_mutex);
355 struct iscsi_conn *conn = cmd->conn;
360 if (conn->sess->sess_ops->InitialR2T) {
369 conn->sess->sess_ops->FirstBurstLength) {
373 conn->sess->sess_ops->FirstBurstLength);
384 conn->sess->sess_ops->FirstBurstLength)) {
389 conn->sess->sess_ops->FirstBurstLength, cmd->se_cmd.data_length);
398 struct iscsi_conn *conn,
403 spin_lock_bh(&conn->cmd_lock);
404 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) {
406 spin_unlock_bh(&conn->cmd_lock);
410 spin_unlock_bh(&conn->cmd_lock);
413 init_task_tag, conn->cid);
419 struct iscsi_conn *conn,
425 spin_lock_bh(&conn->cmd_lock);
426 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) {
430 spin_unlock_bh(&conn->cmd_lock);
434 spin_unlock_bh(&conn->cmd_lock);
437 " dumping payload\n", init_task_tag, conn->cid);
439 iscsit_dump_data_payload(conn, length, 1);
446 struct iscsi_conn *conn,
451 spin_lock_bh(&conn->cmd_lock);
452 list_for_each_entry(cmd, &conn->conn_cmd_list, i_conn_node) {
454 spin_unlock_bh(&conn->cmd_lock);
458 spin_unlock_bh(&conn->cmd_lock);
461 targ_xfer_tag, conn->cid);
519 struct iscsi_conn *conn,
534 spin_lock_bh(&conn->immed_queue_lock);
535 list_add_tail(&qr->qr_list, &conn->immed_queue_list);
537 atomic_set(&conn->check_immediate_queue, 1);
538 spin_unlock_bh(&conn->immed_queue_lock);
540 wake_up(&conn->queues_wq);
544 struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsi_conn *conn)
548 spin_lock_bh(&conn->immed_queue_lock);
549 if (list_empty(&conn->immed_queue_list)) {
550 spin_unlock_bh(&conn->immed_queue_lock);
553 qr = list_first_entry(&conn->immed_queue_list,
559 spin_unlock_bh(&conn->immed_queue_lock);
566 struct iscsi_conn *conn)
570 spin_lock_bh(&conn->immed_queue_lock);
572 spin_unlock_bh(&conn->immed_queue_lock);
576 list_for_each_entry_safe(qr, qr_tmp, &conn->immed_queue_list, qr_list) {
584 spin_unlock_bh(&conn->immed_queue_lock);
595 struct iscsi_conn *conn,
610 spin_lock_bh(&conn->response_queue_lock);
611 list_add_tail(&qr->qr_list, &conn->response_queue_list);
613 spin_unlock_bh(&conn->response_queue_lock);
615 wake_up(&conn->queues_wq);
619 struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsi_conn *conn)
623 spin_lock_bh(&conn->response_queue_lock);
624 if (list_empty(&conn->response_queue_list)) {
625 spin_unlock_bh(&conn->response_queue_lock);
629 qr = list_first_entry(&conn->response_queue_list,
635 spin_unlock_bh(&conn->response_queue_lock);
642 struct iscsi_conn *conn)
646 spin_lock_bh(&conn->response_queue_lock);
648 spin_unlock_bh(&conn->response_queue_lock);
652 list_for_each_entry_safe(qr, qr_tmp, &conn->response_queue_list,
661 spin_unlock_bh(&conn->response_queue_lock);
670 bool iscsit_conn_all_queues_empty(struct iscsi_conn *conn)
674 spin_lock_bh(&conn->immed_queue_lock);
675 empty = list_empty(&conn->immed_queue_list);
676 spin_unlock_bh(&conn->immed_queue_lock);
681 spin_lock_bh(&conn->response_queue_lock);
682 empty = list_empty(&conn->response_queue_list);
683 spin_unlock_bh(&conn->response_queue_lock);
688 void iscsit_free_queue_reqs_for_conn(struct iscsi_conn *conn)
692 spin_lock_bh(&conn->immed_queue_lock);
693 list_for_each_entry_safe(qr, qr_tmp, &conn->immed_queue_list, qr_list) {
700 spin_unlock_bh(&conn->immed_queue_lock);
702 spin_lock_bh(&conn->response_queue_lock);
703 list_for_each_entry_safe(qr, qr_tmp, &conn->response_queue_list,
711 spin_unlock_bh(&conn->response_queue_lock);
721 if (cmd->conn)
722 sess = cmd->conn->sess;
742 struct iscsi_conn *conn = cmd->conn;
753 if (conn && check_queues) {
754 iscsit_remove_cmd_from_immediate_queue(cmd, conn);
755 iscsit_remove_cmd_from_response_queue(cmd, conn);
758 if (conn && conn->conn_transport->iscsit_unmap_cmd)
759 conn->conn_transport->iscsit_unmap_cmd(conn, cmd);
819 struct iscsi_conn *conn;
822 list_for_each_entry(conn, &sess->sess_conn_list, conn_list) {
823 if ((conn->cid == cid) &&
824 (conn->conn_state == TARG_CONN_STATE_LOGGED_IN)) {
825 iscsit_inc_conn_usage_count(conn);
827 return conn;
837 struct iscsi_conn *conn;
840 list_for_each_entry(conn, &sess->sess_conn_list, conn_list) {
841 if (conn->cid == cid) {
842 iscsit_inc_conn_usage_count(conn);
843 spin_lock(&conn->state_lock);
844 atomic_set(&conn->connection_wait_rcfr, 1);
845 spin_unlock(&conn->state_lock);
847 return conn;
855 void iscsit_check_conn_usage_count(struct iscsi_conn *conn)
857 spin_lock_bh(&conn->conn_usage_lock);
858 if (conn->conn_usage_count != 0) {
859 conn->conn_waiting_on_uc = 1;
860 spin_unlock_bh(&conn->conn_usage_lock);
862 wait_for_completion(&conn->conn_waiting_on_uc_comp);
865 spin_unlock_bh(&conn->conn_usage_lock);
868 void iscsit_dec_conn_usage_count(struct iscsi_conn *conn)
870 spin_lock_bh(&conn->conn_usage_lock);
871 conn->conn_usage_count--;
873 if (!conn->conn_usage_count && conn->conn_waiting_on_uc)
874 complete(&conn->conn_waiting_on_uc_comp);
876 spin_unlock_bh(&conn->conn_usage_lock);
879 void iscsit_inc_conn_usage_count(struct iscsi_conn *conn)
881 spin_lock_bh(&conn->conn_usage_lock);
882 conn->conn_usage_count++;
883 spin_unlock_bh(&conn->conn_usage_lock);
886 static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
891 cmd = iscsit_allocate_cmd(conn, TASK_RUNNING);
900 session_get_next_ttt(conn->sess) : 0xFFFFFFFF;
901 spin_lock_bh(&conn->cmd_lock);
902 list_add_tail(&cmd->i_conn_node, &conn->conn_cmd_list);
903 spin_unlock_bh(&conn->cmd_lock);
906 iscsit_start_nopin_response_timer(conn);
907 iscsit_add_cmd_to_immediate_queue(cmd, conn, state);
914 struct iscsi_conn *conn = from_timer(conn, t, nopin_response_timer);
915 struct iscsi_session *sess = conn->sess;
917 iscsit_inc_conn_usage_count(conn);
919 spin_lock_bh(&conn->nopin_timer_lock);
920 if (conn->nopin_response_timer_flags & ISCSI_TF_STOP) {
921 spin_unlock_bh(&conn->nopin_timer_lock);
922 iscsit_dec_conn_usage_count(conn);
928 conn->cid, sess->sess_ops->InitiatorName, sess->isid,
930 conn->nopin_response_timer_flags &= ~ISCSI_TF_RUNNING;
931 spin_unlock_bh(&conn->nopin_timer_lock);
934 iscsit_cause_connection_reinstatement(conn, 0);
935 iscsit_dec_conn_usage_count(conn);
938 void iscsit_mod_nopin_response_timer(struct iscsi_conn *conn)
940 struct iscsi_session *sess = conn->sess;
943 spin_lock_bh(&conn->nopin_timer_lock);
944 if (!(conn->nopin_response_timer_flags & ISCSI_TF_RUNNING)) {
945 spin_unlock_bh(&conn->nopin_timer_lock);
949 mod_timer(&conn->nopin_response_timer,
951 spin_unlock_bh(&conn->nopin_timer_lock);
954 void iscsit_start_nopin_response_timer(struct iscsi_conn *conn)
956 struct iscsi_session *sess = conn->sess;
959 spin_lock_bh(&conn->nopin_timer_lock);
960 if (conn->nopin_response_timer_flags & ISCSI_TF_RUNNING) {
961 spin_unlock_bh(&conn->nopin_timer_lock);
965 conn->nopin_response_timer_flags &= ~ISCSI_TF_STOP;
966 conn->nopin_response_timer_flags |= ISCSI_TF_RUNNING;
967 mod_timer(&conn->nopin_response_timer,
971 " seconds\n", conn->cid, na->nopin_response_timeout);
972 spin_unlock_bh(&conn->nopin_timer_lock);
975 void iscsit_stop_nopin_response_timer(struct iscsi_conn *conn)
977 spin_lock_bh(&conn->nopin_timer_lock);
978 if (!(conn->nopin_response_timer_flags & ISCSI_TF_RUNNING)) {
979 spin_unlock_bh(&conn->nopin_timer_lock);
982 conn->nopin_response_timer_flags |= ISCSI_TF_STOP;
983 spin_unlock_bh(&conn->nopin_timer_lock);
985 del_timer_sync(&conn->nopin_response_timer);
987 spin_lock_bh(&conn->nopin_timer_lock);
988 conn->nopin_response_timer_flags &= ~ISCSI_TF_RUNNING;
989 spin_unlock_bh(&conn->nopin_timer_lock);
994 struct iscsi_conn *conn = from_timer(conn, t, nopin_timer);
996 iscsit_inc_conn_usage_count(conn);
998 spin_lock_bh(&conn->nopin_timer_lock);
999 if (conn->nopin_timer_flags & ISCSI_TF_STOP) {
1000 spin_unlock_bh(&conn->nopin_timer_lock);
1001 iscsit_dec_conn_usage_count(conn);
1004 conn->nopin_timer_flags &= ~ISCSI_TF_RUNNING;
1005 spin_unlock_bh(&conn->nopin_timer_lock);
1007 iscsit_add_nopin(conn, 1);
1008 iscsit_dec_conn_usage_count(conn);
1011 void __iscsit_start_nopin_timer(struct iscsi_conn *conn)
1013 struct iscsi_session *sess = conn->sess;
1016 lockdep_assert_held(&conn->nopin_timer_lock);
1024 if (conn->nopin_timer_flags & ISCSI_TF_RUNNING)
1027 conn->nopin_timer_flags &= ~ISCSI_TF_STOP;
1028 conn->nopin_timer_flags |= ISCSI_TF_RUNNING;
1029 mod_timer(&conn->nopin_timer, jiffies + na->nopin_timeout * HZ);
1032 " interval\n", conn->cid, na->nopin_timeout);
1035 void iscsit_start_nopin_timer(struct iscsi_conn *conn)
1037 spin_lock_bh(&conn->nopin_timer_lock);
1038 __iscsit_start_nopin_timer(conn);
1039 spin_unlock_bh(&conn->nopin_timer_lock);
1042 void iscsit_stop_nopin_timer(struct iscsi_conn *conn)
1044 spin_lock_bh(&conn->nopin_timer_lock);
1045 if (!(conn->nopin_timer_flags & ISCSI_TF_RUNNING)) {
1046 spin_unlock_bh(&conn->nopin_timer_lock);
1049 conn->nopin_timer_flags |= ISCSI_TF_STOP;
1050 spin_unlock_bh(&conn->nopin_timer_lock);
1052 del_timer_sync(&conn->nopin_timer);
1054 spin_lock_bh(&conn->nopin_timer_lock);
1055 conn->nopin_timer_flags &= ~ISCSI_TF_RUNNING;
1056 spin_unlock_bh(&conn->nopin_timer_lock);
1061 struct iscsi_conn *conn,
1079 tx_sent = tx_data(conn, &iov[0], iov_count, tx_size);
1094 struct iscsi_conn *conn)
1104 if (conn->conn_ops->HeaderDigest)
1110 tx_sent = tx_data(conn, &iov, 1, tx_hdr_size);
1124 if (conn->conn_ops->DataDigest) {
1140 tx_sent = conn->sock->ops->sendpage(conn->sock,
1163 tx_sent = tx_data(conn, iov_p, 1, cmd->padding);
1174 if (conn->conn_ops->DataDigest) {
1177 tx_sent = tx_data(conn, iov_d, 1, ISCSI_CRC_LEN);
1198 int iscsit_tx_login_rsp(struct iscsi_conn *conn, u8 status_class, u8 status_detail)
1201 struct iscsi_login *login = conn->conn_login;
1204 iscsit_collect_login_stats(conn, status_class, status_detail);
1212 hdr->itt = conn->login_itt;
1214 return conn->conn_transport->iscsit_put_login_tx(conn, login, 0);
1219 struct iscsi_conn *conn;
1224 list_for_each_entry(conn, &sess->sess_conn_list, conn_list)
1225 iscsi_dump_conn_ops(conn->conn_ops);
1232 struct iscsi_conn *conn,
1240 if (!conn || !conn->sock || !conn->conn_ops)
1247 rx_loop = sock_recvmsg(conn->sock, &msg, MSG_WAITALL);
1262 struct iscsi_conn *conn,
1270 if (!conn || !conn->sock || !conn->conn_ops)
1283 int tx_loop = sock_sendmsg(conn->sock, &msg);
1298 struct iscsi_conn *conn,
1306 tiqn = iscsit_snmp_get_tiqn(conn);
1337 if (conn->param_list)
1339 conn->param_list);
1344 ls->last_intr_fail_ip_family = conn->login_family;
1346 ls->last_intr_fail_sockaddr = conn->login_sockaddr;
1353 struct iscsi_tiqn *iscsit_snmp_get_tiqn(struct iscsi_conn *conn)
1357 if (!conn)
1360 tpg = conn->tpg;