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.

Inconsistent behaviour is observed while receiving network traffic in C6670 EVM

Dear TI,

I used PA EMAC example code for receiving UDP data from network. But the example code is inconsistent, in the code it is expected to give an interrupt on receiving data from network. And this interrupt is not being raised even though ALE is listening (MAC address of the UDP sender is getting printed) on the senders MAC address.

I'm using iperf client to pump UDP data. I made arp entry with the board IP address and Gbe port 0 MAC address. Accordingly changed the Loopback mode to NONE and configured the PA dest MAC address to Gbe Port 0 and dest IP address to the board IP address in PA EMAC example code.

This code base sometimes works and sometimes does not work. Then I took fresh code from the example directory and did the changes it started working. Dont know why it was not working before with the same configuration.

I noticed same inconsistent behaviour with polling mode from PA to Host. I took Multicore sample project and modified it to receive UDP data from the network. Initially there was some problem in receiving the packet, when i kept the break point in the verify packet function it started hitting the break point and UPD traffic is received from the network. The same code base is not working now, there are no code changes done.

Is there any timing issue or cache issue for this inconsistent behaviour?

How can I avoid or solve this inconsistent behavior while receiving data from network using NETCP?

 

  • Hi Divya, 

    You said you changed the board IP address to the board IP address in the PA EMAC example code. Is that the same address as the board you want to send the packets to? It is possible that when you redid the code you changed the IP address of the board you are using to the IP address of the example code. 

    Now the last part of your question, the "when i kept the break point in the verify packet function it started hitting the break point and UDP traffic is received from the network. The same code base is not working now, there are no code changes done" part. What line does it stop on that allows the packets to flow? If it's just opening the channel and the packets start flowing, then that makes sense. The channel could either be closing or is not properly receiving the descriptors it needs to properly process the packets on the RX end. Check the RX FDQ to see if it is being given enough descriptors to run just in case. 


    Kat 

  • Hi Kat,

    Yes Im using the the same IP address which i want to send the UDP data. Im not using the IP address in the example code.

    Board IP: 10.45.0.12

    Iperf Client PC IP: 10.45.0.6

    And I kept break point in verify packet at below given conditional check.

    • if (pHostDesc->softwareInfo0 != 0xaaaaaaaa)

    I will check the FDQ size and try to validate it once.

    Thanks,

    R. Divya.

  • Hi,

    please note that the NIMU driver currently doesn't care about the prefetch buffer. I'm not sure if TI is going to fix this problem:
    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/214649/762847.aspx#762847

    This can cause the DSP to read invalid packet data. Maybe this is also causing your problems.

    Ralf