[PATCH v5 00/11] net: tcp: improve tcp support
Mikhail Kshevetskiy
mikhail.kshevetskiy at iopsys.eu
Sat Aug 24 11:27:05 CEST 2024
U-Boot support of LWIP is not ready for a moment, but we already have
some kind of tcp support. Unfrotunately this support is really bad.
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 selectiv 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.
This series of patches fixes all of the above issuess.
The benefits:
* A lot of bug was fixed
* Better and more reliable TCP state machine
* Tcp cliens becomes smaller/simpler
* Data uploading was fixed (now it's possible to transmit a huge amount of
data from the board to remote host)
* Netcat over tcp was implemented. Netcat supports data downloading/uploading
from/to remote host in client/server mode.
* An example web-server implementation. This code can be used as a base
for web-based firmware uploading used by some vendors.
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
* codestyle fixes
Changes v5:
* old patches were ocasionally sent with v4
* add back web-server patches
* fix bug in debug output
* add more comments
* codestyle fixes
Mikhail Kshevetskiy (11):
net/tcp: fix TCP options processing
net/tcp: fix selective acknowledge
net/tcp: put connection specific data into a tcp_stream structure
net/tcp: add connection info to tcp_stream structure
net/tcp: rename ack_edge and seq_init to more common rcv_nxt and irs
net/tcp: improve tcp framework, use better state machine
net/tcp: simplify tcp header filling code
net/tcp: define a fallback value for rcv_wnd size
net/netcat: add netcat over tcp support
net/httpd: add httpd common code
net/httpd-upload: an example web-server implementation for file
uploading
cmd/Kconfig | 21 +
cmd/net.c | 54 +-
include/net.h | 7 +-
include/net/httpd-upload.h | 12 +
include/net/httpd.h | 64 ++
include/net/netcat.h | 20 +
include/net/tcp.h | 235 +++++-
include/net/wget.h | 8 -
net/Kconfig | 14 +
net/Makefile | 21 +
net/fastboot_tcp.c | 190 ++---
net/httpd-upload.c | 123 +++
net/httpd.c | 692 +++++++++++++++++
net/httpd_upload/error_400.html | 9 +
net/httpd_upload/error_404.html | 10 +
net/httpd_upload/index.html | 14 +
net/httpd_upload/upload_ok.html | 7 +
net/net.c | 36 +-
net/netcat.c | 181 +++++
net/tcp.c | 1259 ++++++++++++++++++++++---------
net/wget.c | 479 ++++--------
21 files changed, 2582 insertions(+), 874 deletions(-)
create mode 100644 include/net/httpd-upload.h
create mode 100644 include/net/httpd.h
create mode 100644 include/net/netcat.h
create mode 100644 net/httpd-upload.c
create mode 100644 net/httpd.c
create mode 100644 net/httpd_upload/error_400.html
create mode 100644 net/httpd_upload/error_404.html
create mode 100644 net/httpd_upload/index.html
create mode 100644 net/httpd_upload/upload_ok.html
create mode 100644 net/netcat.c
--
2.43.0
More information about the U-Boot
mailing list