W5500 UDP Packets bigger than 1257 lost
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5500 UDP Packets bigger than 1257 lost
by Eugeny ·
Not familiar with the library, found this, I would start looking into the library and putting diagnostic output after each operation or register access to identify what is going on.
RE: RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
Thanks Eugeny,
I think i’ll have to do that… yet I don’t know how to do it… you mean put a serial output in the library parts that are of interest?
I did some further research and found a very strange behaviour and another issue that I’ll have to attend to and seek help.
Last one is that the controller only recognises broadcast packets that are send to 255.255.255.255 in IP (Multicast!?), dedicated messages to the specific IP do not get through. Are there any options in the code that I have to attend to, to get the direct messaging to work? In the datasheet it seems that this issue shouldn’t be there because i use standard udp.begin() which semas to set the registers correctly.
The other strange thing I noticed is that the controller is “picky” from which tools/programms/games the large messages come from. A packet sent from the Microsoft UDP sender/receiver tool with size of 1472 can be seen in Wireshark AND is recognised by the controller! BUT a package of the same Size commming from the game F1 22 (EA) is not recognised? How’s that possible? I’ll attach the Wireshark readings below…
Regards!
S.
RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
WIreshark output from Microsoft UDP Tool Package with 1472byte of Data:
RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
WIreshark output from F1 22 Package with 1472byte of Data:
RE: W5500 UDP Packets bigger than 1257 lost
by Eugeny ·
Can you please attach data in Wireshark format.
What is the RX buffer size? If W5500 receives packet, and next packet arrives which has data larger than remaining RX buffer space, then this next packet will be discarded - you will not get it into the buffer because there’s simply no space. How does your code free the RX buffer? I do not see
parsePacket()getting data out of there.RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
Hi Eugeny,
What do you mean by Wireshark format? *.pcapng?
I didn’t change the size right now but already expermiented with that - no effect. As far as I know the basic size is 2kb per socket, 8 sockets, 16kb altogether.
found this in the code:
It seems tha even not all of the packages that i send manually are recognised by the controller, yet Wireshark sees them.
What can I do to give you a better insight? Want the code?
RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
The Data itself is processed by udp.read() but only if there is something in it. But all of this is standard Ethernet2 library:
RE: W5500 UDP Packets bigger than 1257 lost
by Eugeny ·
Does your compilator allow omitting arguments? What is the value of
peekwhenrecv_data_processing()is called?RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
You are right, the nr. of parameters from call and function don’t add up. Yet there’s no warning concerning that. Should I worry?
The peek output just before the if statement is and always stays “0”. Which means the pointer+length is calculated and written in the register, right? Btw. peek is initialized in the header file as “0”.
RE: W5500 UDP Packets bigger than 1257 lost
by Eugeny ·
If it is normal under programming language specification then someone changing default value will make application inoperable.
This was my question - is it always calculated and target register updated? Can you please ensure everything is defined explicitly (e.g. value of this
peek).RE: W5500 UDP Packets bigger than 1257 lost
by sisvpfis ·
Hey Eugeny,
as far as I kept on reading I found out, that it may be possible that I can’t pickup the contents of the buffer fast enough to ensure to get every packet. Despite the ESP32 ist pretty fast compared to e.g. an AtMega32U4. But what i’m still wondering about is the fact that only these big packages seem to be the problem yet they are sent at the same rate!?
So still struggling with this issue. The rest works really well for my purposes I think, if could sort out that size matter even If I didn’t catch every single packet it would still be great. therefore I was experimenting with the sending frequency of the data… (can be set to 10/20/30/60Hz). Sending only in 10Hz didn’t help either - the big ones are still gone.
“peek” as i said is defined as “uint8_t peek = 0” in the header. I found no other operation that is altering peek whatsoever.
Concering the parameters given for recv_data_processing function I investigated if there’s any other function to call with the right ammount of arguments… couldn’t find anything else but the already shown funtionality.