
On Mon, 9 Sept 2024 at 16:27, Mikhail Kshevetskiy mikhail.kshevetskiy@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.kshevetskiy@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 sjg@chromium.org
Yes, I understand this cannot really be split up...