[PATCH v7 00/20] Introduce the lwIP network stack

Simon Glass sjg at chromium.org
Tue Aug 6 23:51:39 CEST 2024


Hi Tom,

On Tue, 6 Aug 2024 at 15:19, Tom Rini <trini at konsulko.com> wrote:
>
> On Tue, Aug 06, 2024 at 03:12:47PM -0600, Simon Glass wrote:
> > Hi Tom,
> >
> > On Fri, 2 Aug 2024 at 12:32, Tom Rini <trini at konsulko.com> wrote:
> > >
> > > On Fri, Aug 02, 2024 at 06:26:27PM +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
> > >
> > > On Pi 3 I'm again / still seeing:
> > > ========================================== FAILURES ===========================================
> > > ___________________________________ test_efi_helloworld_net ___________________________________
> > > test/py/tests/test_efi_loader.py:163: in test_efi_helloworld_net
> > >     assert expected_text in output
> > > E   AssertionError: assert 'Hello, world' in 'No UEFI binary known at 200000'
> > > ------------------------------------ Captured stdout call -------------------------------------
> > > U-Boot> tftpboot 200000 EFI/arm64/helloworld.efi
> > > Using smsc95xx_eth device
> > > TFTP from server 192.168.1.10; our IP address is 192.168.1.100
> > > Filename 'EFI/arm64/helloworld.efi'.
> > > Load address: 0x200000
> > > Loading: #
> > >          883.8 KiB/s
> > > done
> > > Bytes transferred = 4528 (11b0 hex)
> > > U-Boot> U-Boot> crc32 200000 $filesize
> > > crc32 for 00200000 ... 002011af ==> 2b466005
> > > U-Boot> U-Boot> bootefi 200000
> > > No UEFI binary known at 200000
> > > U-Boot>
> > > =================================== short test summary info ===================================
> > >
> > > On a configuration that works fine with the legacy network stack.
> >
> > BTW the "No UEFI binary known at 200000" is that hack that I would
> > really like to improve on, by updating bootstd to keep track of which
> > images are loaded.
>
> I don't know, if I think about this I get worried that "bootFOO
> $address" needs to know something more than "look at $address and check
> if it's valid".

Yes, that is the problem with EFI loader at the moment. But basically
it just wants to know what device the file came from, which we can
(over time) clean up so that it is part of bootstd and uses proper
APIs. Random loads within scripts are perhaps another matter...

Regards,
Simon


More information about the U-Boot mailing list