[PATCH v14 00/10] net: tcp: improve tcp support in legacy stack

Tom Rini trini at konsulko.com
Wed Dec 11 16:17:16 CET 2024


On Wed, Dec 04, 2024 at 02:00:39AM +0300, Mikhail Kshevetskiy wrote:

> Legacy TCP stack is bad. Here are some of the known issues:
>  * tcp packet from other connection can break a current one
>  * tcp send sequence always starts from zero
>  * bad tcp options processing
>  * strange assumptions on packet size for selective acknowledge
>  * tcp interface assumes one of the two scenarios:
>      - data downloading from remote host to a board
>      - request-response exchange with a small packets
>    so it's not possible to upload large amount of data from the
>    board to remote host.
>  * wget test generate bad tcp stream, test should fail but it passes instead
> 
> This series of patches fixes all of the above issues.
> 
> The benefits:
>  * A lot of bug was fixed
>  * Better and more reliable TCP state machine
>  * Tcp clients becomes smaller/simpler
>  * Data uploading was fixed (now it's possible to transmit a huge amount of
>    data from the board to remote host)
> 
> Modification was verified with
>  * firmware downloading via u-boot wget command
>  * fastboot over tcp
>  * netcat linux client
>  * Firefox/Chrome/Edge using example web-server implementation
> 
> Changes v2:
>  * cover letter was added
>  * some patches were removed
> 
> Changes v3:
>  * better cover letter
> 
> Changes v4:
>  * fix bug in debug output
>  * add more comments
>  * code style fixes
> 
> Changes v5:
>  * old patches were occasionally sent with v4
>  * add back web-server patches
>  * fix bug in debug output
>  * add more comments
>  * code style fixes
> 
> Changes v6:
>  * fix the wget test
>  * improve description of "simplify tcp header filling code" patch
> 
> Changes v7:
>  * fix include ordering
>  * improve option descriptions
>  * fix a lot of extra brackets and comparisons against NULL / 0
>  * add empty lines before final returns
>  * fixed a bug with zero size httpd uploads
> 
> Changes v8:
>  * [tcp] add function to restart rx inactivity timeout. This may help
>         in the cases where remote peer waits for u-boot data, but u-boot
>         is busy with long executing action
>  * [httpd] add function returning underlying tcp stream from request id.
>         This (with the above change) allows avoid connection break
>         for the long processing post requests.
> 
> Changes v9:
>  * rebase all changes on top of origin/next
>  * update test/cmd/wget patch description (bad tcp ack/seq issue was already
>    fixed in origin/next)
>  * tcp: add rx/tx packet counters to a tcp_stream structure
>  * wget: use tcp rx packet counter instead of own one
>  * netcat: use tcp rx/tx packet counters instead of own one
> 
> Changes v10:
>  * netcat: fix bug appeared after rx/tx packet counter addition
>  * rebased on top of v2024.10
> 
> Changes v11:
>  * fix spelling in cover letter
> 
> Changes v12:
>  * rebase on top of master branch (3df6145db0e)
>  * slightly change tcp->rx() & tcp->tx() callback declarations, this
>    allow us to terminate a connection if something goes wrong in rx/tx paths.
>  * set net_boot_file_size variable in httpd_upload
>  * set filesize env variable to a proper value netcat and httpd_upload
> 
> Changes v13:
>  * rebase on top of master branch (8573ea41058)
>  * remove netcat support
>  * remove example httpd server implementation
> 
> Changes v14:
>  * fix issues found by github CI

Sorry, I waited too long applying this to -next. There were a few merge
problems. I got as far as CI *almost* passing, when also applying
https://patchwork.ozlabs.org/project/uboot/list/?series=435653&state=*
to fix "bootefi hello" tests. But I could not get
lib/efi_selftest/efi_selftest_http.c to pass still:
https://source.denx.de/u-boot/u-boot/-/jobs/972270#L360

Can you rebase one last time please? I'll apply it to next once it's
posted so we don't have to do this again, thanks.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20241211/0a0293df/attachment.sig>


More information about the U-Boot mailing list