[PATCH v4 00/14] Introduce the lwIP network stack
Jerome Forissier
jerome.forissier at linaro.org
Wed Jun 19 16:47:08 CEST 2024
On 6/19/24 09:24, Ilias Apalodimas wrote:
> Hi Tom
>
> On Tue, 18 Jun 2024 at 23:21, Tom Rini <trini at konsulko.com> wrote:
>>
>> On Mon, Jun 17, 2024 at 05:32:52PM +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. (CC'd)
>>> has 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
>>
>> So, on a Pi 3 (rpi_3_defconfig) I see this now (and it passes normally):
>> ========================================== 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:
>> 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 ===================================
>> If I disable that test, it moves on to failing the same exact way for
>> grub. If I disable the grub test too. After that, oh, a bunch of other
>> tests get skipped because CMD_NET and similar aren't enabled now, and
>> the tests are wrong. I'll post that as another patch by itself. After
>> correcting for that, we're seemingly noticeably slower as I need to
>> increase the timeout for tftp'ing my 83MiB FIT image I use for kernel
>> testing. We no longer have the estimated speed message, so I can't as
>> easily say how much slower it is. After increasing the timeout, the
>> kernel boot test does work.
>>
>> I can note that normally it takes ~18ms to get a dhcp reply, but with
>> lwIP it's now 132ms, and previously the kernel loaded at 2.7MiB/s
>> (which, not great) but if that has a similar level of slowdown, could
>> well explain it.
>>
>
> Thanks for taking the time. We'll run the pytests before v5. That
> being said, my wget tests were faster with lwIP last time I checked.
The reason for the slower TFTP is the block size. lwIP supports only the
default (512 bytes), while the legacy stack supports the 'blksize' option
and sets CONFIG_TFTP_BLOCKSIZE=1468 by default.
--
Jerome
More information about the U-Boot
mailing list