W5100 UDP packet size limit 1500


#1

I am working with a w5100 chip and hitting a 1500 byte limit. Once I send data above (1500-20-8) the 1472 byte limit, all communication fails to be received. I believe it is due to a const buffer for the MTU hardcoded default but I need to enlarge it to a JUMBO sized MTU of around 9k.

Where can I start looking to change this value?
I am working with the Arduino IDE, and
W5100.cpp
Ethernet.cpp
EthernetUDP.cpp

We are working on using your product in our new company project.

Current proof of concept test bed, Arduino due and a adruino Ethernet shield version1 with w5100 chip, connected to a computer to read the UDP stream. Before we tackle the DSP on the UDP streams.


#2

Hello,

There is no way to receive data larger than 1472 bytes in UDP communication with W5100.
The sender must transmit data in 1472 bytes or less.


#3

What ethernet or wifi chip can be purchased to support transfers above 1472 bytes?

what would you recommend for purchase to transmit Jumbo packets 4k to 8k in size.


#4

You can implement your own UDP handling using IPRAW mode of the W5100. Will be slower that built-in UDP stack, but max buffer size of the single socket can be up to 8KB, thus the maximal packet it can receive at once. However you should be fast enough to remove data from the RX buffer to free buffer space for next incoming packet.

If you need 9KB packet then W5100 will physically be unable to receive it properly under any circumstances.

Can you reconsider your requirements?


#5

that should be more than enough, really the packets being sent looked like 6k packets when i looked at the numbers.

now i just need to looking into a guide for ipraw. i understand the concept but need to look over the guide and find the commands for accessing the w5100 through ipraw


#6

alright so the guide is in the data sheet, just need to read over and test now.


#7

When designing driver for handling of such bug packets ensure you remove them as soon as possible from RX buffer because if there is no space for UDP packet (or just IP packet) in the buffer, packet will just be discarded, and it will be ither lost completely or you will have to request it again using some custom data flow protocol. Use TCP instead!