[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