[PATHv11 00/43] net/lwip: add lwip library for the network stack

Maxim Uvarov maxim.uvarov at linaro.org
Tue Nov 28 20:13:03 CET 2023


On Tue, 28 Nov 2023 at 16:37, <neil.armstrong at linaro.org> wrote:

> Hi,
>
> On 27/11/2023 13:56, Maxim Uvarov wrote:
> > Hello,
> >
> > Please find updated version of lwip patches. Changes are in the
> > changelog bellow.
>
> I've ran it on the libretech-cc board, and tried to load grub over tftp,
> and I got this strange EFI boot error:
>
> ========================================================================================
> U-Boot 2024.01-rc3-00056-g10d85cb3e3 (Nov 28 2023 - 11:17:24 +0100)
> libretech-cc
>
> Model: Libre Computer AML-S905X-CC
> SoC:   Amlogic Meson GXL (S905X) Revision 21:d (84:2)
> DRAM:  2 GiB
>
> <snip>
>
> Net:   eth0: ethernet at c9410000
> Hit any key to stop autoboot:  0
> => setenv autoload no
> => dhcp
> ethernet at c9410000 LPA corruption - aneg restart
> ethernet at c9410000 Waiting for PHY auto negotiation to complete.... done
> Speed: 100, full duplex
> eth0: ethernet at c9410000 3e:a6:23:c0:39:4b active
> dhcp_tmo 20/20
> dhcp_tmo 19/20
> DHCP client bound to address 10.34.56.105
> => tftpboot 8080000 grubaa64.efi
> init already done for ethernet at c9410000
> Speed: 100, full duplex
> TFTP from server 10.34.56.1; our IP address is 10.34.56.105
> Filename 'grubaa64.efi'.
> Load address: 0x8080000
> Loading:############
> done
> Bytes transferred = 4288512 (0x417000 hex)
> => crc32 8080000 0x417000
> crc32 for 08080000 ... 08496fff ==> c79bc066
>
> ========================================================================================
>
> - DHCP OK,
> - transfer OK
> - CRC32 value OK
>
> but then trying to run the EFI binary:
>
> ========================================================================================
> => bootefi 8080000
> No EFI system partition
> No EFI system partition
> Failed to persist EFI variables
> No UEFI binary known at 8080000
>
> ========================================================================================
>
> This is what I get on the current master without this patchset:
>
> ========================================================================================
> U-Boot 2024.01-rc3-00013-gacae7eb5fe (Nov 28 2023 - 11:29:38 +0100)
> libretech-cc
>
> Model: Libre Computer AML-S905X-CC
> SoC:   Amlogic Meson GXL (S905X) Revision 21:d (84:2)
> DRAM:  2 GiB
>
> <snip>
>
> Net:   eth0: ethernet at c9410000
> Hit any key to stop autoboot:  0
> => setenv autoload no
> => dhcp
> ethernet at c9410000 LPA corruption - aneg restart
> ethernet at c9410000 Waiting for PHY auto negotiation to complete.... done
> Speed: 100, full duplex
> BOOTP broadcast 1
> BOOTP broadcast 2
> BOOTP broadcast 3
> DHCP client bound to address 10.34.56.105 (1008 ms)
> => tftpboot 8080000 grubaa64.efi
> Speed: 100, full duplex
> Using ethernet at c9410000 device
> TFTP from server 10.34.56.1; our IP address is 10.34.56.105
> Filename 'grubaa64.efi'.
> Load address: 0x8080000
> Loading: ##T #T T
> ##############################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          #################################################################
>          ##########################################################
>          199.2 KiB/s
> done
> Bytes transferred = 4288512 (417000 hex)
> => crc32 8080000 0x417000
> crc32 for 08080000 ... 08496fff ==> c79bc066
> => bootefi 8080000
> No EFI system partition
> No EFI system partition
> Failed to persist EFI variables
> Booting /grubaa64.efi
> Welcome to GRUB!
>
> <snip>
>
> grub> net_ls_addr
> efinet0 3e:a6:23:c0:39:4b 10.34.56.105
>
> ========================================================================================
>
> I don't see what's wrong, crc32 is good and env variables are the same:
> fileaddr=8080000
> filesize=417000
>
> Neil
>
>
Ok. You provided a small fix for this use case. Will take it into a new
version.



