[PATCH v6 06/12] net/tcp: improve tcp framework, use better state machine
Simon Glass
sjg at chromium.org
Thu Sep 12 02:59:51 CEST 2024
On Mon, 9 Sept 2024 at 16:27, Mikhail Kshevetskiy
<mikhail.kshevetskiy at 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 at 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 at chromium.org>
Yes, I understand this cannot really be split up...
More information about the U-Boot
mailing list