
On 8/7/24 22:44, Tom Rini wrote:
On Wed, Aug 07, 2024 at 07:11:44PM +0200, Jerome Forissier wrote:
This is a rework of a patch series by Maxim Uvarov: "net/lwip: add lwip library for the network stack" [1]. The goal is to introduce the lwIP TCP/IP stack [2] [3] as an alternative to the current implementation in net/, selectable with Kconfig, and ultimately keep only lwIP if possible. Some reasons for doing so are:
- Make the support of HTTPS in the wget command easier. Javier T. and
Raymond M. (CC'd) have some additional lwIP and Mbed TLS patches to do so. With that it becomes possible to fetch and launch a distro installer such as Debian etc. using a secure, authenticated connection directly from the U-Boot shell. Several use cases:
- Authentication: prevent MITM attack (third party replacing the
binary with a different one)
- Confidentiality: prevent third parties from grabbing a copy of the
image as it is being downloaded
- Allow connection to servers that do not support plain HTTP anymore
(this is becoming more and more common on the Internet these days)
- Possibly benefit from additional features implemented in lwIP
- Less code to maintain in U-Boot
Prior to applying this series, the lwIP stack needs to be added as a Git subtree with the following command:
$ git subtree add --squash --prefix lib/lwip/lwip https://git.savannah.gnu.org/git/lwip.git STABLE-2_2_0_RELEASE
For v9, I think it would be good to do a CI run with NET_LWIP default and seeing what fails from that too. There's a few problems still leading to a lot of failures, in that case. Thanks.
See here: https://github.com/u-boot/u-boot/pull/635
I fixed a number of issues, see the commit descriptions. As for the remaining ones: - There is no http server in the CI so the wget test I added fails - tftp is super slow in QEMU (~145 KiB/s) which causes timeouts. This is for two reasons: (1) the tftp windowsize option is not supported in lwIP (while the legacy NET does support it) so the sender waits for an ACK before sending a new packet; and (2) the latency is very high due to memcpy() being incredibly slow in QEMU (I am mainly referring to the memcpy() call in tftp_write() in net/lwip/tftp.c). I measured ~20-60 ms to copy a few hundred bytes (!) and if CONFIG_USE_ARCH_MEMCPY is enabled it is slightly better but not much (~15 ms). Also it seems the QEMU networking emulation is fragmenting the UDP packets because with CONFIG_TFTP_BLOCKSIZE=1468 the tftp_write() function never receives 1468 bytes but only a few hundreds at a time (max 544 bytes). - The r2dplus_* tests fail for reasons I don't understand.
Thanks,