[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