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

Jerome Forissier jerome.forissier at linaro.org
Wed Aug 7 00:29:00 CEST 2024



On 8/5/24 20:20, Tom Rini wrote:
> On Mon, Aug 05, 2024 at 08:18:09PM +0200, Jerome Forissier wrote:
>>
>>
>> On 8/2/24 20:32, Tom Rini 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.
>>>
>>
>> That was caused by a missing call to efi_set_bootdev() in tftp_loop()
>> (net/lwip/tftp.c). Fixed in v8.
> 
> Thanks.
> 
>> I also fixed a similar issue with wget (net/lwip/wget.c) but I
>> noticed that the NET version of wget has the same issue:
>>
>> U-Boot> wget 200000 192.168.0.30:helloworld.efi
>> Waiting for Ethernet connection... done.
>> HTTP/1.0 200 OK
>> Packets received 13, Transfer Successful
>> Bytes transferred = 12720 (31b0 hex)
>> U-Boot> bootefi 200000
>> No UEFI binary known at 200000
>> U-Boot>
>>
>> Should I also fix it in the same way? Or did I miss something? How
>> are you supposed to boot an EFI image downloaded via wget?
> 
> A lack of tests for wget + EFI is how we got here, so thanks for finding
> the bug. For the sake of cleaner tests, can you please fix the legacy
> one as well, and add a test similar to the tftp one, but for wget?
> 

wget test added to v8.

Thanks,
-- 
Jerome


More information about the U-Boot mailing list