Lines Matching defs:conn

44  *          conn     The connection
52 my_soo_read(connection_t *conn, struct uio *u, int flags)
60 DEBC(conn, 99, ("soo_read req: %zu\n", resid));
62 rw_enter(&conn->c_sock_rw, RW_READER);
63 if (conn->c_sock == NULL) {
66 so = conn->c_sock->f_socket;
82 rw_exit(&conn->c_sock_rw);
85 DEBC(conn, 1, ("Read failed (ret: %d, req: %zu, out: %zu)\n",
88 handle_connection_error(conn, ISCSI_STATUS_SOCKET_ERROR,
102 * conn The connection
106 try_resynch_receive(connection_t *conn)
122 rc = my_soo_read(conn, &uio, MSG_DONTWAIT);
123 DEBC(conn, 9, ("try_resynch_receive: rc = %d, resid = %zu\n",
134 * conn The connection
142 ccb_from_itt(connection_t *conn, uint32_t itt)
154 ccb = &conn->c_session->s_ccb[cidx];
157 DEBC(conn, 0,
164 DEBC(conn, 0,
196 connection_t *conn = pdu->pdu_connection;
244 if (conn->c_DataDigest) {
252 if (my_soo_read(conn, &pdu->pdu_uio, MSG_WAITALL) != 0) {
255 if (conn->c_DataDigest) {
338 * conn The connection
344 check_StatSN(connection_t *conn, uint32_t nw_sn, bool ack)
349 rc = add_sernum(&conn->c_StatSN_buf, sn);
352 ack_sernum(&conn->c_StatSN_buf, sn);
357 conn->c_StatSN_buf.ExpSN, sn));
363 conn->c_StatSN_buf.ExpSN, sn));
364 handle_connection_error(conn, ISCSI_STATUS_PDUS_LOST,
370 conn->c_StatSN_buf.ExpSN, rc - 1));
371 if (conn->c_state == ST_FULL_FEATURE &&
372 conn->c_session->s_ErrorRecoveryLevel) {
373 snack_missing(conn, NULL, SNACK_STATUS_NAK,
374 conn->c_StatSN_buf.ExpSN, rc - 1);
378 conn->c_state, conn->c_session->s_ErrorRecoveryLevel));
379 handle_connection_error(conn, ISCSI_STATUS_PDUS_LOST,
393 * conn The connection
398 check_CmdSN(connection_t *conn, uint32_t nw_sn)
403 TAILQ_FOREACH_SAFE(ccb, &conn->c_ccbs_waiting, ccb_chain, nxt) {
404 DEBC(conn, 10,
410 DEBC(conn, 1, ("CheckCmdSN resending - CmdSN=%d, ExpCmdSn=%d\n",
417 handle_connection_error(conn,
444 * conn The connection
450 receive_login_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
454 DEBC(conn, 9, ("Received Login Response PDU, op=%x, flags=%x, sn=%u\n",
465 DEBC(conn, 1, ("Login problem - Class = %x, Detail = %x\n",
472 if (!conn->c_StatSN_buf.next_sn) {
473 conn->c_StatSN_buf.next_sn = conn->c_StatSN_buf.ExpSN =
475 } else if (check_StatSN(conn, pdu->pdu_hdr.pduh_p.login_rsp.StatSN, TRUE))
483 negotiate_login(conn, pdu, req_ccb);
495 * conn The connection
501 receive_text_response_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
505 DEBC(conn, 9, ("Received Text Response PDU, op=%x, flags=%x\n",
508 if (check_StatSN(conn, pdu->pdu_hdr.pduh_p.text_rsp.StatSN, TRUE)) {
513 handle_connection_error(conn, ISCSI_STATUS_TARGET_ERROR,
526 negotiate_text(conn, pdu, req_ccb);
537 * conn The connection
543 receive_logout_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
551 DEBC(conn, 1,
558 if (otherconn && check_StatSN(conn, pdu->pdu_hdr.pduh_p.logout_rsp.StatSN, TRUE))
576 if (conn->c_session->s_ErrorRecoveryLevel >= 2 && response != 1) {
577 connection_t *refconn = (otherconn) ? req_ccb->ccb_par : conn;
585 mutex_enter(&conn->c_lock);
586 if (!otherconn && conn->c_state == ST_LOGOUT_SENT) {
587 conn->c_terminating = ISCSI_STATUS_LOGOUT;
588 conn->c_state = ST_SETTLING;
589 conn->c_loggedout = (response) ? LOGOUT_FAILED : LOGOUT_SUCCESS;
590 mutex_exit(&conn->c_lock);
592 connection_timeout_stop(conn);
595 mutex_enter(&conn->c_lock);
596 cv_broadcast(&conn->c_conn_cv);
598 mutex_exit(&conn->c_lock);
609 * conn The connection
615 receive_data_in_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
649 if (conn->c_state == ST_FULL_FEATURE &&
650 conn->c_session->s_ErrorRecoveryLevel) {
656 conn->c_state, conn->c_session->s_ErrorRecoveryLevel));
657 handle_connection_error(conn, ISCSI_STATUS_PDUS_LOST,
667 if ((pdu->pdu_hdr.pduh_Flags & FLAG_ACK) && conn->c_session->s_ErrorRecoveryLevel)
668 send_snack(conn, pdu, req_ccb, SNACK_DATA_ACK);
673 DEBC(conn, 10, ("Rx Data In %d, done = %d\n",
678 conn->c_recover = 0;
682 if (check_StatSN(conn, pdu->pdu_hdr.pduh_p.data_in.StatSN, done))
699 * conn The connection
705 receive_r2t_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
708 DEBC(conn, 10, ("Received R2T PDU - CCB = %p\n", req_ccb));
715 send_data_out(conn, pdu, req_ccb, CCBDISP_NOWAIT, TRUE);
727 * conn The connection
733 receive_command_response_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
765 conn->c_recover = 0; /* successful transfer, reset recover count */
794 DEBC(conn, 10, ("Rx Response: CmdSN %d, rsp = %x, status = %x\n",
799 rc = check_StatSN(conn, pdu->pdu_hdr.pduh_p.response.StatSN, done);
813 * conn The connection
818 receive_asynch_pdu(connection_t *conn, pdu_t *pdu)
828 if (conn->c_session->s_active_connections > 1) {
829 kill_connection(conn, ISCSI_STATUS_TARGET_LOGOUT,
832 kill_session(conn->c_session->s_id,
839 conn = find_connection(conn->c_session,
841 if (conn != NULL) {
842 conn->c_Time2Wait =
844 conn->c_Time2Retain =
846 kill_connection(conn, ISCSI_STATUS_TARGET_DROP,
852 conn->c_session->s_DefaultTime2Wait =
854 conn->c_session->s_DefaultTime2Retain =
856 kill_session(conn->c_session->s_id,
862 start_text_negotiation(conn);
878 * conn The connection
883 receive_reject_pdu(connection_t *conn, pdu_t *pdu)
894 req_ccb = ccb_from_itt(conn, hpdu->pduh_InitiatorTaskTag);
896 DEBC(conn, 9, ("Reject PDU ITT (ccb)= %x (%p)\n",
933 handle_connection_error(conn, ISCSI_STATUS_PROTOCOL_ERROR,
945 * conn The connection
951 receive_task_management_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
955 DEBC(conn, 2, ("Received Task Management PDU, response %d, req_ccb %p\n",
991 check_StatSN(conn, pdu->pdu_hdr.pduh_p.task_rsp.StatSN, TRUE);
1002 * conn The connection
1008 receive_nop_in_pdu(connection_t *conn, pdu_t *pdu, ccb_t *req_ccb)
1010 DEBC(conn, 10,
1019 send_nop_out(conn, pdu);
1028 if (TAILQ_FIRST(&conn->c_ccbs_waiting) != NULL)
1029 send_nop_out(conn, NULL);
1033 check_CmdSN(conn, pdu->pdu_hdr.pduh_p.nop_in.ExpCmdSN);
1037 check_StatSN(conn, pdu->pdu_hdr.pduh_p.nop_in.StatSN, TRUE);
1039 DEBC(conn, 0, ("Received unsolicted NOP_In, itt=%08x\n",
1052 * conn The connection
1059 receive_pdu(connection_t *conn, pdu_t *pdu)
1064 session_t *sess = conn->c_session;
1066 if (conn->c_HeaderDigest) {
1072 try_resynch_receive(conn);
1078 DEBC(conn, 10, ("Received PDU StatSN=%u, ExpCmdSN=%u MaxCmdSN=%u ExpDataSN=%u\n",
1084 req_ccb = ccb_from_itt(conn, pdu->pdu_hdr.pduh_InitiatorTaskTag);
1096 handle_connection_error(conn, ISCSI_STATUS_TARGET_ERROR, NO_LOGOUT);
1099 DEBC(conn, 10,
1107 if (!rc && (conn->c_state <= ST_WINDING_DOWN ||
1112 rc = receive_nop_in_pdu(conn, pdu, req_ccb);
1116 rc = receive_command_response_pdu(conn, pdu, req_ccb);
1120 rc = receive_task_management_pdu(conn, pdu, req_ccb);
1124 rc = receive_login_pdu(conn, pdu, req_ccb);
1128 rc = receive_text_response_pdu(conn, pdu, req_ccb);
1132 rc = receive_data_in_pdu(conn, pdu, req_ccb);
1136 rc = receive_logout_pdu(conn, pdu, req_ccb);
1140 rc = receive_r2t_pdu(conn, pdu, req_ccb);
1144 rc = receive_asynch_pdu(conn, pdu);
1148 rc = receive_reject_pdu(conn, pdu);
1153 try_resynch_receive(conn);
1168 conn->c_num_timeouts = 0;
1170 TAILQ_EMPTY(&conn->c_ccbs_waiting))
1171 connection_timeout_start(conn, conn->c_idle_timeout_val);
1173 connection_timeout_start(conn, CONNECTION_TIMEOUT);
1195 * conn The connection
1201 connection_t *conn = (connection_t *) par;
1206 while (!conn->c_terminating) {
1207 pdu = get_pdu(conn, TRUE);
1209 KASSERT(conn->c_terminating);
1219 hlen = (conn->c_HeaderDigest) ? BHS_SIZE + 4 : BHS_SIZE;
1223 DEBC(conn, 99, ("Receive thread waiting for data\n"));
1224 if (my_soo_read(conn, &pdu->pdu_uio, MSG_WAITALL)) {
1230 if (hlen == BHS_SIZE && conn->c_HeaderDigest) {
1236 if (my_soo_read(conn, &pdu->pdu_uio, MSG_WAITALL)) {
1242 if (receive_pdu(conn, pdu) > 0) {
1246 mutex_enter(&conn->c_lock);
1247 if (!conn->c_destroy) {
1248 cv_timedwait(&conn->c_idle_cv, &conn->c_lock, CONNECTION_IDLE_TIMEOUT);
1250 mutex_exit(&conn->c_lock);
1251 } while (!conn->c_destroy);
1253 conn->c_rcvproc = NULL;
1254 DEBC(conn, 5, ("Receive thread exits\n"));