>
> >
> > Thank you,
> > Maxim.
> >
> > changelog:
> >       v11: - v11 is mosly respin of v10 patches with CI error fixes.
> >                  Gitlab CI:
> >
> https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/18368
> >                  Azure CI:
> >
> https://dev.azure.com/u-boot/u-boot/_build/results?buildId=7366&view=results
> >                  (Azure CI, which is connected to github. Sometime I can
> see
> >                   tftp timeout after some part of download there, but
> that can not be
> >                   reproduced locally. While Gitblab CI is stable.
> Because of num tries in
> >                   CI I suspect this CI was not always reliable.)
> >                  Azure and Gitlab also have different toolchains and I
> >                  would say Gitlab generates bigger code then Azure CI.
> >
> >                  Also many boards have a binary limit size of 800k (even
> >                  qemu has limits). And increased limits to fit all the
> code. Specially did it
> >                  patch by board config to show which boards are failing
> to build. There I have
> >                  a question if we really want to support new
> functionality for old boards (mips,
> >                  arm32 and etc...). I hope board owners can help me if
> >                  it's valid to increase these limits.
> >
> >               In this version I used git submodules and friend CI with
> >               submodules. But I don't mind if you decide to maintain it
> in a different
> >               way.
> >
> >
> >       v10: - fix ping with following tftp command issue with incorrect
> >               ping timeout clear.
> >            - Makefile on make will init submodules and if needed will
> >              do git clone.
> >            - wget - some minor code style changes.
> >       v9: - added first patch describing git submodule for lwip. So
> >             the build procedure is:
> >               git submodule init
> >               git submodule update
> >               make
> >           - reworked a little bit dhcp cmd state polling
> >           - fixed review comments for v8
> >       v8: - comments for previous review
> >           - removed lwip timeout callback pointer
> >           - made lwip timeouts works, that also allowed to remove
> >             static vars.
> >           - setenv for filesize tftp and wget has to be in hex.
> >           - Makefile changes always compile it tftp,dns,wget,ping due
> >             to it can be used not only by CONFIG_CMD_.
> >           - Kconfig changes - simplify lwIP settings and support only
> >             one configuration.
> >           - tested with mini debian.iso load over http or tftp, mount
> >             and boot it (qemu, arm64).
> >       v7: - more review fixes.
> >           - support of multiply eth devices, were "ethact" selects the
> >             active device.
> >       v6: - fixed review comments for v5 (thanks Ilias and Simon).
> >       v5: - fixed Iliases comments and split big patch on the small
> >               ones.
> >       v4: - tested with tests/py/ did some minor fixes (out of tree
> >               build, variables set after downloads).
> >           - accounted review comments for documentation.
> >           - implemented dns command
> >              - corrected wget command to not use serverip variable and
> use just
> >               url string.
> >       v3: - use lwip commands for ping,tftp,wget,dhcp if this patch
> >             applied. Drop CONFIG_LIB_LWIP_REPLACE_<COMMAND> option.
> >           - docs: use rst variant and drop references to RFC.
> >
> > Maxim Uvarov (43):
> >    submodule: add lwIP as git submodule
> >    net/lwip: add doc/develop/net_lwip.rst
> >    net/lwip: integrate lwIP library
> >    net/lwip: implement dns cmd
> >    net/lwip: implement dhcp cmd
> >    net/lwip: implement tftp cmd
> >    net/lwip: implement wget cmd
> >    net/lwip: implement ping cmd
> >    net/lwip: add lwIP configuration
> >    net/lwip: implement lwIP port to U-Boot
> >    net/lwip: update .gitignore with lwIP
> >    net/lwip: connection between cmd and lwip apps
> >    net/lwip: replace original net commands with lwip
> >    net/lwip: split net.h to net.h, arp.h and eth.h
> >    test_efi_loader.py: use $filesize var
> >    test_net: print out net list
> >    net: sandbox: fix NULL pointer derefences
> >    net/smc911x: fix return from smc911x_send
> >    sandbox: eth-raw-os: successful return code is 0
> >    driver/net/rtl8139: remove debug print
> >    mach-socfpga: do not overlap defines with lwip
> >    bcm_ns3: fix overlap define with lwip
> >    rcar3_salvator-x_defconfig: increase binary size limit
> >    lwip: omap3: rename mem_init
> >    configs/turris_omnia_defconfig set limit to 0xf6000
> >    configs/tbs2910_defconfig inc limit
> >    configs/socfpga_secu1_defconfig: enable LTO
> >    configs/turris_omnia_defconfig: enable LTO
> >    configs/am335x_boneblack_vboot_defconfig: enable LTO and increase SPL
> >      size
> >    configs/sheevaplug_defconfig: enable LTO and inc size
> >    configs/lschlv2_defconfig: enable LTO and inc size
> >    configs/lsxhl_defconfig: LTO + size
> >    configs/am335x_evm_defconfig: inc SPL size
> >    configs/bk4r1_defconfig: inc size
> >    configs/linkit-smart-7688_defconfig: increse size
> >    configs/gardena-smart-gateway-mt7688_defconfig: increase size
> >    configs/rcar3_ulcb_defconfig: increase size
> >    configs/qemu-x86_64_defconfig: increase ROM size
> >    Makefile: add dtbs to clean
> >    .azure-pipelines: init submodules
> >    mach-mtmips: inc SPL size limit
> >    configs/linkit-smart-7688_defconfig: increase board limit
> >    .gitlab-ci.yml: change ownership of the git files
> >
> >   .azure-pipelines.yml                          |  10 +-
> >   .gitlab-ci.yml                                |  15 +-
> >   .gitmodules                                   |   4 +
> >   Makefile                                      |  12 +-
> >   arch/arm/include/asm/arch-omap3/mem.h         |   2 +-
> >   arch/arm/mach-omap2/omap3/board.c             |   2 +-
> >   arch/arm/mach-omap2/omap3/emif4.c             |   4 +-
> >   arch/arm/mach-omap2/omap3/sdrc.c              |   6 +-
> >   .../mach-socfpga/include/mach/handoff_soc64.h |   6 -
> >   arch/arm/mach-socfpga/wrap_handoff_soc64.c    |   9 +
> >   arch/mips/mach-mtmips/Kconfig                 |   2 +-
> >   arch/sandbox/cpu/eth-raw-os.c                 |   2 +-
> >   boot/bootmeth_efi.c                           |  18 +-
> >   boot/bootmeth_pxe.c                           |  21 +-
> >   cmd/Makefile                                  |   1 +
> >   cmd/net-lwip.c                                | 307 ++++++++++++++++
> >   cmd/net.c                                     |  86 +----
> >   cmd/pxe.c                                     |  19 +-
> >   configs/am335x_boneblack_vboot_defconfig      |   3 +
> >   configs/am335x_evm_defconfig                  |   1 +
> >   configs/bk4r1_defconfig                       |   2 +-
> >   .../gardena-smart-gateway-mt7688_defconfig    |   2 +-
> >   configs/linkit-smart-7688_defconfig           |   2 +-
> >   configs/lschlv2_defconfig                     |   3 +-
> >   configs/lsxhl_defconfig                       |   3 +-
> >   configs/qemu-x86_64_defconfig                 |   5 +-
> >   configs/rcar3_salvator-x_defconfig            |   3 +-
> >   configs/rcar3_ulcb_defconfig                  |   1 +
> >   configs/sheevaplug_defconfig                  |   3 +-
> >   configs/socfpga_secu1_defconfig               |   1 +
> >   configs/tbs2910_defconfig                     |   2 +-
> >   configs/turris_omnia_defconfig                |   3 +-
> >   doc/develop/index.rst                         |   1 +
> >   doc/develop/net_lwip.rst                      |  75 ++++
> >   drivers/net/rtl8139.c                         |   1 -
> >   drivers/net/sandbox.c                         |   5 +
> >   drivers/net/smc911x.c                         |   2 +-
> >   include/configs/bcm_ns3.h                     |   6 +-
> >   include/net.h                                 | 197 +----------
> >   include/net/arp.h                             |   9 +
> >   include/net/eth.h                             | 194 +++++++++++
> >   include/net/lwip.h                            |  73 ++++
> >   include/net/ulwip.h                           |  67 ++++
> >   lib/Kconfig                                   |   2 +-
> >   net/Kconfig                                   |   3 +
> >   net/Makefile                                  |   1 +
> >   net/eth-uclass.c                              |  37 +-
> >   net/lwip/.gitignore                           |   8 +
> >   net/lwip/Kconfig                              |  34 ++
> >   net/lwip/Makefile                             |  70 ++++
> >   net/lwip/apps/dhcp/lwip-dhcp.c                |  86 +++++
> >   net/lwip/apps/dns/lwip-dns.c                  |  63 ++++
> >   net/lwip/apps/http/Makefile                   |   6 +
> >   net/lwip/apps/http/lwip-wget.c                | 105 ++++++
> >   net/lwip/apps/ping/Makefile                   |  12 +
> >   net/lwip/apps/ping/lwip_ping.c                |  39 +++
> >   net/lwip/apps/ping/lwip_ping.h                |  15 +
> >   net/lwip/apps/ping/ping.h                     |  28 ++
> >   net/lwip/apps/tftp/Makefile                   |   7 +
> >   net/lwip/apps/tftp/lwip-tftp.c                | 132 +++++++
> >   net/lwip/lwip-external                        |   1 +
> >   net/lwip/lwipopts.h                           | 178 ++++++++++
> >   net/lwip/port/if.c                            | 327 ++++++++++++++++++
> >   net/lwip/port/include/arch/cc.h               |  44 +++
> >   net/lwip/port/include/arch/sys_arch.h         |  10 +
> >   net/lwip/port/include/limits.h                |   0
> >   net/lwip/port/sys-arch.c                      |  13 +
> >   net/net.c                                     |  44 ++-
> >   test/py/tests/test_efi_loader.py              |   4 +-
> >   test/py/tests/test_net.py                     |   2 +
> >   70 files changed, 2113 insertions(+), 348 deletions(-)
> >   create mode 100644 .gitmodules
> >   create mode 100644 cmd/net-lwip.c
> >   create mode 100644 doc/develop/net_lwip.rst
> >   create mode 100644 include/net/arp.h
> >   create mode 100644 include/net/eth.h
> >   create mode 100644 include/net/lwip.h
> >   create mode 100644 include/net/ulwip.h
> >   create mode 100644 net/lwip/.gitignore
> >   create mode 100644 net/lwip/Kconfig
> >   create mode 100644 net/lwip/Makefile
> >   create mode 100644 net/lwip/apps/dhcp/lwip-dhcp.c
> >   create mode 100644 net/lwip/apps/dns/lwip-dns.c
> >   create mode 100644 net/lwip/apps/http/Makefile
> >   create mode 100644 net/lwip/apps/http/lwip-wget.c
> >   create mode 100644 net/lwip/apps/ping/Makefile
> >   create mode 100644 net/lwip/apps/ping/lwip_ping.c
> >   create mode 100644 net/lwip/apps/ping/lwip_ping.h
> >   create mode 100644 net/lwip/apps/ping/ping.h
> >   create mode 100644 net/lwip/apps/tftp/Makefile
> >   create mode 100644 net/lwip/apps/tftp/lwip-tftp.c
> >   create mode 160000 net/lwip/lwip-external
> >   create mode 100644 net/lwip/lwipopts.h
> >   create mode 100644 net/lwip/port/if.c
> >   create mode 100644 net/lwip/port/include/arch/cc.h
> >   create mode 100644 net/lwip/port/include/arch/sys_arch.h
> >   create mode 100644 net/lwip/port/include/limits.h
> >   create mode 100644 net/lwip/port/sys-arch.c
> >
>
>


More information about the U-Boot mailing list