From: neil.armstrong@linaro.org
To: Maxim Uvarov <maxim.uvarov@linaro.org>, u-boot@lists.denx.de
Cc: pbrobinson@gmail.com, ilias.apalodimas@linaro.org,
trini@konsulko.com, goldsimon@gmx.de
Subject: Re: [PATHv11 00/43] net/lwip: add lwip library for the network stack
Date: Tue, 28 Nov 2023 11:37:50 +0100 [thread overview]
Message-ID: <bf3c4f05-db8f-4643-9335-53e511aeff86@linaro.org> (raw)
In-Reply-To: <20231127125726.3735-1-maxim.uvarov@linaro.org>
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@c9410000
Hit any key to stop autoboot: 0
=> setenv autoload no
=> dhcp
ethernet@c9410000 LPA corruption - aneg restart
ethernet@c9410000 Waiting for PHY auto negotiation to complete.... done
Speed: 100, full duplex
eth0: ethernet@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@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@c9410000
Hit any key to stop autoboot: 0
=> setenv autoload no
=> dhcp
ethernet@c9410000 LPA corruption - aneg restart
ethernet@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@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
>
> 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
>
next prev parent reply other threads:[~2023-11-28 10:38 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-27 12:56 [PATHv11 00/43] net/lwip: add lwip library for the network stack Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 01/43] submodule: add lwIP as git submodule Maxim Uvarov
2023-11-27 18:16 ` Tom Rini
2023-11-30 2:45 ` Simon Glass
2023-11-30 11:43 ` Michal Suchánek
2023-11-27 12:56 ` [PATHv11 02/43] net/lwip: add doc/develop/net_lwip.rst Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 03/43] net/lwip: integrate lwIP library Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 04/43] net/lwip: implement dns cmd Maxim Uvarov
2023-11-27 18:27 ` Tom Rini
2023-11-27 12:56 ` [PATHv11 05/43] net/lwip: implement dhcp cmd Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 06/43] net/lwip: implement tftp cmd Maxim Uvarov
2023-11-28 16:34 ` neil.armstrong
2023-11-28 19:09 ` Maxim Uvarov
2023-11-29 9:24 ` neil.armstrong
2023-11-27 12:56 ` [PATHv11 07/43] net/lwip: implement wget cmd Maxim Uvarov
2023-11-28 11:32 ` Fabio Estevam
2023-11-28 19:07 ` Maxim Uvarov
2023-11-28 19:12 ` Fabio Estevam
2023-11-28 20:41 ` Tim Harvey
2023-11-28 20:43 ` Tom Rini
2023-11-29 7:18 ` Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 08/43] net/lwip: implement ping cmd Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 09/43] net/lwip: add lwIP configuration Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 10/43] net/lwip: implement lwIP port to U-Boot Maxim Uvarov
2023-11-27 18:31 ` Tom Rini
2023-11-27 12:56 ` [PATHv11 11/43] net/lwip: update .gitignore with lwIP Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 12/43] net/lwip: connection between cmd and lwip apps Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 13/43] net/lwip: replace original net commands with lwip Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 14/43] net/lwip: split net.h to net.h, arp.h and eth.h Maxim Uvarov
2023-11-27 12:56 ` [PATHv11 15/43] test_efi_loader.py: use $filesize var Maxim Uvarov
2023-11-27 18:18 ` Tom Rini
2023-11-28 11:05 ` neil.armstrong
2023-11-27 12:56 ` [PATHv11 16/43] test_net: print out net list Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 17/43] net: sandbox: fix NULL pointer derefences Maxim Uvarov
2023-11-27 18:19 ` Tom Rini
2023-12-02 18:33 ` Simon Glass
2023-12-02 19:04 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 18/43] net/smc911x: fix return from smc911x_send Maxim Uvarov
2023-11-27 18:20 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 19/43] sandbox: eth-raw-os: successful return code is 0 Maxim Uvarov
2023-11-30 2:45 ` Simon Glass
2023-11-27 12:57 ` [PATHv11 20/43] driver/net/rtl8139: remove debug print Maxim Uvarov
2023-11-27 18:33 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 21/43] mach-socfpga: do not overlap defines with lwip Maxim Uvarov
2023-11-27 18:35 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 22/43] bcm_ns3: fix overlap define " Maxim Uvarov
2023-11-27 18:36 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 23/43] rcar3_salvator-x_defconfig: increase binary size limit Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 24/43] lwip: omap3: rename mem_init Maxim Uvarov
2023-11-27 13:12 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 25/43] configs/turris_omnia_defconfig set limit to 0xf6000 Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 26/43] configs/tbs2910_defconfig inc limit Maxim Uvarov
2023-11-27 13:11 ` Tom Rini
2023-11-27 21:20 ` Soeren Moch
2023-11-28 7:09 ` Maxim Uvarov
2023-12-05 13:15 ` Maxim Uvarov
2023-12-05 15:49 ` Soeren Moch
2023-12-05 16:25 ` Maxim Uvarov
2023-12-05 18:25 ` Soeren Moch
2023-12-05 20:00 ` Maxim Uvarov
2023-12-06 7:06 ` Soeren Moch
2023-12-06 10:40 ` Maxim Uvarov
2023-12-07 11:10 ` Sören Moch
2023-12-09 20:32 ` Tom Rini
2023-12-09 20:21 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 27/43] configs/socfpga_secu1_defconfig: enable LTO Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 28/43] configs/turris_omnia_defconfig: " Maxim Uvarov
2023-11-27 15:59 ` marek.behun
2023-12-19 9:38 ` Marek Behún
2023-12-19 14:37 ` Marek Behún
2023-11-27 12:57 ` [PATHv11 29/43] configs/am335x_boneblack_vboot_defconfig: enable LTO and increase SPL size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 30/43] configs/sheevaplug_defconfig: enable LTO and inc size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 31/43] configs/lschlv2_defconfig: " Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 32/43] configs/lsxhl_defconfig: LTO + size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 33/43] configs/am335x_evm_defconfig: inc SPL size Maxim Uvarov
2023-11-27 13:08 ` Tom Rini
2023-11-27 14:06 ` Maxim Uvarov
2023-11-27 14:08 ` Tom Rini
2023-11-27 15:31 ` Maxim Uvarov
2023-11-27 15:33 ` Tom Rini
2023-11-27 15:52 ` Peter Robinson
2023-11-27 16:31 ` Tom Rini
2023-11-28 9:35 ` Maxim Uvarov
2023-11-28 15:07 ` Tom Rini
2023-11-27 14:06 ` Peter Robinson
2023-11-27 12:57 ` [PATHv11 34/43] configs/bk4r1_defconfig: inc size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 35/43] configs/linkit-smart-7688_defconfig: increse size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 36/43] configs/gardena-smart-gateway-mt7688_defconfig: increase size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 37/43] configs/rcar3_ulcb_defconfig: " Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 38/43] configs/qemu-x86_64_defconfig: increase ROM size Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 39/43] Makefile: add dtbs to clean Maxim Uvarov
2023-11-27 18:17 ` Tom Rini
2023-11-27 12:57 ` [PATHv11 40/43] .azure-pipelines: init submodules Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 41/43] mach-mtmips: inc SPL size limit Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 42/43] configs/linkit-smart-7688_defconfig: increase board limit Maxim Uvarov
2023-11-27 12:57 ` [PATHv11 43/43] .gitlab-ci.yml: change ownership of the git files Maxim Uvarov
2023-11-27 18:37 ` [PATHv11 00/43] net/lwip: add lwip library for the network stack Tom Rini
2023-11-27 18:59 ` Tom Rini
2023-11-28 10:37 ` neil.armstrong [this message]
2023-11-28 19:13 ` Maxim Uvarov
2023-11-28 23:05 ` Tim Harvey
2023-11-28 23:21 ` Fabio Estevam
2023-11-29 0:10 ` Tim Harvey
2023-11-29 0:16 ` Fabio Estevam
2023-11-30 8:39 ` Maxim Uvarov
2023-11-30 13:00 ` Fabio Estevam
2023-11-30 13:14 ` Maxim Uvarov
2023-11-30 13:18 ` Fabio Estevam
2023-11-30 11:09 ` Peter Robinson
2023-11-30 13:05 ` Maxim Uvarov
2023-12-19 10:12 ` Alexander Dahl
2024-01-02 17:30 ` Maxim Uvarov
2024-01-03 14:30 ` Fabio Estevam
2024-01-04 15:02 ` Maxim Uvarov
2024-01-04 20:45 ` Fabio Estevam
2024-01-08 8:41 ` Maxim Uvarov
2024-01-08 11:39 ` Fabio Estevam
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bf3c4f05-db8f-4643-9335-53e511aeff86@linaro.org \
--to=neil.armstrong@linaro.org \
--cc=goldsimon@gmx.de \
--cc=ilias.apalodimas@linaro.org \
--cc=maxim.uvarov@linaro.org \
--cc=pbrobinson@gmail.com \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox