Lines Matching refs:tcp_conn
63 static int iscsi_tcp_hdr_recv_done(struct iscsi_tcp_conn *tcp_conn,
176 * @tcp_conn: iscsi tcp connection
190 int iscsi_tcp_segment_done(struct iscsi_tcp_conn *tcp_conn,
197 ISCSI_DBG_TCP(tcp_conn->iscsi_conn, "copied %u %u size %u %s\n",
233 ISCSI_DBG_TCP(tcp_conn->iscsi_conn, "total copied %u total size %u\n",
245 if (!(tcp_conn->iscsi_conn->session->tt->caps & CAP_PADDING_OFFLOAD)) {
248 ISCSI_DBG_TCP(tcp_conn->iscsi_conn,
276 * @tcp_conn: the iSCSI TCP connection
292 iscsi_tcp_segment_recv(struct iscsi_tcp_conn *tcp_conn,
298 while (!iscsi_tcp_segment_done(tcp_conn, segment, 1, copy)) {
300 ISCSI_DBG_TCP(tcp_conn->iscsi_conn,
306 ISCSI_DBG_TCP(tcp_conn->iscsi_conn, "copying %d\n", copy);
326 iscsi_tcp_dgst_verify(struct iscsi_tcp_conn *tcp_conn,
334 ISCSI_DBG_TCP(tcp_conn->iscsi_conn, "digest mismatch\n");
394 * @tcp_conn: iscsi connection to prep for
400 void iscsi_tcp_hdr_recv_prep(struct iscsi_tcp_conn *tcp_conn)
402 ISCSI_DBG_TCP(tcp_conn->iscsi_conn,
403 "(%s)\n", tcp_conn->iscsi_conn->hdrdgst_en ?
405 iscsi_segment_init_linear(&tcp_conn->in.segment,
406 tcp_conn->in.hdr_buf, sizeof(struct iscsi_hdr),
415 iscsi_tcp_data_recv_done(struct iscsi_tcp_conn *tcp_conn,
418 struct iscsi_conn *conn = tcp_conn->iscsi_conn;
421 if (!iscsi_tcp_dgst_verify(tcp_conn, segment))
424 rc = iscsi_complete_pdu(conn, tcp_conn->in.hdr,
425 conn->data, tcp_conn->in.datalen);
429 iscsi_tcp_hdr_recv_prep(tcp_conn);
434 iscsi_tcp_data_recv_prep(struct iscsi_tcp_conn *tcp_conn)
436 struct iscsi_conn *conn = tcp_conn->iscsi_conn;
441 rx_hash = tcp_conn->rx_hash;
443 iscsi_segment_init_linear(&tcp_conn->in.segment,
444 conn->data, tcp_conn->in.datalen,
488 struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
490 struct iscsi_data_rsp *rhdr = (struct iscsi_data_rsp *)tcp_conn->in.hdr;
501 if (tcp_conn->in.datalen == 0)
513 if (tcp_task->data_offset + tcp_conn->in.datalen > total_in_length) {
516 tcp_conn->in.datalen, total_in_length);
533 struct iscsi_tcp_conn *tcp_conn;
567 tcp_conn = conn->dd_data;
568 rhdr = (struct iscsi_r2t_rsp *)tcp_conn->in.hdr;
573 if (tcp_conn->in.datalen) {
576 tcp_conn->in.datalen);
657 iscsi_tcp_process_data_in(struct iscsi_tcp_conn *tcp_conn,
660 struct iscsi_conn *conn = tcp_conn->iscsi_conn;
661 struct iscsi_hdr *hdr = tcp_conn->in.hdr;
664 if (!iscsi_tcp_dgst_verify(tcp_conn, segment))
669 rc = iscsi_complete_pdu(conn, tcp_conn->in.hdr, NULL, 0);
674 iscsi_tcp_hdr_recv_prep(tcp_conn);
692 struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
696 tcp_conn->in.datalen = ntoh24(hdr->dlength);
697 if (tcp_conn->in.datalen > conn->max_recv_dlength) {
700 tcp_conn->in.datalen, conn->max_recv_dlength);
716 opcode, ahslen, tcp_conn->in.datalen);
731 if (tcp_conn->in.datalen) {
746 rx_hash = tcp_conn->rx_hash;
751 tcp_conn->in.datalen);
753 rc = iscsi_segment_seek_sg(&tcp_conn->in.segment,
757 tcp_conn->in.datalen,
767 if (tcp_conn->in.datalen) {
768 iscsi_tcp_data_recv_prep(tcp_conn);
789 if (ISCSI_DEF_MAX_RECV_SEG_LEN < tcp_conn->in.datalen) {
794 tcp_conn->in.datalen,
803 if (tcp_conn->in.datalen) {
804 iscsi_tcp_data_recv_prep(tcp_conn);
821 if (tcp_conn->in.datalen)
823 iscsi_tcp_hdr_recv_prep(tcp_conn);
831 * @tcp_conn: iSCSI TCP connection
839 iscsi_tcp_hdr_recv_done(struct iscsi_tcp_conn *tcp_conn,
842 struct iscsi_conn *conn = tcp_conn->iscsi_conn;
849 hdr = (struct iscsi_hdr *) tcp_conn->in.hdr_buf;
857 if (sizeof(*hdr) + ahslen > sizeof(tcp_conn->in.hdr_buf))
881 iscsi_tcp_dgst_header(tcp_conn->rx_hash, hdr,
885 if (!iscsi_tcp_dgst_verify(tcp_conn, segment))
889 tcp_conn->in.hdr = hdr;
895 * @tcp_conn: iscsi tcp conn
900 inline int iscsi_tcp_recv_segment_is_hdr(struct iscsi_tcp_conn *tcp_conn)
902 return tcp_conn->in.segment.done == iscsi_tcp_hdr_recv_done;
920 struct iscsi_tcp_conn *tcp_conn = conn->dd_data;
921 struct iscsi_segment *segment = &tcp_conn->in.segment;
961 rc = iscsi_tcp_segment_recv(tcp_conn, segment, ptr, avail);
974 rc = segment->done(tcp_conn, segment);
1128 struct iscsi_tcp_conn *tcp_conn;
1131 sizeof(*tcp_conn) + dd_data_size, conn_idx);
1141 tcp_conn = conn->dd_data;
1142 tcp_conn->iscsi_conn = conn;
1143 tcp_conn->dd_data = conn->dd_data + sizeof(*tcp_conn);