[PATCH v4 00/14] Introduce the lwIP network stack
Tim Harvey
tharvey at gateworks.com
Wed Jun 26 18:00:04 CEST 2024
On Tue, Jun 25, 2024 at 1:02 AM Jerome Forissier
<jerome.forissier at linaro.org> wrote:
>
> On 6/25/24 00:28, Tim Harvey wrote:
> > On Sat, Jun 22, 2024 at 1:09 AM Maxim Uvarov <muvarov at gmail.com> wrote:
> >>
> >> пт, 21 июн. 2024 г. в 21:42, Fabio Estevam <festevam at gmail.com>:
> >>>
> >>> Hi Tim and Jerome,
> >>>
> >>> On Fri, Jun 21, 2024 at 1:08 PM Tim Harvey <tharvey at gateworks.com> wrote:
> >>>
> >>>> I tried your to-upstream/v5-wip branch
> >>>> (042bea36eb9731079a3d7afffe3774d79e06ac5d) and it behaves the same. Do
> >>>> you have something else to try/test?
> >>>
> >>> Yes, when I tested older versions from Maxim I could never get lwIP to
> >>> work with i.MX.
> >>>
> >>> Jerome,
> >>>
> >>> Please try to run the lwIP series on any i.MX board, if possible.
> >>>
> >>> Thanks
> >>
> >> Packet not for us means that incoming packet DST MAC does not match to
> >> the MAC address inside lwip. I.e. to MAC address set into lwip when
> >> lwip_init was done. Original U-Boot network stack does not compare
> >> MACs but lwip does. There is something specific on this board, in
> >> general lwip with debug should print out
> >> MAC used during initialization. This MAC should match to the MAC from
> >> the incoming packet.
> >>
> >
> > It seems 'packet not for us' can mean a lot of things.
>
> Yeah :-/ in this case I believe the traces are caused by unrelated traffic
> (UDP port 138 is used by NetBIOS).
>
>
> > I added a bit of debugging around 'DHCP packet accepted' and found I'm
> > not receiving any packets from my DHCP server. So I connected directly
> > to another board (isolated network) where I ran my own server and
> > tcpdump and I don't see packets coming from lwip:
>
> Ha! That's interesting.
>
> > without lwip my server shows:
> > # tcpdump -i eth1
> > tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot
> > length 262144 bytes
> > tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot
> > length 262144 bytes
> > 22:18:01.043992 IP (tos 0x0, ttl 255, id 23, offset 0, flags [DF],
> > proto UDP (17), length 328)
> > 22:18:01.044391 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none],
> > proto UDP (17), length 328)
> > 22:18:01.044454 IP (tos 0x0, ttl 255, id 24, offset 0, flags [DF],
> > proto UDP (17), length 328)
> > 22:18:01.044752 IP (tos 0x10, ttl 128, id 0, offset 0, flags [none],
> > proto UDP (17), length 328)
> >
> > # tcpdump -i eth1
> > tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot
> > length 262144 bytes
> > 22:22:41.602178 [|llc]
> > 22:22:41.709978 [|llc]
> > 22:22:41.867947 [|llc]
> > 22:22:42.105202 [|llc]
> > 22:22:42.502091 [|llc]
> > 22:22:43.219079 [|llc]
> > 22:22:44.497979 [|llc]
> > 22:22:45.776884 [|llc]
> > 22:22:47.054773 [|llc]
> > 22:22:48.333667 [|llc]
> > 22:22:49.611559 [|llc]
> > 22:22:50.890469 [|llc]
> >
> > What actual hardware has this been tested with? I think Tom mentioned
> > he tested with an rpi of some sort.
>
> Yes, I believe he tested on RPi 3B and me too. Ilias has tested on NVIDIA
> Jetson Nano.
>
> > I don't know what the meaning of the llc msg is above but you can see
> > there is no DHCP request.
>
> Some more tracing is needed. Can you try enabling all traces in
> lib/lwip/u-boot/lwipopts.h? i.e., replace all LWIP_DBG_OFF with
> LWIP_DBG_ON in the #if defined(CONFIG_LWIP_DEBUG) section. And of course
> enabled CONFIG_LWIP_DEBUG.
Here's what I see with all those enabled on an imx8mm-venice-gw73xx-0x:
Net: eth0: ethernet at 30be0000 [PRIME]
GSC : boot watchdog disabled
Thermal protection:enabled at 96C
Hit any key to stop autoboot: 0
u-boot=> dhcp || echo fail
netif: added interface et IP addr 0.0.0.0 netmask 0.0.0.0 gw 0.0.0.0
netif: setting default interface et
dhcp_start(netif=00000000fdf23bb0) et0
dhcp_start(): mallocing new DHCP client
dhcp_start(): allocated dhcp
dhcp_start(): starting DHCP configuration
udp_bind(ipaddr = 0.0.0.0, port = 68)
udp_bind: bound to 0.0.0.0, port 68)
udp_connect: connected to 0.0.0.0, port 67)
dhcp_discover()
pbuf_alloc(length=308)
pbuf_alloc(length=308) == 00000000fdf23d10
transaction id xid(42021)
dhcp_discover: making request
dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER)
pbuf_add_header: old 00000000fdf23d5e new 00000000fdf23d56 (8)
udp_send: added header in given pbuf 00000000fdf23d10
udp_send: sending datagram of length 316
udp_send: UDP packet length 316
inet_chksum_pseudo(): checksumming pbuf 00000000fdf23d10 (has next
0000000000000000)
inet_chksum_pseudo(): pbuf chain lwip_chksum()=807
udp_send: UDP checksum 0xf7f8
udp_send: ip_output_if (,,,,0x11,)
pbuf_add_header: old 00000000fdf23d56 new 00000000fdf23d42 (20)
ip4_output_if: et0
IP header:
+-------------------------------+
| 4 | 5 | 0x00 | 336 | (v, hl, tos, len)
+-------------------------------+
| 0 |000| 0 | (id, flags, offset)
+-------------------------------+
| 255 | 17 | 0xba9d | (ttl, proto, chksum)
+-------------------------------+
| 0 | 0 | 0 | 0 | (src)
+-------------------------------+
| 255 | 255 | 255 | 255 | (dest)
+-------------------------------+
ip4_output_if: call netif->output()
pbuf_add_header: old 00000000fdf23d42 new 00000000fdf23d34 (14)
ethernet_output: sending packet 00000000fdf23d10
^^^ at this point a 350 byte packet gets sent to fecmxc_send for the
NIC which looks like this via print_hex_dump_bytes():
00000000: ff ff ff ff ff ff 00 d0 12 ba f8 cc 08 00 45 00 ..............E.
00000010: 01 50 00 00 00 00 ff 11 ba 9d 00 00 00 00 ff ff .P..............
00000020: ff ff 00 44 00 43 01 3c f8 f7 01 01 06 00 00 04 ...D.C.<........
00000030: 20 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 !..............
00000040: 00 00 00 00 00 00 00 d0 12 ba f8 cc 00 00 00 00 ................
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000110: 00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 05 ......c.Sc5..9..
00000120: dc 37 03 01 03 1c ff 00 00 00 00 00 00 00 00 00 .7..............
00000130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ..............
on my dhcp server 'tcpdump -i eth1 -X -vvv' shows:
tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot
length 262144 bytes
15:34:25.341167 [|llc]
0x0000: 0000 0000 0000 0000 0000 343d f2fd 0000 ..........4=....
0x0010: 0000 5e01 5e01 8000 0100 0000 0000 0000 ..^.^...........
0x0020: 0000 0000 0000 ffff ffff ffff 00d0 12ba ................
0x0030: f8cc 0800 4500 0150 001e 0000 ff11 ba7f ....E..P........
0x0040: 0000 0000 ffff ffff 0044 0043 013c 6d78 .........D.C.<mx
0x0050: 0101 0600 1255 994f 0000 0000 0000 0000 .....U.O........
0x0060: 0000 0000 0000 0000 0000 0000 00d0 12ba ................
0x0070: f8cc 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0120: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0130: 0000 0000 0000 0000 0000 0000 6382 5363 ............c.Sc
0x0140: 3501 0139 0205 dc37 0301 031c ff00 0000 5..9...7........
Comparing to w/o LWIP:
u-boot=> dhcp || echo fail
BOOTP broadcast 1
fecmxc_send ethernet at 30be0000 342
00000000: ff ff ff ff ff ff 00 d0 12 ba f8 cc 08 00 45 00 ..............E.
00000010: 01 48 00 00 40 00 ff 11 7a a5 00 00 00 00 ff ff .H.. at ...z.......
00000020: ff ff 00 44 00 43 01 34 00 00 01 01 06 00 12 bb ...D.C.4........
00000030: 82 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .d..............
00000040: 00 00 00 00 00 00 00 d0 12 ba f8 cc 00 00 00 00 ................
00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000000f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000110: 00 00 00 00 00 00 63 82 53 63 35 01 01 39 02 02 ......c.Sc5..9..
00000120: 40 5d 02 00 16 5e 03 01 00 00 3c 0c 55 2d 42 6f @]...^....<.U-Bo
00000130: 6f 74 2e 61 72 6d 76 38 37 05 01 03 06 0c 11 ff ot.armv87.......
00000140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000150: 00 00 00 00 00 00 ......
^^^ Note the packet is 8 bytes shorter
and on the dhcp server:
tcpdump: listening on eth1, link-type EN10MB (Ethernet), snapshot
length 262144 bytes
15:45:12.548077 IP (tos 0x0, ttl 255, id 0, offset 0, flags [DF],
proto UDP (17), length 328)
0.0.0.0.bootpc > 255.255.255.255.bootps: [no cksum] BOOTP/DHCP,
Request from 00:d0:12:ba:f8:cc (oui Unknown), length 300, xid
0x12bb8264, Flags [none] (0x0000)
Client-Ethernet-Address 00:d0:12:ba:f8:cc (oui Unknown)
Vendor-rfc1048 Extensions
Magic Cookie 0x63825363
DHCP-Message (53), length 1: Discover
MSZ (57), length 2: 576
ARCH (93), length 2: 22
NDI (94), length 3: 1.0.0
Vendor-Class (60), length 12: "U-Boot.armv8"
Parameter-Request (55), length 5:
Subnet-Mask (1), Default-Gateway (3), Domain-Name-Server (6),
Hostname (12)
RP (17)
END (255), length 0
PAD (0), length 0, occurs 22
0x0000: 4500 0148 0000 4000 ff11 7aa5 0000 0000 E..H.. at ...z.....
0x0010: ffff ffff 0044 0043 0134 0000 0101 0600 .....D.C.4......
0x0020: 12bb 8264 0000 0000 0000 0000 0000 0000 ...d............
0x0030: 0000 0000 0000 0000 00d0 12ba f8cc 0000 ................
0x0040: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0050: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0060: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0070: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0080: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0090: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x00f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0100: 0000 0000 0000 0000 6382 5363 3501 0139 ........c.Sc5..9
0x0110: 0202 405d 0200 165e 0301 0000 3c0c 552d ..@]...^....<.U-
0x0120: 426f 6f74 2e61 726d 7638 3705 0103 060c Boot.armv87.....
0x0130: 11ff 0000 0000 0000 0000 0000 0000 0000 ................
0x0140: 0000 0000 0000 0000 ........
> I do have a i.MX8M Plus EVK board but will not be able to use it before
> tomorrow.
Please let me know your findings. I can test imx8mp as well but would
have to reconfigure everything.
Best Regards,
Tim
More information about the U-Boot
mailing list