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.

RTOS/TMS320C6678: Working with Jumbo Frames

Part Number: TMS320C6678

Tool/software: TI-RTOS

i am working with a custom DSP board built with 4 C6678 chips and having trouble to get jumbo frame to work. 

my setup is: the DSP board plugged into a AMC chassis with MCH. and the MCH is connected to a jumbo switch with a PC. I tried to ping the DSP core through the MCH from the PC with packets bigger than 1500 i failed. The MCH is configred to do jumbo. I verified that by ping another type of board in the same chassis through the MCH with a jumbo packet. and tcpdump showed no fragmentation. so i can isolated the problem down to the DSP board. 

Another complication is that the custom DSP board itself has a board switch, and all the DSP chip level switch are connected to that board level swtich. The board vendor had sent me a procedure without ndk to verify jumbo is configured for the board switch. The procedure involved loading an image on to the DSP core to respond to ping packets. I was able to ping the DSP core with jumbo packets with no fragmentation. so I was able to verify the board switch is indeed configured to be able to do jumbo. so i can pretty much narrow the problem down to the build of ndk and pdk for c6678. 

I followed  to rebuild ndk and pdk. still no luck getting ping of jumbo packet to work. 

i am using   ndk_2_25_01_11 and  pdk_C6678_1_1_2_6.

does the version of the ndk matter? and have anyone actually gotten jumbo packet to work with ndk? and is there any additonal procedures required to make jumbo work? thanks. 

  • The team is notified. They will post their feedback directly here.

    BR
    Tsvetolin Shulev
  • Hi,

    The jumbo packet test was done using the:
    BIOS_MCSDK_2_1_2_6
    NDK_2_21_01_38
    pdk_C6678_1_1_2_6
    Bios_6_33_06_50
    xdias_7_21_01_07
    xdctools_3_23_04_60
    Compiler c6000_7.4.4

    So the NDK version is different from yours. The ndk_2_25_01_11 is expected to work, but was not tested. Can you try that NDK version and follow the steps to see if that works?

    Regards, Eric
  • Hi lding,
    yes, i will try the package versions you specified. thanks.
  • while i am trying the older version of ndk, can you try the test with the new version of package? There is all sorts dependency issue with trying NDK_2_21_01_38 because its too old.
  • ndk_2_21_01_38 didn't work with the current version of the ccs(ccsv7). so i tried ndk_2_21_02_43, jumbo packet ping didnt work.
    i pinged with "ping -s 1472 172.31.16.80" , it worked. and tried ping with ip packet size of 1501 (ping -s 1473), and didn't get any response.
  • Hi,

    When you do this ping test, do you use any NIMU driver example like NIMU_emacExample_EVMC6678C66BiosExampleProject from Processor SDK RTOS or still some package from PDK 1.1.2.6?

    We just knew an issue in the K2H NIMU driver, ping failed on 1500 bytes of packets. In the K2H, nimu_eth.c, we changed

    From:
    if (Init_Cpsw ((uint32_t) ptr_device->mtu, ptr_pvt_data->pdi.bMacAddr) != 0)

    To:
    if (Init_Cpsw ((uint32_t) (ptr_device->mtu + ETHHDR_SIZE + 4U), ptr_pvt_data->pdi.bMacAddr) != 0)

    With this change we were about to ping with >1500 bytes packets (without jumbo support, the packets are fragmented as expected). Without this change, ping has no response for >1500 bytes packets. Maybe the same fix also apply to the C6678 as well as this is the CPSW setup MTU size code.

    At least you can check the nimu driver you have if this problem exists and fix it. Then you should be able to ping (see fragmented packet response) then work further for jumbo support.

    Regards, Eric
  • hey eric,
    I found where the problem is after a week working on this issue.
    Turns out, after rebuilding the PDK for jumbo as mentioned in the wiki,
    the project output (nimu_eth_evmc6678l.lib) are saved in /pdk_C6678_1_1_2_6/packages/ti/transport/ndk/nimu/Debug or /Release,
    the output needs to be moved to /opt/local/ti/pdk_C6678_1_1_2_6/packages/ti/transport/ndk/nimu/lib/debug or /release and the name of the library needs to be changed to "ti.transport.ndk.nimu.ae66"

    in other words, there is a step missing in the wiki i mentioned in the post.
  • Hi,

    Thanks for finding this out! Sorry for the issue in the documentation! The MCSDK (PDK 1.1.2.6) is obsolete and I checked the Processor SDK RTOS for C6678, the NIMU library is built by makefile and output is under pdk_c667x_2_0_x\packages\ti\transport\ndk\nimu\lib\c6678\c66\release or debug, and the name is ti.transport.ndk.nimu.ae66. The re-built library will be linked into the application correctly without issue.

    Regards, Eric