| /* | |
| * iSCSI Initiator TCP Transport | |
| * Copyright (C) 2004 Dmitry Yusupov | |
| * Copyright (C) 2004 Alex Aizman | |
| * Copyright (C) 2005 - 2006 Mike Christie | |
| * Copyright (C) 2006 Red Hat, Inc. All rights reserved. | |
| * maintained by open-iscsi@googlegroups.com | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License as published | |
| * by the Free Software Foundation; either version 2 of the License, or | |
| * (at your option) any later version. | |
| * | |
| * This program is distributed in the hope that it will be useful, but | |
| * WITHOUT ANY WARRANTY; without even the implied warranty of | |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| * General Public License for more details. | |
| * | |
| * See the file COPYING included with this distribution for more details. | |
| */ | |
| #ifndef ISCSI_SW_TCP_H | |
| #define ISCSI_SW_TCP_H | |
| #include <scsi/libiscsi.h> | |
| #include <scsi/libiscsi_tcp.h> | |
| struct socket; | |
| struct iscsi_tcp_conn; | |
| /* Socket connection send helper */ | |
| struct iscsi_sw_tcp_send { | |
| struct iscsi_hdr *hdr; | |
| struct iscsi_segment segment; | |
| struct iscsi_segment data_segment; | |
| }; | |
| struct iscsi_sw_tcp_conn { | |
| struct socket *sock; | |
| struct iscsi_sw_tcp_send out; | |
| /* old values for socket callbacks */ | |
| void (*old_data_ready)(struct sock *); | |
| void (*old_state_change)(struct sock *); | |
| void (*old_write_space)(struct sock *); | |
| /* data and header digests */ | |
| struct ahash_request *tx_hash; /* CRC32C (Tx) */ | |
| struct ahash_request *rx_hash; /* CRC32C (Rx) */ | |
| /* MIB custom statistics */ | |
| uint32_t sendpage_failures_cnt; | |
| uint32_t discontiguous_hdr_cnt; | |
| ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int); | |
| }; | |
| struct iscsi_sw_tcp_host { | |
| struct iscsi_session *session; | |
| }; | |
| struct iscsi_sw_tcp_hdrbuf { | |
| struct iscsi_hdr hdrbuf; | |
| char hdrextbuf[ISCSI_MAX_AHS_SIZE + | |
| ISCSI_DIGEST_SIZE]; | |
| }; | |
| #endif /* ISCSI_SW_TCP_H */ |