[U-Boot] [PATCH 0/3] Defragment IP packets
Alessandro Rubini
rubini-list at gnudd.com
Thu Jul 30 11:02:44 CEST 2009
This patch-set implements the defragment code. PAtch 3 is just for me,
to enable it. It may also be a good thing to have, so people can look
for actual users and find one. If needed, I'll add another patch for
documentation.
I've done as RFC815 says although an unlikely insane fragment is not handled
(see code and patch comment).
Robin's suggestions have been include by two:
- ports are not checked (tftp code doesn't check either), only ID
- the ckeck is done in an inline function, not in the main function:
I agree call/ret is worse than if, but there is no call here.
(I split the function in two to make it clear, but it's most
likely not even needed).
Ben asked:
1. Configurable block size (via a well-named CONFIG).
Choose a good default value.
Done. The default is as before, as our polling ether may discard pacjets
if the burst is too fast. Mine receives only 4-5 fragments, so 8192
is not viable for me (4k works quite good). I suspect some may just cache
1 packet, so even two fragments won't work for them, thus the unchanged
default.
2. Handle out-of-order fragments, and some test results
showing that it works.
This the end of a transfer with 4096 block size:
frag 1480 - 1480
frag 0 - 1480
frag 2960 - 1148
---- done, len 4108
frag 2960 - 1148
frag 0 - 1480
frag 1480 - 1480
---- done, len 4108
frag 1480 - 1480
frag 0 - 1480
frag 2960 - 1148
---- done, len 4108
frag 0 - 1480
frag 1480 - 664
---- done, len 2144
The image, written over zeroed memory, crc'd and booted correctly.
Then I removed the prints.
3. Make the feature configurable
CONFIG_IP_DEFRAG
4. Test with a TFTP server that doesn't have blksize feature enabled
Done. Actually, my code is not called in this case.
/alessandro
Alessandro Rubini (3):
net: defragment IP packets
tftp: get the tftp block size from config file and from the environment
arm nomadik: select defrag and 4k tftp block size
include/configs/nhk8815.h | 3 +
net/net.c | 172 +++++++++++++++++++++++++++++++++++++++++++--
net/tftp.c | 13 +++-
3 files changed, 181 insertions(+), 7 deletions(-)
More information about the U-Boot
mailing list