On Wed, 19 Jun 2024 at 16:06, Jerome Forissier <jerome.foriss...@linaro.org> wrote: > > > > On 6/19/24 09:24, Ilias Apalodimas wrote: > > Hi Tom > > > > On Tue, 18 Jun 2024 at 23:21, Tom Rini <tr...@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.
This number looks like it's derived from standard ethernet frame (1500) minus default packet sizes to get to 1468. Does LWIP have a concept of MTU? I would have thought it would be better to use MTU if so because it then means it's not hard coded and it can change based on what the driver/HW supports? Peter