
On 9/6/24 19:54, Tom Rini wrote:
On Fri, Sep 06, 2024 at 02:33:16PM +0200, Jerome Forissier wrote:
This is a rework of a patch series by Maxim Uvarov: "net/lwip: add lwip library for the network stack" [1]. The goal is to introduce the lwIP TCP/IP stack [2] [3] as an alternative to the current implementation in net/, selectable with Kconfig, and ultimately keep only lwIP if possible. Some reasons for doing so are:
- Make the support of HTTPS in the wget command easier. Javier T. and
Raymond M. (CC'd) have some additional lwIP and Mbed TLS patches to do so. With that it becomes possible to fetch and launch a distro installer such as Debian etc. using a secure, authenticated connection directly from the U-Boot shell. Several use cases:
- Authentication: prevent MITM attack (third party replacing the
binary with a different one)
- Confidentiality: prevent third parties from grabbing a copy of the
image as it is being downloaded
- Allow connection to servers that do not support plain HTTP anymore
(this is becoming more and more common on the Internet these days)
- Possibly benefit from additional features implemented in lwIP
- Less code to maintain in U-Boot
On am64x-sk (am64x_evm_a53_defconfig) I'm seeing: => tftpboot 80200000 EFI/arm64/grubaa64.efi Using ethernet@8000000port@1 device TFTP from server 192.168.116.10; our IP address is 192.168.116.23 Filename 'EFI/arm64/grubaa64.efi'. Load address: 0x80200000 Loading: ... silent hang ...
Which I didn't see with v9. I can test other TI K3 platforms if it would help.
Weird. I compared v9 and v10 (rebased onto the same commit as v9) but I saw nothing obvious. Would you mind running the test again with these traces added?
diff --git a/net/lwip/net-lwip.c b/net/lwip/net-lwip.c index 1948fc1c309..9bbfd8ee5a7 100644 --- a/net/lwip/net-lwip.c +++ b/net/lwip/net-lwip.c @@ -35,6 +35,7 @@ static err_t linkoutput(struct netif *netif, struct pbuf *p) void *pp = NULL; int err;
+ printf("[OUT|%d]", p->len); if ((unsigned long)p->payload % PKTALIGN) { /* * Some net drivers have strict alignment requirements and may @@ -252,12 +253,16 @@ int net_lwip_rx(struct udevice *udev, struct netif *netif) int len; int i;
- if (!eth_is_active(udev)) + printf("[IN]"); + if (!eth_is_active(udev)) { + printf("ERR: !eth_is_active()\n"); return -EINVAL; + }
flags = ETH_RECV_CHECK_DEVICE; for (i = 0; i < ETH_PACKETS_BATCH_RECV; i++) { len = eth_get_ops(udev)->recv(udev, flags, &packet); + printf("[IN|%d]", len); flags = 0;
if (len > 0) {
Thanks,