From 62d12c34b0ffb32f15ddc66ab89a6b0b915de991 Mon Sep 17 00:00:00 2001 From: Alex Naslednikov Date: Tue, 21 Sep 2010 16:07:09 +0000 Subject: [PATCH] [[IPoIB_NDIS6_CM] LSO bug fix git-svn-id: svn://openib.tc.cornell.edu/gen1@2943 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp index 3fd3d1fe..c89bc65b 100644 --- a/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp +++ b/trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp @@ -4157,7 +4157,8 @@ __send_gen( NDIS_STATUS status; uint32_t i, j = 1; ULONG DataOffset = 0; - uint32_t offset = sizeof(eth_hdr_t); + uint32_t EthHeaderOffset = sizeof(eth_hdr_t); + static const EthIPoIBHeaderOffset = EthHeaderOffset - sizeof(ipoib_hdr_t); PERF_DECLARE( SendCopy ); @@ -4219,27 +4220,27 @@ __send_gen( ****************************/ p_desc->send_wr[0].local_ds[j].vaddr = - p_sgl->Elements[0].Address.QuadPart + lso_header_size; + p_sgl->Elements[0].Address.QuadPart + lso_header_size + DataOffset + EthIPoIBHeaderOffset; p_desc->send_wr[0].local_ds[j].length = - p_sgl->Elements[0].Length - lso_header_size; + p_sgl->Elements[0].Length - lso_header_size - DataOffset - EthIPoIBHeaderOffset; p_desc->send_wr[0].local_ds[j].lkey = s_buf->p_port->ib_mgr.lkey; /* Set the number of data segments. */ p_desc->send_wr[0].wr.num_ds = 1; return NDIS_STATUS_SUCCESS; } } - else while( offset ) + else while( EthHeaderOffset ) { - if( p_sgl->Elements[i].Length <= offset ) + if( p_sgl->Elements[i].Length <= EthHeaderOffset ) { - offset -= p_sgl->Elements[i++].Length; + EthHeaderOffset -= p_sgl->Elements[i++].Length; } else { p_desc->send_wr[0].local_ds[j].vaddr = - p_sgl->Elements[i].Address.QuadPart + offset + DataOffset; + p_sgl->Elements[i].Address.QuadPart + EthHeaderOffset + DataOffset; p_desc->send_wr[0].local_ds[j].length = - p_sgl->Elements[i].Length - offset - DataOffset; + p_sgl->Elements[i].Length - EthHeaderOffset - DataOffset; p_desc->send_wr[0].local_ds[j].lkey = s_buf->p_port->ib_mgr.lkey; i++; j++; -- 2.41.0