[PATCH 0/6] net: migrate NO_NET out of the networking stack choice

Peter Robinson pbrobinson at gmail.com
Tue Apr 21 23:05:15 CEST 2026


This is something I've been meaning to do for ages, thanks for ticking
it off for me :)

Reviewed-by: Peter Robinson <pbrobinson at gmail.com>

On Mon, 20 Apr 2026 at 12:36, Quentin Schulz <foss+uboot at 0leil.net> wrote:
>
> This migrates the net options away from the main Kconfig to net/Kconfig,
> rename the current NET option to NET_LEGACY to really highlight what it
> is and hopefully encourage more people to use lwIP, add a new NET
> menuconfig (but keep NO_NET as an alias to NET=n for now) which then
> allows us to replace all the "if legacy_stack || lwip_stack" checks with
> "if net_support" which is easier to read and maintain.
>
> The only doubt I have is wrt SYS_RX_ETH_BUFFER which seems to be needed
> for now even when no network is configured? Likely due to
> include/net-common.h with PKTBUFSRX?
>
> No change in behavior is intended. Only change in defconfig including
> other defconfigs where NO_NET=y or NET is not set, in which case NO_NET
> is not set or NET=y should be set in the top defconfig. Similar change
> required for config fragments. See commit log in patch adding NET
> menuconfig for details.
>
> This was tested based on 70fd0c3bb7c2 ("x86: there is no
> CONFIG_UBOOT_ROMSIZE_KB_12288"), from within the GitLab CI container
> trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 and set up
> similarly as in "build all platforms in a single job" GitLab CI job.
>
>  #!/usr/bin/env bash
>  set -o pipefail
>  set -eux
>
>  ARGS="-BvelPEWM --reproducible-builds --step 0"
>  ./tools/buildman/buildman -o ${O} --force-build $ARGS -CE $*
>  ./tools/buildman/buildman -o ${O} $ARGS -Ssd $*
>
> O=../build/u-boot/ ../u-boot.sh -b master^..b4/net-kconfig |& tee ../log.txt
>
> I can't really decipher the log.txt, but there's no line starting with
> + which would be an error according to tools/buildman/builder.py help
> text. Additionally, because I started the script with set -e set and
> because buildman has an exit code != 0 when it fails to build a board,
> and I have the summary printed (which is the second buildman call), I
> believe it means all builds passed.
>
> The summary is the following:
>    aarch64: (for 537/537 boards) all +0.0 rodata +0.0
>             uniphier_v8    : all +1 rodata +1
>                u-boot: add: 0/0, grow: 1/0 bytes: 1/0 (1)
>                  function                                   old     new   delta
>                  data_gz                                  10640   10641      +1
>        arm: (for 733/733 boards) all -0.0 rodata -0.0
>             uniphier_v7    : all -1 rodata -1
>                u-boot: add: 0/0, grow: 0/-1 bytes: 0/-1 (-1)
>                  function                                   old     new   delta
>                  data_gz                                  11919   11918      -1
>             opos6uldev     : all -3 rodata -3
>                u-boot: add: 0/0, grow: 0/-1 bytes: 0/-3 (-3)
>                  function                                   old     new   delta
>                  data_gz                                  18778   18775      -3
>             uniphier_ld4_sld8: all -3 rodata -3
>                u-boot: add: 0/0, grow: 0/-1 bytes: 0/-3 (-3)
>                  function                                   old     new   delta
>                  data_gz                                  11276   11273      -3
>             stemmy         : all -20 rodata -20
>                u-boot: add: 0/0, grow: 0/-1 bytes: 0/-20 (-20)
>                  function                                   old     new   delta
>                  data_gz                                  15783   15763     -20
>
> As far as I could tell this data_gz is an automatically generated array
> when CONFIG_CMD_CONFIG is enabled. It is the compressed .config stored
> in binary form. Because I'm changing the name of symbols, replacing a
> menu with a menuconfig, additional text makes it to .config and the
> "# Networking" section in .config disappears.
>
> Here is the diff for the 5 defconfigs listed above, generated with:
>
> for f in build/*-m; do
>         diff --unified=0 $f/.config $(dirname $f)/$(basename -a -s '-m' $f)/.config
> done
>
> (-m is the build directory for master, and without the suffix, it's the
> top commit of this series)
>
> """
>  --- build/opos6uldev-m/.config 2026-04-20 10:53:49.804528526 +0200
>  +++ build/opos6uldev/.config   2026-04-20 11:03:37.430242767 +0200
>  @@ -970,4 +969,0 @@
>  -
>  -#
>  -# Networking
>  -#
>  @@ -975,0 +972 @@
>  +CONFIG_NET_LEGACY=y
>  --- build/stemmy-m/.config     2026-04-20 11:01:33.653698123 +0200
>  +++ build/stemmy/.config       2026-04-20 11:04:53.452577311 +0200
>  @@ -733,4 +732,0 @@
>  -
>  -#
>  -# Networking
>  -#
>  @@ -738,2 +733,0 @@
>  -# CONFIG_NET is not set
>  -# CONFIG_NET_LWIP is not set
>  --- build/uniphier_ld4_sld8-m/.config  2026-04-20 11:00:41.605469071 +0200
>  +++ build/uniphier_ld4_sld8/.config    2026-04-20 11:04:22.226439899 +0200
>  @@ -997,4 +996,0 @@
>  -
>  -#
>  -# Networking
>  -#
>  @@ -1002,0 +999 @@
>  +CONFIG_NET_LEGACY=y
>  --- build/uniphier_v7-m/.config        2026-04-20 10:53:04.019307319 +0200
>  +++ build/uniphier_v7/.config  2026-04-20 11:03:01.688085486 +0200
>  @@ -1004,4 +1003,0 @@
>  -
>  -#
>  -# Networking
>  -#
>  @@ -1009,0 +1006 @@
>  +CONFIG_NET_LEGACY=y
>  --- build/uniphier_v8-m/.config        2026-04-20 10:43:05.614441175 +0200
>  +++ build/uniphier_v8/.config  2026-04-20 10:41:03.214852130 +0200
>  @@ -875,4 +874,0 @@
>  -
>  -#
>  -# Networking
>  -#
>  @@ -880,0 +877 @@
>  +CONFIG_NET_LEGACY=y
> """
>
> This is fine:
> - Networking menu doesn't exist anymore so "#\n# Networking\n#\n" won't
>   be in .config anymore.
> - opos6uldev, uniphier_ld4_sld8, uniphier_v7 and uniphier_v8 all have
>   (old) CONFIG_NET enabled, (new) CONFIG_NET will still be set but
>   CONFIG_NET_LEGACY also needs to be defined now to reflect the stack
>   choice (even if default),
> - stemmy has CONFIG_NO_NET set, which means CONFIG_NET and
>   CONFIG_NET_LWIP are not reachable anymore hence why they don't need to
>   be part of .config,
>
> GitLab CI was run on this series (well, not exactly, but it's only
> changes to the git logs that were made):
> https://source.denx.de/u-boot/contributors/qschulz/u-boot/-/pipelines/29849
>
> It passes.
>
> Signed-off-by: Quentin Schulz <quentin.schulz at cherry.de>
> ---
> Quentin Schulz (6):
>       move networking menu in net/Kconfig
>       rename NET to NET_LEGACY
>       net: make NET a menuconfig (and downgrade NO_NET to a simple config)
>       simplify NET_LEGACY || NET_LWIP condition with NET condition
>       doc: remove mention to non-existing TPL_NET
>       boot: remove NO_NET use
>
>  Kconfig                                            | 34 ----------------
>  Makefile                                           |  4 +-
>  arch/arm/mach-stm32mp/soc.c                        |  2 +-
>  board/beacon/imx8mp/imx8mp_beacon.c                |  2 +-
>  board/engicam/imx8mp/icore_mx8mp.c                 |  2 +-
>  board/gateworks/venice/venice.c                    |  4 +-
>  board/nxp/ls1043ardb/Makefile                      |  2 +-
>  board/nxp/ls1046afrwy/Makefile                     |  2 +-
>  board/nxp/ls1046ardb/Makefile                      |  2 +-
>  .../imx8mp_debix_model_a/imx8mp_debix_model_a.c    |  2 +-
>  board/siemens/iot2050/board.c                      |  2 +-
>  board/sophgo/milkv_duo/Makefile                    |  2 +-
>  board/sophgo/milkv_duo/board.c                     |  2 +-
>  board/theadorable/theadorable.c                    |  4 +-
>  board/ti/am335x/board.c                            |  2 +-
>  board/toradex/verdin-imx8mp/verdin-imx8mp.c        |  2 +-
>  board/xilinx/common/board.c                        |  3 +-
>  boot/Kconfig                                       |  8 ++--
>  cmd/Kconfig                                        | 12 +++---
>  cmd/Makefile                                       |  2 +-
>  cmd/bdinfo.c                                       |  7 ++--
>  cmd/fastboot.c                                     |  4 +-
>  cmd/ufetch.c                                       |  2 +-
>  common/Kconfig                                     |  2 +-
>  common/board_r.c                                   |  4 +-
>  common/spl/Kconfig                                 |  5 ++-
>  configs/am62px_evm_r5_ethboot_defconfig            |  2 +-
>  configs/j722s_evm_r5_ethboot_defconfig             |  2 +-
>  doc/develop/bootstd/overview.rst                   |  2 +-
>  doc/develop/pytest/usage.rst                       |  4 +-
>  doc/usage/cmd/bdinfo.rst                           |  7 ++--
>  doc/usage/cmd/sntp.rst                             |  2 +-
>  doc/usage/cmd/wget.rst                             |  2 +-
>  doc/usage/spl_boot.rst                             |  2 +-
>  drivers/dfu/Kconfig                                |  2 +-
>  drivers/fastboot/Kconfig                           |  4 +-
>  drivers/fastboot/fb_common.c                       |  4 +-
>  drivers/net/Kconfig                                |  6 +--
>  drivers/net/phy/Kconfig                            |  4 +-
>  drivers/net/sandbox.c                              |  2 +-
>  drivers/usb/gadget/Kconfig                         |  2 +-
>  env/flags.c                                        | 10 ++---
>  include/configs/stm32mp15_common.h                 |  2 +-
>  include/configs/stm32mp23_common.h                 |  2 +-
>  include/configs/stm32mp25_common.h                 |  2 +-
>  include/env_callback.h                             |  2 +-
>  include/env_flags.h                                |  6 +--
>  include/net-common.h                               |  4 +-
>  include/net-legacy.h                               |  2 +-
>  lib/Kconfig                                        |  2 +-
>  lib/efi_loader/Kconfig                             |  4 +-
>  net/Kconfig                                        | 45 +++++++++++++++++++---
>  net/Makefile                                       |  6 +--
>  test/cmd/Makefile                                  |  2 +-
>  test/cmd/bdinfo.c                                  |  6 +--
>  test/dm/eth.c                                      |  6 +--
>  test/py/tests/test_efi_fit.py                      |  2 +-
>  test/py/tests/test_efi_loader.py                   |  2 +-
>  test/py/tests/test_fpga.py                         |  4 +-
>  test/py/tests/test_net.py                          |  2 +-
>  60 files changed, 139 insertions(+), 138 deletions(-)
> ---
> base-commit: 70fd0c3bb7c26d42f24d10145dd5f3168ac92eac
> change-id: 20251216-net-kconfig-0f63d9de716b
>
> Best regards,
> --
> Quentin Schulz <quentin.schulz at cherry.de>
>


More information about the U-Boot mailing list