I am building an application that receives a udp stream with RTP data payload. I am on a private network with just the EVM dm648 and my workstation. I am using NDK ndk_2_20_06_35 with the NIMU compliant hal libraries released with NDK2.00.The UDP packets are streamed from my workstation via VLC media player. I am streaming a 10mbps clip 720x480 MPEG2 clip.
The issue I am facing is that when the UDP packets received in my application are parsed for the RTP payload sequence numbers, a packet drop is reported(some packet sequence number missing). This meant that some packets are dropped (50 packets of every 40000 received packets). Wireshark does not report any loss of packets on the network. To debug the issue further i did the following
To debug this further started using the benchmark udp testee application (ndk_2_0_0\packages\ti\ndk\benchmarks\copyUDP\testee\dm648) and added the print of the "RXSOFOVERRUNS" register at the end of the application. The here also is set as a non-zero value.
The question I have is
I am not working on NDK but these are some generic queries/suggestions which you can verify if not already done.
What is the UDP packet size? Are you sending packets with size greater than MTU/payload?
If so, can you try sending packets lesser than MTU size & check.
Also can you check with client example & testudp as suggested below-
Also how are you increasing socket buffer size? Using setsockopt()? You can refer to the below link if required-
If my reply answers your question then please click on the "Verify Answer" button.
Thanks for your reply. Please find he answers to your query as below
I am not familiar with the NDK, but I am familiar with the cpsw3g module.What you are describing would make me think that you are exceeding one or more of the FIFO capacity.I would check that flow control is enabled. Is 'cpsw3g_SetSwitchFlowControl' invoked at all?
Flow control is especially important between the switch and the host port.
After adding the call to 'cpsw3g_SetSwitchFlowControl' in my API unfortunately the packet drops are still present. I am not sure if I am missing something configuration because even after calling this API the CPSW register 'TXPAUSEFRAMES' is being read as zero. I am receiving on port 1 my setting for that port are as below
Port 2 FIFO setting are as below
The CPSW_CONTROL register reads a 274.
My the P1 flow control enabled ?
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.