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.

Jumbo send/recv c6678

Hello.

Necessary to implement the exchange of jumbo(8192) packets between two boards TMDSEVM6678L.
Code Composer Studio Version: 5.5.0.00077
SYS/BIOS 6.33.06.50
XDCtools 3.25.03.72
NDK 2.21.02.43
BIOS MCSDK 02.01.02.06
To implement this feature has been viewed Forum TI and the following documents spru523h.pdf and spru524h.pdf. If the forum who then turned to implement jumbo, the final post about what exactly was done not. As a result, and there is no solution. The document spru23h.pdf contains a chapter "Sending and Receiving UDP Datagrams over MTU size". In accordance with the instructions in this chapter have been modified source files library NDK. Also in file ndk_2_21_02_43\packages\ti\ndk\stack\package.bld added support for Jumbo. Next, NDK library was compiled in accordance with the instructions "Rebuilding The NDK Core Using Gmake" (gmake -f ndk.mak). Next, projects for sending and receiving data over UDP have been recompiled with the modified library NDK with option _INCLUDE_JUMBOFRAME_SUPPORT. On the part of transmitter command send() returns an error code #define ENOBUFS 55 // No buffer space available. Next, I used the instructions for setting buffers "NDK Static Network Buffers". Error 55 is missing, but the data on the receiving side do not come. Also interested the question initialization section of memory .far:NDK_JMMBUFFER from file ndk_2_21_02_43\packages\ti\ndk\stack\pbm\jumbo_pbm.c in settings .cfg. Projects are attached.

jumbo.rar

  • Add: I used the instructions for setting buffers "NDK Static Network Buffers". After that, there was an error #define EMSGSIZE 40 // Message too long

    Thanks
  • Have you referred the below e2e link for enabling the jumbo packet support?
    e2e.ti.com/.../1389795

    Thanks,
  • Hello Ganapathi

    Yes, I saw this post. The file pdk_C6678_1_1_2_6\packages\ti\transport\ndk\nimu\src\nimu_eth.c have the following code:

    /* Allocate the PBM packet for the Max MTU size*/
    if (NULL == (hPkt = PBM_alloc(1514))) {
        /* could not get a free NDK packet, maybe the next time around we can... */
        gRxDropCounter++;
        pHostDesc->buffLen = pHostDesc->origBufferLen;
        QMSS_QPUSH (gRxFreeQHnd, (Ptr)pHostDesc, pHostDesc->buffLen, SIZE_HOST_DESC, Qmss_Location_TAIL);
        continue;
    }

    I changed the value of 1514 to 10236. Next recompiled library NIMU and my project. After this TMDSEVM6678L is no longer responding Ping. Next I looked at the function code PBM_alloc(). She calls the mmAlloc() for packages smaller than MMALLOC_MAXSIZE and jumbo_mmAlloc() for Jumbo packets. Here like everything is correct. I note that the NDK library compiled with the option _INCLUDE_JUMBOFRAME_SUPPORT. I suspected function PBM_alloc(10236) after which disappears Ping. When returning values in 1514 board responding Ping.

  • Hi,

    Have you using Linux or windows machine for your ping testing?

    I think not problem on maximum PBM packet allocation "PBM_alloc(10236)". Keystone device Supports 9Kb jumbo packets, For more information refer below wiki link

    Before your testing, ensure that the Ethernet interface on the Linux machine is configured to handle a MTU size of 9100.

    "$sudo ifconfig eth0 mtu 9100"

    you can ping from the Linux machine with an instance of Wireshark running. You can vary the packet sizes by using the –s flag for ping.

    $ ping 192.168.0.101 -s 9050

    Thanks,