For data transfer i use a communiction over UDP. Inside these frames a handshake protocol are used. After start frames with 60 bytes length (payload 14 Byte) transmitted. If the real data transfer started my pc sends packages with 1060 byte length(payload 1031 Byte). Many of these packages are lost. If the target don't receive a package after 400ms, it called the tester to transmit again.
In a previous question i have asked for detailed RTCS Memory configuration. My configuration:
_RTCSPCB_init = 10;
_RTCSPCB_grow = 2;
_RTCSPCB_max = 80;
_RTCS_msgpool_init = 4;
_RTCS_msgpool_grow = 2;
_RTCS_msgpool_max = 80;
_RTCS_socket_part_init = 4;
_RTCS_socket_part_grow = 2;
_RTCS_socket_part_max = 8;
_UDP_max_queue_size = 10;
_RTCSTASK_priority = 6;
The reception of frames called in a separted task: (Priority 10)
u16Len = recvfrom(eth_u32SocketHandle, ð_u8Buffer[0], eth_RX_BUFF_SIZE, 0, ð_SockAddrClient....)
if ( (u16Len != RTCS_ERROR)
&& (u16Len > 0)
)
{
// read message successful
if (u16Len > 32)
{
mqxutils_tracing_trace_timestamp("ETH rx data %d Bytes\n",u16Len);
}
}
With wireshark i can see, that the pc send the packages really fast.
From your descritption, it seems the problem is the UDP packets exceeding the MTU are lost.
I would suggest you try the following.
1 send UDP packets exceeding MTU, then check the statistics, (I rembember there is an API to see the statistics), maybe you can get the real reason, the packet is discard? or not received? For my experience, there is possibility that packet was lost due to fragmentation. We need to dig into rtcs stack for further analyzing. You can trace the incoming packet handling.
2 send TCP packets exceeding the MTU, if lost again, it means that the problem lies in IP layer. Otherwise we need to check UDP layer.
Regards
Daniel
---------------------------------------------------------------------------------------------------------------
Note: if this post answers your question, please click the correct button, thank you