On Mon, Jun 02, 2025 at 08:35:31PM +0200, Heinrich Schuchardt wrote:
> Am 2. Juni 2025 20:06:08 MESZ schrieb E Shattow <e...@freeshell.de>:
> >
> >
> >On 6/2/25 01:11, Jerome Forissier wrote:
> >> Hi Tim,
> >> 
> >> On 5/30/25 17:46, Tim Harvey wrote:
> >>> On Wed, May 21, 2025 at 8:15 AM Jerome Forissier
> >>> <jerome.foriss...@linaro.org> wrote:
> >>>>
> >>>> Implement the sntp command with lwIP (CONFIG_NET_LWIP=y). SNTP is
> >>>> supported as an app in lib/lwip/lwip/src/apps/sntp/sntp.c so this is
> >>>> mainly about adding that file to the build and writing do_sntp() to use
> >>>> the sntp_*() API and run the receive & timer loop. There is a patch to
> >>>> extract a small bit of common code from net/sntp.c to avoid duplication.
> >>>> The QEMU arm64 lwIP defconfig is updated to provide the sntp command by
> >>>> default for convenience.
> >>>> I could not test the case when the NTP server IP is provided by DHCP. If
> >>>> someone has access right away to such a configuration and in case it
> >>>> does not work, please let me know.
> >>>>
> >>>>
> >>>> Jerome Forissier (3):
> >>>>   net: extract function net_sntp_set_rtc() from sntp_handler()
> >>>>   net: lwip: add sntp command
> >>>>   configs: qemu_arm64_lwip_defconfig: enable CMD_SNTP
> >>>>
> >>>>  cmd/Kconfig                       |  13 +--
> >>>>  cmd/net-lwip.c                    |   5 ++
> >>>>  configs/qemu_arm64_lwip_defconfig |   1 +
> >>>>  include/net-common.h              |  13 +++
> >>>>  lib/lwip/Makefile                 |   1 +
> >>>>  lib/lwip/u-boot/arch/cc.h         |   4 +
> >>>>  lib/lwip/u-boot/lwipopts.h        |   4 +
> >>>>  net/lwip/Makefile                 |   1 +
> >>>>  net/lwip/sntp.c                   | 128 ++++++++++++++++++++++++++++++
> >>>>  net/net-common.c                  |  28 +++++++
> >>>>  net/sntp.c                        |  23 +-----
> >>>>  11 files changed, 195 insertions(+), 26 deletions(-)
> >>>>  create mode 100644 net/lwip/sntp.c
> >>>>
> >>>
> >>> Hi Jerome,
> >>>
> >>> Thanks for the continued work on lwIP!
> >> 
> >> Sure. Thank you for testing and fixing bugs :)
> >>  
> >>> For the series:
> >>> Reviewed-by: Tim Harvey <thar...@gateworks.com>
> >>>
> >>> Note that if this is merged before my series we'll want to have a
> >>> followup that removes the sys_check_timeouts() after net_lwip_rx(udev,
> >>> netif), or if it is merged before my series I can send a v3 that does
> >>> it.
> >> 
> >> Both series are in my patchwork queue, so I'll take care of that. Thanks
> >> for the heads up.
> >> 
> >>> Do you have a list of lwIP features you're still working on? I'm going
> >>> to be moving the Gateworks venice boards to it as things look pretty
> >>> good. The only thing I saw that was missing was TFTPPUT which I don't
> >>> really care about.
> >> 
> >> I don't have any thing left in my to-do list for lwIP at the moment. There
> >> are several U-Boot features that are still not supported with NET_LWIP. As
> >> you said TFTP PUT but also IPv6, the bootp command, as well as ncsi, ethsw,
> >> and wol (those are found in cmd/Kconfig). Maybe other things, I don't know.
> >> 
> >> BR,
> >
> >Getting data off from the U-Boot device under test is missing some
> >similar function today. It would be enough to re-implement tftpput but I
> >rather like the convenience of "wget" to do everything from host and
> >from U-Boot device.
> >
> >Before LwIP and missing tftpput I did use tftpput:
> >
> >1. Send data from memory address range read from some flash peripheral
> >
> >2. Send data from files on attached storage filesystem (repeat
> >intermediate step to read each file to memory address).
> >
> >The tftpput command is useful for (1) and is a problem for (2).
> >
> >Suggestion is an HTTP server command to respond with data from a memory
> >address range or device filesystem i.e.:
> >
> >httpd <[<address> <size>]|[<interface> [<dev[:part]>]> [filename]
> >
> >The command responds to HTTP GET requests until a simple timeout in
> >seconds (default 0 no timeout), probably as an environment variable.
> >There might also be an environment variable to limit the maximum number
> >of requests handled (default 0 for unlimited) so that you could use this
> >in a script as a kind of network operated trigger or automation.
> >
> >When first parameter is a valid memory address (default $loadaddr) then
> >second parameter (default $filesize) is the size. A size of 0 is valid
> >and does not read from the memory address also returns no data. Optional
> >third parameter unspecified or default responds to any GET request. If
> >third parameter is specified then only respond to GET request for that
> >filename with any leading pathname stripped from the parameter.
> >
> >This would allow to simply command `httpd` after some other memory read
> >operation which has set env variables for us, and optionally `httpd - -
> >"filename"` if we want to be selective about the GET request that will
> >read our data. For an HTTP request viewer specify `httpd - 0` or in a
> >script for example if you want to hold up script execution until a
> >certain number of valid network requests for "secret" resource but don't
> >care about the return data, something like `httpd - 0 "secret"` and the
> >appropriate environment variable to limit successful responses before exit.
> >
> >If first parameter not a valid memory address, then we assume a similar
> >invocation as `ls`. When responding to a request if filename parameter
> >is then a valid directory respond with a directory listing, else serve
> >that file. File not found is 404 response but does not exit.
> >
> >This overloading of both memory address and device filesystem works if
> >there are not any devices that are named with address values. If that is
> >too much then split to `httpd` and `httpdmem` i.e. two commands.
> >
> >Overall with LwIP adding HTTP `wget` command we are able to simply start
> >a host HTTP server to get files from, and this is easy on most host
> >systems that have Python lang:
> >
> >$ python3 -m http.server 8080
> >
> >I hope this description is useful?
> >
> >- E Shattow
> 
> Implementing a robust and safe HTTP server is not trivial.
> 
> If you want to use http to transport a file out of U-Boot, you should 
> implement a HTTP POST command.
> 
> https://pypi.org/project/uploadserver/ allows you to easily spin up an HTTP 
> server.
> 
> I would favor focussing on reaching feature parity to eliminate the old 
> network stack before implementing new features.

I would second looking down the path of adding HTTP POST support first,
and then documenting spinning up a trivial http server to accept the
upload, rather than adding http server support.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to