LSO bug fix
Signed-off by: Alexander Naslednikov (xalex at mellanox.co.il)
Index: B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
===================================================================
--- B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
(revision 5274)
+++ B:/users/xalex/MLNX_VPI_trunk/ulp/ipoib_NDIS6_CM/kernel/ipoib_port.cpp
(revision 5275)
@@ -3989,7 +3989,8 @@
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 );
@@ -4047,27 +4048,27 @@
****************************/
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++;
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw