Hi Maxim, On Thu, 14 Sept 2023 at 19:20, Maxim Uvarov <maxim.uva...@linaro.org> wrote: > > changelog: > 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.
Something is wrong with the current implementation and I suspect it's partially due to callbacks. If you spawn a qemu with '-device virtio-net-pci,netdev=net0 -netdev tap,id=net0', assign ip addresses and try a tftp this initially works => tftp synquacer_fw.capsule eth0: virtio-net#33 52:52:52:52:52:52 active TFTP from server 10.10.10.2; our IP address is 10.10.10.1 Filename 'synquacer_fw.capsule'. Load address: 0x40200000 Loading:####################### [...] However, if you do a ping first the output looks like this => ping 10.10.10.2 eth0: virtio-net#33 52:52:52:52:52:52 active Using virtio-net#33 device pinging addr: 10.10.10.2 host 10.10.10.2 a alive 1 ms => tftp synquacer_fw.capsule init already done for virtio-net#33 TFTP from server 10.10.10.2; our IP address is 10.10.10.1 Filename 'synquacer_fw.capsule'. Load address: 0x40200000 Loading:ping failed; host �Hi> is not alive host 10.10.10.2 a alive 0 ms => Thanks /Ilias > > > Maxim Uvarov (15): > 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 > net/lwip: drop old net/wget > > .gitmodules | 3 + > boot/bootmeth_efi.c | 18 +- > boot/bootmeth_pxe.c | 21 +- > cmd/Makefile | 1 + > cmd/net-lwip.c | 286 +++++++++++++++++ > cmd/net.c | 86 +---- > cmd/pxe.c | 19 +- > doc/develop/index.rst | 1 + > doc/develop/net_lwip.rst | 75 +++++ > include/net.h | 197 +----------- > include/net/arp.h | 7 + > include/net/eth.h | 190 +++++++++++ > include/net/lwip.h | 73 +++++ > include/net/ulwip.h | 64 ++++ > include/net/wget.h | 22 -- > net/Kconfig | 3 + > net/Makefile | 2 +- > net/eth-uclass.c | 8 + > net/lwip/.gitignore | 8 + > net/lwip/Kconfig | 25 ++ > net/lwip/Makefile | 70 ++++ > net/lwip/apps/dhcp/lwip-dhcp.c | 85 +++++ > 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 | 38 +++ > net/lwip/apps/ping/lwip_ping.h | 15 + > net/lwip/apps/ping/ping.h | 19 ++ > net/lwip/apps/tftp/Makefile | 7 + > net/lwip/apps/tftp/lwip-tftp.c | 129 ++++++++ > net/lwip/lwip-external | 1 + > net/lwip/lwipopts.h | 178 +++++++++++ > net/lwip/port/if.c | 332 +++++++++++++++++++ > net/lwip/port/include/arch/cc.h | 38 +++ > 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 | 26 +- > net/wget.c | 440 -------------------------- > 40 files changed, 1938 insertions(+), 758 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 > delete mode 100644 include/net/wget.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 > delete mode 100644 net/wget.c > > -- > 2.30.2 >