[SCSI] libiscsi_tcp: support padding offload
cxgb3i does not offload the processing of the header, but it will always process the padding. This patch adds a padding offload flag to detect when the LLD supports this. The patch also modifies the header processing so that we do not try to read/bypass the header dugest in the skb. cxgb3i will not include it with the header like with other offload cards. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:

committed by
James Bottomley

parent
ae15f80172
commit
6df19a791b
@@ -194,7 +194,7 @@ iscsi_sw_tcp_conn_restore_callbacks(struct iscsi_sw_tcp_conn *tcp_sw_conn)
|
||||
|
||||
/**
|
||||
* iscsi_sw_tcp_xmit_segment - transmit segment
|
||||
* @tcp_sw_conn: the iSCSI TCP connection
|
||||
* @tcp_conn: the iSCSI TCP connection
|
||||
* @segment: the buffer to transmnit
|
||||
*
|
||||
* This function transmits as much of the buffer as
|
||||
@@ -205,14 +205,15 @@ iscsi_sw_tcp_conn_restore_callbacks(struct iscsi_sw_tcp_conn *tcp_sw_conn)
|
||||
* hash as it goes. When the entire segment has been transmitted,
|
||||
* it will retrieve the hash value and send it as well.
|
||||
*/
|
||||
static int iscsi_sw_tcp_xmit_segment(struct iscsi_sw_tcp_conn *tcp_sw_conn,
|
||||
static int iscsi_sw_tcp_xmit_segment(struct iscsi_tcp_conn *tcp_conn,
|
||||
struct iscsi_segment *segment)
|
||||
{
|
||||
struct iscsi_sw_tcp_conn *tcp_sw_conn = tcp_conn->dd_data;
|
||||
struct socket *sk = tcp_sw_conn->sock;
|
||||
unsigned int copied = 0;
|
||||
int r = 0;
|
||||
|
||||
while (!iscsi_tcp_segment_done(segment, 0, r)) {
|
||||
while (!iscsi_tcp_segment_done(tcp_conn, segment, 0, r)) {
|
||||
struct scatterlist *sg;
|
||||
unsigned int offset, copy;
|
||||
int flags = 0;
|
||||
@@ -263,7 +264,7 @@ static int iscsi_sw_tcp_xmit(struct iscsi_conn *conn)
|
||||
int rc = 0;
|
||||
|
||||
while (1) {
|
||||
rc = iscsi_sw_tcp_xmit_segment(tcp_sw_conn, segment);
|
||||
rc = iscsi_sw_tcp_xmit_segment(tcp_conn, segment);
|
||||
if (rc < 0) {
|
||||
rc = ISCSI_ERR_XMIT_FAILED;
|
||||
goto error;
|
||||
|
Reference in New Issue
Block a user