Hi Mikhail, On Sat, 24 Aug 2024 at 11:27, Mikhail Kshevetskiy <mikhail.kshevets...@iopsys.eu> wrote: > > Changes: > * Fix initial send sequence always zero issue > * Use state machine close to RFC 9293. This should make TCP > transfers more reliable (now we can upload a huge array > of data from the board to external server) > * Improve TCP framework a lot. This should make tcp client > code much more simple. > * rewrite wget with new tcp stack > * rewrite fastboot_tcp with new tcp stack > > It's quite hard to fix the initial send sequence (ISS) issue > with the separate patch. A naive attempt to fix an issue > inside the tcp_set_tcp_header() function will break tcp packet > retransmit logic in wget and other clients. > > Example: > Wget stores tcp_seq_num value before tcp_set_tcp_header() will > be called and (on failure) retransmit the packet with the stored > tcp_seq_num value. Thus: > * the same ISS must allways be used (current case) > * or tcp clients needs to generate a proper ISS when > required. > > A proper ISS fix will require a big redesing comparable with > a this one. > > Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevets...@iopsys.eu> > --- > include/net/tcp.h | 179 ++++++++-- > include/net/wget.h | 8 - > net/fastboot_tcp.c | 190 +++++----- > net/net.c | 4 + > net/tcp.c | 845 ++++++++++++++++++++++++++++++++++----------- > net/wget.c | 460 +++++++----------------- > 6 files changed, 1008 insertions(+), 678 deletions(-) >
Reviewed-by: Simon Glass <s...@chromium.org> I see quite a lot of extra brackets and comparisons against NULL / 0 / '\0', BTW Regards, Simon