NDIS 6.5 Offload checksum : Status indication problem to NDIS when TCPRXCHECKSUMOFFLOAD enabled. RRS feed

  • Question

  • Test Category : NDIS 6.5

    1. Test Name : Offload Checksum
    2. I am working on NDIS miniport driver for a 10G adapter which is causing an issue in receive path. Details mentioned as following.

      TCPRxChecksum Offload is enabled for the 10G adapter. OffloadChecksum HCK test is run which is throwing following errors.

      1)For non fragmentd packet: Tcp Module expected to get 30 packets, but only accepted 0;The miniport is expected to report 30 packets with correct checksum, but only gets 0;

      2)For fragmentd packet: Tcp Module expected to get 30 packets, but only accepted 0;Tcp module expects to receive 30 packets with no offload indications, but it gets 0

      I am doing the following in the miniport driver during the receive path of a packet.

      Driver is indicating the following status to NDIS.
      1)With in OOB data, fields inside NDIS_TCP_IP_CHECKSUM_PACKET_INFO structure are filled appropriately.
      2)In NetBufferList status, NDIS_STATUS_SUCCESS is indicated always.

      Following is the procedure followed for a non-fragmented packet:

      1)Driver is indicating the checksum status(Tcpchecksumsuccess or tcpchecksumfailure) to NDIS with in OOB data and NDIS_STATUS_SUCCESS in NetBufferList status. But the NDIS is not accepting the packet that it is recieving.

      Following is the procedure followed for a fragmented packet:

      2)Driver is not setting Tcpchecksumsuccess or tcpchecksumfailure status in OOB data. NetBufferList status is indicated with NDIS_STATUS_SUCCESS.

      Inspite of doing this, HCK is throwing errors. What is that NDIS is expecting in the above two cases for the HCK to pass.

      Pseduo code:
      1)Check packet is ipv4 or not.
      2)Check packet is fragmented or not.
      3)If the packet is not fragmented check is tcprxchecksumofflaod enabled or not.
        3.1)After that update tcpchecksumsucceded or tcpchecksumfailed based on the verification.
        3.2)Update Netbuffer List to NDIS_STATUS_SUCCESS.
      5)If the packet is fragmented Update Netbuffer List to NDIS_STATUS_SUCCESS(Dont update the checksum information).

    Thursday, March 12, 2015 2:20 PM

All replies

  • Hi Liquidio,

    Please disable all the unused ports of the adapter and please make sure that ports are connected back to back. First run, Checkconnectivity and CheckConfig test to verify that setup is fine.



    Monday, March 16, 2015 4:36 AM
  • Hi Mudit,

    Thanks for your replay. I checked the NDIS6.5 Checkconnectivity and Checkconfig these tests were passed. The above Same logic I applied for L3 Check-sum,  then all variations were passed. But only the TCP/UDP packets only NDIS is not accepting. I put the wire-shark on both sides the packets were same i.e integrity is fine. 




    Monday, March 16, 2015 10:36 AM