[PATCH v8 00/23] Introduce the lwIP network stack

Tom Rini trini at konsulko.com
Fri Aug 16 20:40:19 CEST 2024


On Fri, Aug 16, 2024 at 06:21:24PM +0200, Jerome Forissier wrote:
> 
> 
> 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

Ah yes. So the test needs some enable-me type flag, like other tests
that require external configuration.

> - 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).

I thought you fixed that? Or was that only for on real hardware?

But also, some of those numbers sound unusually terrible to me. We can
get some bad luck with the free instances, but, still.  Are you sure
there's nothing else going on?

> - The r2dplus_* tests fail for reasons I don't understand.

Consistently, too?

-- 
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/20240816/b3ed067b/attachment.sig>


More information about the U-Boot mailing list