Hi Anatoly,

>Index: ulp/ipoib/kernel/ipoib_port.c
>===================================================================
>--- ulp/ipoib/kernel/ipoib_port.c      (revision 1521)
>+++ ulp/ipoib/kernel/ipoib_port.c  (working copy)
>@@ -2582,8 +2582,17 @@
>          }
>
>          /* Get the checksums directly from packet information. */
>+       if ( !p_port->p_adapter->params.recv_chksum_offload )

This should never be true for MTHCA.  Did you check to make sure that MTHCA 
sets the ipoib_csum field of the ib_ca_attr_t to FALSE?  I suspect that is the 
true bug fix.

What you're doing here is telling NDIS that the checksum succeeded, when it may 
not have.  NDIS shouldn't be asking IPoIB to do receive checksum offload for 
MTHCA.

>+       {
>+                 p_desc->ndis_csum.Value = 0;
>+p_desc->ndis_csum.Receive.NdisPacketTcpChecksumSucceeded = TRUE;
>+p_desc->ndis_csum.Receive.NdisPacketUdpChecksumSucceeded = TRUE;
>+p_desc->ndis_csum.Receive.NdisPacketIpChecksumSucceeded = TRUE;
>+       }
>+

Note also that you are discarding the results of the checksum calculation when 
running with the MLX4 driver, and always indicating successful calculation.

>          NDIS_PER_PACKET_INFO_FROM_PACKET( *pp_packet,
>TcpIpChecksumPacketInfo ) =
>                    (PVOID) (uintn_t) (p_desc->ndis_csum.Value);
>+
>          ipoib_inc_recv_stat( p_port->p_adapter, type, p_desc->len );
>
>          IPOIB_EXIT( IPOIB_DBG_RECV );
_______________________________________________
ofw mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ofw

Reply via email to