This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VH-Q1: EthFw 9.2 UDP/TCP checksum offload disabled when VEPA is enabled

Part Number: TDA4VH-Q1

Tool/software:

I've been reading through the EthFw documentation and source code to understand how it works, and I noticed that there is a configuration flag ETHFW_CPSW_MULTIHOST_CHECKSUM_ERRATA which is enabled when VEPA is enabled (via the ETHFW_CPSW_VEPA_SUPPORT config flag). In the EthFw code, ETHFW_CPSW_MULTIHOST_CHECKSUM_ERRATA seems to disable both RX and TX checksum calculation. I'm aware that in the first place the checksum offload only applies to TCP and UDP packets, but that seems to be getting disabled when the multihost bit is set.

The multihost functionality itself also seems to be barely documented outside of a brief mention in the EthFw user guide in the VEPA section. It isn't mentioned at all in the J784S4 TRM, but can be found in the J784S4 buildsheet workbook that can be found with the FreeRTOS SDK. It would be great if there could be a mention of this functionality in the TRM.

I see no errata related to the multihost functionality or the checksum offload functionality anywhere. I've looked at the J784S4 errata and the EthFw errata (either in the release notes specific to EthFw or in the release notes for the SDK as a whole). Can I get an explanation of the errata that ETHFW_CPSW_MULTIHOST_CHECKSUM_ERRATA refers to? Is this errata a software issue that could be fixed in the future, or is it a hardware issue that cannot be resolved? If VEPA is enabled (or more specifically, if the multihost bit in the ALE_CTRL2 register is set) does that mean that ALL packets being sent from ALL cores through port 0 need their checksums calculated in software (i.e. no packets can use the checksum offload), or is does the checksum offload restriction only effect frames being sent from one core to another?

  • Hi,

    Errata Documents are not updated yet.

    Register Spec has the details of MultiHost.
    It allows host traffic to be sent back to Host if the Destination Address is marked for the Host Port.

    EthFw using this feature for packet duplication instead of Inter-core virtual Ethernet shared memory based approach.
    The same was explained in EthFw User Guide.

    But, it is missed to mention check offload is not supported.

    I have reported to concerned team to update the documents.

    Best Regards,
    Sudheer

  • Register Spec has the details of MultiHost.

    Where can I find this "Register Spec"? Is this the Buildsheet excel document available with the SDK, or is there an actual PDF/HTML doc? If the latter, I haven't been able to find it. 

    A couple of my questions weren't answered:

    1. Is this errata a software issue that could be fixed in the future, or is it a hardware issue that cannot be resolved?
    2. If VEPA is enabled (or more specifically, if the multihost bit in the ALE_CTRL2 register is set) does that mean that ALL packets being sent from ALL cores through port 0 need their checksums calculated in software (i.e. no packets can use the checksum offload), or is does the checksum offload restriction only effect frames being sent from one core to another?
  • Hi,

    Where can I find this "Register Spec"? Is this the Buildsheet excel document available with the SDK, or is there an actual PDF/HTML doc? If the latter, I haven't been able to find it. 

    Register Spec can be found in TRM. It is excel file having all register details.

    Is this errata a software issue that could be fixed in the future, or is it a hardware issue that cannot be resolved?

    Its a H/W errata, can't be resolved.

    If VEPA is enabled (or more specifically, if the multihost bit in the ALE_CTRL2 register is set) does that mean that ALL packets being sent from ALL cores through port 0 need their checksums calculated in software (i.e. no packets can use the checksum offload), or is does the checksum offload restriction only effect frames being sent from one core to another?

    The restriction might be packet sent back to Host port will not have checksum enabled i.e packets from one core to other core.
    In S/W we can't differentiate whether packet is coming from internal core or external source. So, checksum offload for all packet is disabled and to be calculated in S/W.
    No packet can use checksum offload.

    Best Regards,
    Sudheer