I’ve used the W5200 before, and I’m switching to the W5300 to get higher throughput with the parallel data interface.
On the W5200, I could not write to a buffer while a SEND operation was in progress, so it limited my total speed because I could not fill up a second buffer while the first buffer was being sent. I just had to wait.
On the W5300, is it limited to 50Mbps because of the same issue? Is it possible to use multiple sockets like this:
Fill socket 1 TX buffer
Issue SEND command on socket 1
Fill socket 2 TX buffer (before socket 1 SEND command is done)
Wait for socket 1 SEND to complete
Issue socket 2 SEND command
Fill another buffer
Wait for socket 2 SEND to complete
etc.
If that will not work, is there any method to write during an ongoing SEND operation, in order to maximize the network utilization? I’m using an FPGA interface, and using the parallel bus, I should be able to write data to the W5300 FIFOs at over 130Mbps. I would like to get as much actual application data throughput as possible.
Thank you for responding. I understand that all sockets share the same 100Mbit Ethernet connection. The question I’m asking is:
Can I write to a TX FIFO after I initiate a SEND operation, but before it completes?
If I can write to a FIFO during a SEND, then I can use more of the available 100Mbit bandwidth because I can buffer additional data during a SEND, and then do another SEND as soon as the first one completes.
If I cannot write to a FIFO during a SEND, then I’m thinking the physical Ethernet transmitter is always going to be idle while I’m writing to a TX FIFO. My goal is to avoid this idle time to maximize available bandwidth.
I tested sending data over only one socket, and with two or more sockets. For two or more sockets, the FPGA starts sending data on one socket, and then fills a TX buffer of another socket before the send is complete. The maximum throughputs were:
one socket: about 43Mbps
two or more sockets: often near 80Mbps, but varied between 48Mbps and 90Mbps
I know that the theoretical max should be < 80Mbps with TCP, so I’m not sure if there are some timing issues that are causing it to show over 80Mbps sometimes. Also, I have not yet validated that I am getting the correct data. At least the initial indication shows that the W5300 may be getting very close to the theoretical maximum speed over a 100Mbps connection when using multiple sockets.
As a quick follow up, I fixed one bug, and I also realized that 100Mbit signaling rate is 125M, not 100M, so with the 4B5 coding, you can actually get 100Mbps minus TCP overhead.
Now the W5300 is showing a pretty regular 94Mbps application data throughput when sending data over 4 sockets. Very nice!