[PATCH v5 02/20] net: introduce alternative implementation as net-lwip/

Michal Simek monstr at monstr.eu
Fri Jul 26 10:44:28 CEST 2024


čt 25. 7. 2024 v 15:28 odesílatel Jerome Forissier
<jerome.forissier at linaro.org> napsal:
>
> Prepare the introduction of the lwIP (lightweight IP) TCP/IP stack by
> adding a new net/lwip/ directory and the NET_LWIP symbol. Network
> support is either NO_NET, NET (legacy stack) or NET_LWIP. Subsequent
> commits will introduce the lwIP code, re-work the NETDEVICE integration
> and port some of the NET commands and features to lwIP.
>
> SPL_NET cannot be enabled when NET_LWIP=y. SPL_NET pulls some symbols
> that are part of NET (such as arp_init(), arp_timeout_check(),
> arp_receive(), net_arp_wait_packet_ip()). lwIP support in SPL may be
> added later.
>
> Similarly, DFU_TFTP and FASTBOOT are not compatible with NET_LWIP
> because of dependencies on net_loop(), tftp_timeout_ms,
> tftp_timeout_count_max and other NET things. Let's add a dependency on
> !NET_LWIP for now.
>
> As for SANDBOX, NET_LWIP cannot be used either because of strong
> assumptions on the network stack. Make NET_LWIP depend on !SANDBOX so
> that the NET_LWIP alternative is not visible in make menuconfig when
> sandbox_defconfig is used.
>
> Signed-off-by: Jerome Forissier <jerome.forissier at linaro.org>
> ---
>  Kconfig                    | 26 ++++++++++++++++++++++++++
>  common/Kconfig             |  2 +-
>  common/spl/Kconfig         |  1 +
>  drivers/dfu/Kconfig        |  1 +
>  drivers/fastboot/Kconfig   |  1 +
>  drivers/net/Kconfig        |  1 +
>  drivers/net/phy/Kconfig    |  2 +-
>  drivers/usb/gadget/Kconfig |  2 +-
>  net/Kconfig                | 29 +++++++++++++++--------------
>  net/Makefile               |  4 ++++
>  net/lwip/Kconfig           | 36 ++++++++++++++++++++++++++++++++++++
>  11 files changed, 88 insertions(+), 17 deletions(-)
>  create mode 100644 net/lwip/Kconfig
>
> diff --git a/Kconfig b/Kconfig
> index 82df59f176e..61bc6529617 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -745,6 +745,32 @@ source "dts/Kconfig"
>
>  source "env/Kconfig"
>
> +choice
> +       prompt "Networking stack"
> +       default NET
> +
> +config NO_NET
> +       bool "No networking support"
> +
> +config NET
> +       bool "Legacy U-Boot networking stack"
> +       imply NETDEVICES
> +
> +config NET_LWIP
> +       bool "Use lwIP for networking stack"
> +       imply NETDEVICES
> +       depends on !SANDBOX
> +       help
> +         Include networking support based on the lwIP (lightweight IP)
> +         TCP/IP stack (https://nongnu.org/lwip). This is a replacement for
> +         the default U-Boot network stack and applications located in net/
> +         and enabled via CONFIG_NET as well as other pieces of code that
> +         depend on CONFIG_NET (such as cmd/net.c enabled via CONFIG_CMD_NET).
> +         Therefore the two symbols CONFIG_NET and CONFIG_NET_LWIP are mutually
> +         exclusive.
> +
> +endchoice
> +
>  source "net/Kconfig"
>
>  source "drivers/Kconfig"
> diff --git a/common/Kconfig b/common/Kconfig
> index 4bb9f08977a..1daa495080a 100644
> --- a/common/Kconfig
> +++ b/common/Kconfig
> @@ -424,7 +424,7 @@ config LOGF_FUNC_PAD
>
>  config LOG_SYSLOG
>         bool "Log output to syslog server"
> -       depends on NET
> +       depends on NET || NET_LWIP
>         help
>           Enables a log driver which broadcasts log records via UDP port 514
>           to syslog servers.
> diff --git a/common/spl/Kconfig b/common/spl/Kconfig
> index af43b5f5d3c..2731849841a 100644
> --- a/common/spl/Kconfig
> +++ b/common/spl/Kconfig
> @@ -1063,6 +1063,7 @@ config SPL_DM_SPI_FLASH
>
>  config SPL_NET
>         bool "Support networking"
> +       depends on !NET_LWIP
>         help
>           Enable support for network devices (such as Ethernet) in SPL.
>           This permits SPL to load U-Boot over a network link rather than
> diff --git a/drivers/dfu/Kconfig b/drivers/dfu/Kconfig
> index 971204758aa..d034b501360 100644
> --- a/drivers/dfu/Kconfig
> +++ b/drivers/dfu/Kconfig
> @@ -20,6 +20,7 @@ config DFU_WRITE_ALT
>  config DFU_TFTP
>         bool "DFU via TFTP"
>         depends on NETDEVICES
> +       depends on !NET_LWIP
>         select UPDATE_COMMON
>         select DFU_OVER_TFTP
>         help
> diff --git a/drivers/fastboot/Kconfig b/drivers/fastboot/Kconfig
> index 70207573de2..1eb460f5a02 100644
> --- a/drivers/fastboot/Kconfig
> +++ b/drivers/fastboot/Kconfig
> @@ -1,5 +1,6 @@
>  menu "Fastboot support"
>         depends on CMDLINE
> +       depends on !NET_LWIP
>
>  config FASTBOOT
>         bool
> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
> index b4ff033afa9..d332f712a7c 100644
> --- a/drivers/net/Kconfig
> +++ b/drivers/net/Kconfig
> @@ -48,6 +48,7 @@ config DM_DSA
>         bool "Enable Driver Model for DSA switches"
>         depends on DM_MDIO
>         depends on PHY_FIXED
> +       depends on !NET_LWIP
>         help
>           Enable driver model for DSA switches
>
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index 73064b2af68..75986162914 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -11,7 +11,7 @@ config MV88E6352_SWITCH
>
>  menuconfig PHYLIB
>         bool "Ethernet PHY (physical media interface) support"
> -       depends on NET
> +       depends on NET || NET_LWIP
>         help
>           Enable Ethernet PHY (physical media interface) support.
>
> diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
> index 4621a6fd5e6..03fe3bca197 100644
> --- a/drivers/usb/gadget/Kconfig
> +++ b/drivers/usb/gadget/Kconfig
> @@ -224,7 +224,7 @@ endif # USB_GADGET_DOWNLOAD
>
>  config USB_ETHER
>         bool "USB Ethernet Gadget"
> -       depends on NET
> +       depends on NET || NET_LWIP
>         default y if ARCH_SUNXI && USB_MUSB_GADGET
>         help
>           Creates an Ethernet network device through a USB peripheral
> diff --git a/net/Kconfig b/net/Kconfig
> index 5dff6336293..952690d677d 100644
> --- a/net/Kconfig
> +++ b/net/Kconfig
> @@ -2,11 +2,6 @@
>  # Network configuration
>  #
>
> -menuconfig NET
> -       bool "Networking support"
> -       default y
> -       imply NETDEVICES
> -

I looked at menuconfig and saw that so many network options are on the
first screen.
TBH It doesn't look nice and I think it should be hidden in any menu.

  │ │        Environment  --->
     │ │
  │ │        Networking stack (Legacy U-Boot networking stack)  --->
     │ │
  │ │    (5000) Milliseconds before trying ARP again
     │ │
  │ │    (5) Number of timeouts before giving up
     │ │
  │ │    [ ] Enable generic udp framework
     │ │
  │ │    [ ] Send hostname to DNS server
     │ │
  │ │    [*] Random ethaddr if unset
     │ │
  │ │    [*] NetConsole support
     │ │
  │ │    [ ] Support IP datagram reassembly
     │ │
  │ │    [*] Echo the inverted Ethernet link state to the fault LED
     │ │
  │ │    [ ] Set TFTP UDP source/destination ports via the environment
     │ │
  │ │    (1) TFTP window size
     │ │
  │ │    [ ] Track TFTP transfers based on file size option
     │ │
  │ │    [ ] Get serverip value from Proxy DHCP response
     │ │
  │ │    (100) # of additional milliseconds to wait for ProxyDHCP
response  │ │
  │ │    [ ] Write the server's MAC address to 'serveraddr'
     │ │
  │ │    [ ] Check the UDP checksum
     │ │
  │ │    [ ] Use the 'serverip' env var for tftp, not bootp
     │ │
  │ │    (64) Option 17 root path length
     │ │
  │ │    [ ] Set a default 'gateway' value in the environment
     │ │
  │ │    [ ] Set a default 'ipaddr' value in the environment
     │ │
  │ │    [ ] Set a default 'netmask' value in the environment
     │ │
  │ │    [ ] Set a default 'rootpath' value in the environment
     │ │
  │ │    [ ] Set a default 'serverip' value in the environment
     │ │
  │ │    -*- TCP stack
     │ │
  │ │    [ ]   TCP SACK support
     │ │
  │ │    [ ] IPv6 support
     │ │
  │ │    [ ] Enable debug traces in the lwIP library
     │ │
  │ │    [ ] Enable assertions in the lwIP library
     │ │
  │ │    [*] Enable bootdev for ethernet
     │ │
  │ │    (4) Number of receive packet buffers
     │ │
  │ │    (1468) TFTP block size
     │ │
  │ │        Device Drivers  --->
     │ │
  │ │        File systems  --->

M


More information about the U-Boot mailing list