[PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs

Fernando Fernandez Mancera posted 10 patches 1 month ago
Only 9 patches received!
There is a newer version of this series
[PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Fernando Fernandez Mancera 1 month ago
Configuring IPV6 as a module provides little or no benefit and requires
time and resources to maintain. Therefore, drop the support for it.

Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig
dependencies across the tree that explicitly checked for IPV6=m. Adjust
all the default configurations from CONFIG_IPV6=m to CONFIG_IPV6=y. In
addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR()
and MODULE_LICENSE().

This is also replacing module_init() by fs_initcall().

Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
---
 arch/arm64/configs/defconfig                | 2 +-
 arch/m68k/configs/amiga_defconfig           | 2 +-
 arch/m68k/configs/apollo_defconfig          | 2 +-
 arch/m68k/configs/atari_defconfig           | 2 +-
 arch/m68k/configs/bvme6000_defconfig        | 2 +-
 arch/m68k/configs/hp300_defconfig           | 2 +-
 arch/m68k/configs/mac_defconfig             | 2 +-
 arch/m68k/configs/multi_defconfig           | 2 +-
 arch/m68k/configs/mvme147_defconfig         | 2 +-
 arch/m68k/configs/mvme16x_defconfig         | 2 +-
 arch/m68k/configs/q40_defconfig             | 2 +-
 arch/m68k/configs/sun3_defconfig            | 2 +-
 arch/m68k/configs/sun3x_defconfig           | 2 +-
 drivers/infiniband/Kconfig                  | 1 -
 drivers/infiniband/hw/ocrdma/Kconfig        | 2 +-
 drivers/infiniband/ulp/ipoib/Kconfig        | 2 +-
 drivers/net/Kconfig                         | 9 ---------
 drivers/net/ethernet/broadcom/Kconfig       | 2 +-
 drivers/net/ethernet/chelsio/Kconfig        | 2 +-
 drivers/net/ethernet/mellanox/mlxsw/Kconfig | 1 -
 drivers/net/ethernet/netronome/Kconfig      | 1 -
 drivers/scsi/bnx2fc/Kconfig                 | 1 -
 drivers/scsi/bnx2i/Kconfig                  | 1 -
 drivers/scsi/cxgbi/cxgb3i/Kconfig           | 2 +-
 drivers/scsi/cxgbi/cxgb4i/Kconfig           | 2 +-
 fs/dlm/Kconfig                              | 2 +-
 fs/gfs2/Kconfig                             | 2 +-
 net/bridge/Kconfig                          | 1 -
 net/ipv4/Kconfig                            | 9 ++++-----
 net/ipv6/Kconfig                            | 6 +-----
 net/ipv6/af_inet6.c                         | 8 +-------
 net/l2tp/Kconfig                            | 1 -
 net/netfilter/Kconfig                       | 8 --------
 net/rxrpc/Kconfig                           | 2 +-
 net/sctp/Kconfig                            | 1 -
 net/tipc/Kconfig                            | 1 -
 36 files changed, 28 insertions(+), 65 deletions(-)

diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index b67d5b1fc45b..0651a771f5c1 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -140,7 +140,7 @@ CONFIG_IP_MULTICAST=y
 CONFIG_IP_PNP=y
 CONFIG_IP_PNP_DHCP=y
 CONFIG_IP_PNP_BOOTP=y
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_NETFILTER=y
 CONFIG_BRIDGE_NETFILTER=m
 CONFIG_NF_CONNTRACK=m
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig
index 31d16cba9879..ba511da41ec8 100644
--- a/arch/m68k/configs/amiga_defconfig
+++ b/arch/m68k/configs/amiga_defconfig
@@ -72,7 +72,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig
index c0c419ec9a9e..0a5f045c5a86 100644
--- a/arch/m68k/configs/apollo_defconfig
+++ b/arch/m68k/configs/apollo_defconfig
@@ -68,7 +68,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig
index 2b7547ecc4c4..d1506feb27f5 100644
--- a/arch/m68k/configs/atari_defconfig
+++ b/arch/m68k/configs/atari_defconfig
@@ -75,7 +75,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig
index 0b63787cff0d..4614d383fe9b 100644
--- a/arch/m68k/configs/bvme6000_defconfig
+++ b/arch/m68k/configs/bvme6000_defconfig
@@ -65,7 +65,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig
index 308836b60bba..d0e74a2f01e3 100644
--- a/arch/m68k/configs/hp300_defconfig
+++ b/arch/m68k/configs/hp300_defconfig
@@ -67,7 +67,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig
index 97e108c0d24f..aa5b8682503a 100644
--- a/arch/m68k/configs/mac_defconfig
+++ b/arch/m68k/configs/mac_defconfig
@@ -66,7 +66,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig
index 7e9f83af9af4..99e0bc09cb41 100644
--- a/arch/m68k/configs/multi_defconfig
+++ b/arch/m68k/configs/multi_defconfig
@@ -86,7 +86,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig
index 2fe33271d249..f36844c03074 100644
--- a/arch/m68k/configs/mvme147_defconfig
+++ b/arch/m68k/configs/mvme147_defconfig
@@ -64,7 +64,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig
index 4308daaa7f74..be89e951e8bc 100644
--- a/arch/m68k/configs/mvme16x_defconfig
+++ b/arch/m68k/configs/mvme16x_defconfig
@@ -65,7 +65,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig
index 36eb29ec54ee..0c1b17d12204 100644
--- a/arch/m68k/configs/q40_defconfig
+++ b/arch/m68k/configs/q40_defconfig
@@ -66,7 +66,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig
index 524a89fa6953..a39df48a3f19 100644
--- a/arch/m68k/configs/sun3_defconfig
+++ b/arch/m68k/configs/sun3_defconfig
@@ -61,7 +61,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig
index f4fbc65c52d9..921f2c138b48 100644
--- a/arch/m68k/configs/sun3x_defconfig
+++ b/arch/m68k/configs/sun3x_defconfig
@@ -62,7 +62,7 @@ CONFIG_INET_IPCOMP=m
 CONFIG_INET_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_INET_RAW_DIAG=m
-CONFIG_IPV6=m
+CONFIG_IPV6=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
index 78ac2ff5befd..23f4245f7d7d 100644
--- a/drivers/infiniband/Kconfig
+++ b/drivers/infiniband/Kconfig
@@ -4,7 +4,6 @@ menuconfig INFINIBAND
 	depends on HAS_IOMEM && HAS_DMA
 	depends on NET
 	depends on INET
-	depends on m || IPV6 != m
 	depends on !ALPHA
 	select DMA_SHARED_BUFFER
 	select IRQ_POLL
diff --git a/drivers/infiniband/hw/ocrdma/Kconfig b/drivers/infiniband/hw/ocrdma/Kconfig
index 54bd70bc4d1a..b50c5f507e7c 100644
--- a/drivers/infiniband/hw/ocrdma/Kconfig
+++ b/drivers/infiniband/hw/ocrdma/Kconfig
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config INFINIBAND_OCRDMA
 	tristate "Emulex One Connect HCA support"
-	depends on ETHERNET && NETDEVICES && PCI && INET && (IPV6 || IPV6=n)
+	depends on ETHERNET && NETDEVICES && PCI && INET
 	select NET_VENDOR_EMULEX
 	select BE2NET
 	help
diff --git a/drivers/infiniband/ulp/ipoib/Kconfig b/drivers/infiniband/ulp/ipoib/Kconfig
index 254e31a90a66..b5253a231bdd 100644
--- a/drivers/infiniband/ulp/ipoib/Kconfig
+++ b/drivers/infiniband/ulp/ipoib/Kconfig
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config INFINIBAND_IPOIB
 	tristate "IP-over-InfiniBand"
-	depends on NETDEVICES && INET && (IPV6 || IPV6=n)
+	depends on NETDEVICES && INET
 	help
 	  Support for the IP-over-InfiniBand protocol (IPoIB). This
 	  transports IP packets over InfiniBand so you can use your IB
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 17108c359216..46f37ec713b8 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -41,7 +41,6 @@ if NET_CORE
 config BONDING
 	tristate "Bonding driver support"
 	depends on INET
-	depends on IPV6 || IPV6=n
 	depends on TLS || TLS_DEVICE=n
 	help
 	  Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet
@@ -75,7 +74,6 @@ config DUMMY
 config WIREGUARD
 	tristate "WireGuard secure network tunnel"
 	depends on NET && INET
-	depends on IPV6 || !IPV6
 	select NET_UDP_TUNNEL
 	select DST_CACHE
 	select CRYPTO_LIB_CURVE25519
@@ -105,7 +103,6 @@ config WIREGUARD_DEBUG
 config OVPN
 	tristate "OpenVPN data channel offload"
 	depends on NET && INET
-	depends on IPV6 || !IPV6
 	select DST_CACHE
 	select NET_UDP_TUNNEL
 	select CRYPTO
@@ -202,7 +199,6 @@ config IPVLAN_L3S
 config IPVLAN
 	tristate "IP-VLAN support"
 	depends on INET
-	depends on IPV6 || !IPV6
 	help
 	  This allows one to create virtual devices off of a main interface
 	  and packets will be delivered based on the dest L3 (IPv6/IPv4 addr)
@@ -249,7 +245,6 @@ config VXLAN
 config GENEVE
 	tristate "Generic Network Virtualization Encapsulation"
 	depends on INET
-	depends on IPV6 || !IPV6
 	select NET_UDP_TUNNEL
 	select GRO_CELLS
 	help
@@ -265,7 +260,6 @@ config GENEVE
 config BAREUDP
 	tristate "Bare UDP Encapsulation"
 	depends on INET
-	depends on IPV6 || !IPV6
 	select NET_UDP_TUNNEL
 	select GRO_CELLS
 	help
@@ -308,7 +302,6 @@ config PFCP
 config AMT
 	tristate "Automatic Multicast Tunneling (AMT)"
 	depends on INET && IP_MULTICAST
-	depends on IPV6 || !IPV6
 	select NET_UDP_TUNNEL
 	help
 	  This allows one to create AMT(Automatic Multicast Tunneling)
@@ -479,7 +472,6 @@ config NET_VRF
 	tristate "Virtual Routing and Forwarding (Lite)"
 	depends on IP_MULTIPLE_TABLES
 	depends on NET_L3_MASTER_DEV
-	depends on IPV6 || IPV6=n
 	depends on IPV6_MULTIPLE_TABLES || IPV6=n
 	help
 	  This option enables the support for mapping interfaces into VRF's. The
@@ -614,7 +606,6 @@ config NETDEVSIM
 	tristate "Simulated networking device"
 	depends on DEBUG_FS
 	depends on INET
-	depends on IPV6 || IPV6=n
 	depends on PSAMPLE || PSAMPLE=n
 	depends on PTP_1588_CLOCK_MOCK || PTP_1588_CLOCK_MOCK=n
 	select NET_DEVLINK
diff --git a/drivers/net/ethernet/broadcom/Kconfig b/drivers/net/ethernet/broadcom/Kconfig
index cd7dddeb91dd..3190231c91da 100644
--- a/drivers/net/ethernet/broadcom/Kconfig
+++ b/drivers/net/ethernet/broadcom/Kconfig
@@ -96,7 +96,7 @@ config BNX2
 
 config CNIC
 	tristate "QLogic CNIC support"
-	depends on PCI && (IPV6 || IPV6=n)
+	depends on PCI
 	select BNX2
 	select UIO
 	help
diff --git a/drivers/net/ethernet/chelsio/Kconfig b/drivers/net/ethernet/chelsio/Kconfig
index c931ec8cac40..96d7779cd2f0 100644
--- a/drivers/net/ethernet/chelsio/Kconfig
+++ b/drivers/net/ethernet/chelsio/Kconfig
@@ -68,7 +68,7 @@ config CHELSIO_T3
 
 config CHELSIO_T4
 	tristate "Chelsio Communications T4/T5/T6 Ethernet support"
-	depends on PCI && (IPV6 || IPV6=n) && (TLS || TLS=n)
+	depends on PCI && (TLS || TLS=n)
 	depends on PTP_1588_CLOCK_OPTIONAL
 	select FW_LOADER
 	select MDIO
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
index 74f7e27b490f..2229a2694aa5 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
@@ -56,7 +56,6 @@ config MLXSW_SPECTRUM
 	depends on MLXSW_CORE && MLXSW_PCI && NET_SWITCHDEV && VLAN_8021Q
 	depends on PSAMPLE || PSAMPLE=n
 	depends on BRIDGE || BRIDGE=n
-	depends on IPV6 || IPV6=n
 	depends on NET_IPGRE || NET_IPGRE=n
 	depends on IPV6_GRE || IPV6_GRE=n
 	depends on VXLAN || VXLAN=n
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index d03d6e96f730..d115d16d4649 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -33,7 +33,6 @@ config NFP_APP_FLOWER
 	bool "NFP4000/NFP6000 TC Flower offload support"
 	depends on NFP
 	depends on NET_SWITCHDEV
-	depends on IPV6!=m || NFP=m
 	default y
 	help
 	  Enable driver support for TC Flower offload on NFP4000 and NFP6000.
diff --git a/drivers/scsi/bnx2fc/Kconfig b/drivers/scsi/bnx2fc/Kconfig
index 3cf7e08df809..d12eeb13384a 100644
--- a/drivers/scsi/bnx2fc/Kconfig
+++ b/drivers/scsi/bnx2fc/Kconfig
@@ -2,7 +2,6 @@
 config SCSI_BNX2X_FCOE
 	tristate "QLogic FCoE offload support"
 	depends on PCI
-	depends on (IPV6 || IPV6=n)
 	depends on LIBFC
 	depends on LIBFCOE
 	select NETDEVICES
diff --git a/drivers/scsi/bnx2i/Kconfig b/drivers/scsi/bnx2i/Kconfig
index 75ace2302fed..e649a04fab1d 100644
--- a/drivers/scsi/bnx2i/Kconfig
+++ b/drivers/scsi/bnx2i/Kconfig
@@ -3,7 +3,6 @@ config SCSI_BNX2_ISCSI
 	tristate "QLogic NetXtreme II iSCSI support"
 	depends on NET
 	depends on PCI
-	depends on (IPV6 || IPV6=n)
 	select SCSI_ISCSI_ATTRS
 	select NETDEVICES
 	select ETHERNET
diff --git a/drivers/scsi/cxgbi/cxgb3i/Kconfig b/drivers/scsi/cxgbi/cxgb3i/Kconfig
index e20e6f3bfe64..143e881ec77e 100644
--- a/drivers/scsi/cxgbi/cxgb3i/Kconfig
+++ b/drivers/scsi/cxgbi/cxgb3i/Kconfig
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config SCSI_CXGB3_ISCSI
 	tristate "Chelsio T3 iSCSI support"
-	depends on PCI && INET && (IPV6 || IPV6=n)
+	depends on PCI && INET
 	select NETDEVICES
 	select ETHERNET
 	select NET_VENDOR_CHELSIO
diff --git a/drivers/scsi/cxgbi/cxgb4i/Kconfig b/drivers/scsi/cxgbi/cxgb4i/Kconfig
index 63c8a0f3cd0c..dd1c8ff36b00 100644
--- a/drivers/scsi/cxgbi/cxgb4i/Kconfig
+++ b/drivers/scsi/cxgbi/cxgb4i/Kconfig
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config SCSI_CXGB4_ISCSI
 	tristate "Chelsio T4 iSCSI support"
-	depends on PCI && INET && (IPV6 || IPV6=n)
+	depends on PCI && INET
 	depends on PTP_1588_CLOCK_OPTIONAL
 	depends on THERMAL || !THERMAL
 	depends on ETHERNET
diff --git a/fs/dlm/Kconfig b/fs/dlm/Kconfig
index b46165df5a91..fb6ba9f5a634 100644
--- a/fs/dlm/Kconfig
+++ b/fs/dlm/Kconfig
@@ -2,7 +2,7 @@
 menuconfig DLM
 	tristate "Distributed Lock Manager (DLM)"
 	depends on INET
-	depends on SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n)
+	depends on SYSFS && CONFIGFS_FS
 	help
 	A general purpose distributed lock manager for kernel or userspace
 	applications.
diff --git a/fs/gfs2/Kconfig b/fs/gfs2/Kconfig
index 7bd231d16d4a..8beee571b6af 100644
--- a/fs/gfs2/Kconfig
+++ b/fs/gfs2/Kconfig
@@ -26,7 +26,7 @@ config GFS2_FS
 
 config GFS2_FS_LOCKING_DLM
 	bool "GFS2 DLM locking"
-	depends on (GFS2_FS!=n) && NET && INET && (IPV6 || IPV6=n) && \
+	depends on (GFS2_FS!=n) && NET && INET && \
 		CONFIGFS_FS && SYSFS && (DLM=y || DLM=GFS2_FS)
 	help
 	  Multiple node locking module for GFS2
diff --git a/net/bridge/Kconfig b/net/bridge/Kconfig
index 3c8ded7d3e84..318715c8fc9b 100644
--- a/net/bridge/Kconfig
+++ b/net/bridge/Kconfig
@@ -7,7 +7,6 @@ config BRIDGE
 	tristate "802.1d Ethernet Bridging"
 	select LLC
 	select STP
-	depends on IPV6 || IPV6=n
 	help
 	  If you say Y here, then your Linux box will be able to act as an
 	  Ethernet bridge, which means that the different Ethernet segments it
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index df922f9f5289..21e5164e30db 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -191,7 +191,7 @@ config NET_IP_TUNNEL
 
 config NET_IPGRE
 	tristate "IP: GRE tunnels over IP"
-	depends on (IPV6 || IPV6=n) && NET_IPGRE_DEMUX
+	depends on NET_IPGRE_DEMUX
 	select NET_IP_TUNNEL
 	help
 	  Tunneling means encapsulating data of one protocol type within
@@ -303,7 +303,6 @@ config SYN_COOKIES
 
 config NET_IPVTI
 	tristate "Virtual (secure) IP: tunneling"
-	depends on IPV6 || IPV6=n
 	select INET_TUNNEL
 	select NET_IP_TUNNEL
 	select XFRM
@@ -439,7 +438,7 @@ config INET_TCP_DIAG
 
 config INET_UDP_DIAG
 	tristate "UDP: socket monitoring interface"
-	depends on INET_DIAG && (IPV6 || IPV6=n)
+	depends on INET_DIAG
 	default n
 	help
 	  Support for UDP socket monitoring interface used by the ss tool.
@@ -447,7 +446,7 @@ config INET_UDP_DIAG
 
 config INET_RAW_DIAG
 	tristate "RAW: socket monitoring interface"
-	depends on INET_DIAG && (IPV6 || IPV6=n)
+	depends on INET_DIAG
 	default n
 	help
 	  Support for RAW socket monitoring interface used by the ss tool.
@@ -750,7 +749,7 @@ config TCP_AO
 	select CRYPTO
 	select CRYPTO_LIB_UTILS
 	select TCP_SIGPOOL
-	depends on 64BIT && IPV6 != m # seq-number extension needs WRITE_ONCE(u64)
+	depends on 64BIT # seq-number extension needs WRITE_ONCE(u64)
 	help
 	  TCP-AO specifies the use of stronger Message Authentication Codes (MACs),
 	  protects against replays for long-lived TCP connections, and
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig
index b8f9a8c0302e..c024aa77f25b 100644
--- a/net/ipv6/Kconfig
+++ b/net/ipv6/Kconfig
@@ -3,9 +3,8 @@
 # IPv6 configuration
 #
 
-#   IPv6 as module will cause a CRASH if you try to unload it
 menuconfig IPV6
-	tristate "The IPv6 protocol"
+	bool "The IPv6 protocol"
 	default y
 	select CRYPTO_LIB_SHA1
 	help
@@ -17,9 +16,6 @@ menuconfig IPV6
 	  Documentation/networking/ipv6.rst and read the HOWTO at
 	  <https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/>
 
-	  To compile this protocol support as a module, choose M here: the
-	  module will be called ipv6.
-
 if IPV6
 
 config IPV6_ROUTER_PREF
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index 0b995a961359..cfdac4753683 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -71,10 +71,6 @@
 
 #include "ip6_offload.h"
 
-MODULE_AUTHOR("Cast of dozens");
-MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
-MODULE_LICENSE("GPL");
-
 /* The inetsw6 table contains everything that inet6_create needs to
  * build a new socket.
  */
@@ -1312,6 +1308,4 @@ static int __init inet6_init(void)
 	proto_unregister(&tcpv6_prot);
 	goto out;
 }
-module_init(inet6_init);
-
-MODULE_ALIAS_NETPROTO(PF_INET6);
+fs_initcall(inet6_init);
diff --git a/net/l2tp/Kconfig b/net/l2tp/Kconfig
index b7856748e960..0de178d5baba 100644
--- a/net/l2tp/Kconfig
+++ b/net/l2tp/Kconfig
@@ -5,7 +5,6 @@
 
 menuconfig L2TP
 	tristate "Layer Two Tunneling Protocol (L2TP)"
-	depends on (IPV6 || IPV6=n)
 	depends on INET
 	select NET_UDP_TUNNEL
 	help
diff --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
index 6cdc994fdc8a..f3ea0cb26f36 100644
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -249,7 +249,6 @@ config NF_CONNTRACK_FTP
 
 config NF_CONNTRACK_H323
 	tristate "H.323 protocol support"
-	depends on IPV6 || IPV6=n
 	depends on NETFILTER_ADVANCED
 	help
 	  H.323 is a VoIP signalling protocol from ITU-T. As one of the most
@@ -589,7 +588,6 @@ config NFT_QUOTA
 config NFT_REJECT
 	default m if NETFILTER_ADVANCED=n
 	tristate "Netfilter nf_tables reject support"
-	depends on !NF_TABLES_INET || (IPV6!=m || m)
 	help
 	  This option adds the "reject" expression that you can use to
 	  explicitly deny and notify via TCP reset/ICMP informational errors
@@ -636,7 +634,6 @@ config NFT_XFRM
 
 config NFT_SOCKET
 	tristate "Netfilter nf_tables socket match support"
-	depends on IPV6 || IPV6=n
 	select NF_SOCKET_IPV4
 	select NF_SOCKET_IPV6 if NF_TABLES_IPV6
 	help
@@ -652,7 +649,6 @@ config NFT_OSF
 
 config NFT_TPROXY
 	tristate "Netfilter nf_tables tproxy support"
-	depends on IPV6 || IPV6=n
 	select NF_DEFRAG_IPV4
 	select NF_DEFRAG_IPV6 if NF_TABLES_IPV6
 	select NF_TPROXY_IPV4
@@ -1071,7 +1067,6 @@ config NETFILTER_XT_TARGET_MASQUERADE
 config NETFILTER_XT_TARGET_TEE
 	tristate '"TEE" - packet cloning to alternate destination'
 	depends on NETFILTER_ADVANCED
-	depends on IPV6 || IPV6=n
 	depends on !NF_CONNTRACK || NF_CONNTRACK
 	depends on IP6_NF_IPTABLES || !IP6_NF_IPTABLES
 	select NF_DUP_IPV4
@@ -1084,7 +1079,6 @@ config NETFILTER_XT_TARGET_TPROXY
 	tristate '"TPROXY" target transparent proxying support'
 	depends on NETFILTER_XTABLES
 	depends on NETFILTER_ADVANCED
-	depends on IPV6 || IPV6=n
 	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
 	depends on IP_NF_MANGLE || NFT_COMPAT
 	select NF_DEFRAG_IPV4
@@ -1126,7 +1120,6 @@ config NETFILTER_XT_TARGET_SECMARK
 
 config NETFILTER_XT_TARGET_TCPMSS
 	tristate '"TCPMSS" target support'
-	depends on IPV6 || IPV6=n
 	default m if NETFILTER_ADVANCED=n
 	help
 	  This option adds a `TCPMSS' target, which allows you to alter the
@@ -1581,7 +1574,6 @@ config NETFILTER_XT_MATCH_SOCKET
 	tristate '"socket" match support'
 	depends on NETFILTER_XTABLES
 	depends on NETFILTER_ADVANCED
-	depends on IPV6 || IPV6=n
 	depends on IP6_NF_IPTABLES || IP6_NF_IPTABLES=n
 	select NF_SOCKET_IPV4
 	select NF_SOCKET_IPV6 if IP6_NF_IPTABLES
diff --git a/net/rxrpc/Kconfig b/net/rxrpc/Kconfig
index f60b81c66078..43416b3026fb 100644
--- a/net/rxrpc/Kconfig
+++ b/net/rxrpc/Kconfig
@@ -25,7 +25,7 @@ if AF_RXRPC
 
 config AF_RXRPC_IPV6
 	bool "IPv6 support for RxRPC"
-	depends on (IPV6 = m && AF_RXRPC = m) || (IPV6 = y && AF_RXRPC)
+	depends on IPV6
 	help
 	  Say Y here to allow AF_RXRPC to use IPV6 UDP as well as IPV4 UDP as
 	  its network transport.
diff --git a/net/sctp/Kconfig b/net/sctp/Kconfig
index e947646a380c..fc989a3791b3 100644
--- a/net/sctp/Kconfig
+++ b/net/sctp/Kconfig
@@ -6,7 +6,6 @@
 menuconfig IP_SCTP
 	tristate "The SCTP Protocol"
 	depends on INET
-	depends on IPV6 || IPV6=n
 	select CRYPTO_LIB_SHA1
 	select CRYPTO_LIB_SHA256
 	select CRYPTO_LIB_UTILS
diff --git a/net/tipc/Kconfig b/net/tipc/Kconfig
index bb0d71eb02a6..18f62135e47b 100644
--- a/net/tipc/Kconfig
+++ b/net/tipc/Kconfig
@@ -6,7 +6,6 @@
 menuconfig TIPC
 	tristate "The TIPC Protocol"
 	depends on INET
-	depends on IPV6 || IPV6=n
 	help
 	  The Transparent Inter Process Communication (TIPC) protocol is
 	  specially designed for intra cluster communication. This protocol
-- 
2.53.0
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Krzysztof Kozlowski 1 month ago
On 09/03/2026 03:19, Fernando Fernandez Mancera wrote:
> Configuring IPV6 as a module provides little or no benefit and requires
> time and resources to maintain. Therefore, drop the support for it.
> 
> Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig
> dependencies across the tree that explicitly checked for IPV6=m. Adjust
> all the default configurations from CONFIG_IPV6=m to CONFIG_IPV6=y. In
> addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR()
> and MODULE_LICENSE().
> 
> This is also replacing module_init() by fs_initcall().
> 
> Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
> ---
>  arch/arm64/configs/defconfig                | 2 +-
>  arch/m68k/configs/amiga_defconfig           | 2 +-
>  arch/m68k/configs/apollo_defconfig          | 2 +-
>  arch/m68k/configs/atari_defconfig           | 2 +-
>  arch/m68k/configs/bvme6000_defconfig        | 2 +-
>  arch/m68k/configs/hp300_defconfig           | 2 +-
>  arch/m68k/configs/mac_defconfig             | 2 +-
>  arch/m68k/configs/multi_defconfig           | 2 +-
>  arch/m68k/configs/mvme147_defconfig         | 2 +-
>  arch/m68k/configs/mvme16x_defconfig         | 2 +-
>  arch/m68k/configs/q40_defconfig             | 2 +-
>  arch/m68k/configs/sun3_defconfig            | 2 +-
>  arch/m68k/configs/sun3x_defconfig           | 2 +-
>  drivers/infiniband/Kconfig                  | 1 -
>  drivers/infiniband/hw/ocrdma/Kconfig        | 2 +-
>  drivers/infiniband/ulp/ipoib/Kconfig        | 2 +-
>  drivers/net/Kconfig                         | 9 ---------
>  drivers/net/ethernet/broadcom/Kconfig       | 2 +-
>  drivers/net/ethernet/chelsio/Kconfig        | 2 +-
>  drivers/net/ethernet/mellanox/mlxsw/Kconfig | 1 -
>  drivers/net/ethernet/netronome/Kconfig      | 1 -
>  drivers/scsi/bnx2fc/Kconfig                 | 1 -
>  drivers/scsi/bnx2i/Kconfig                  | 1 -
>  drivers/scsi/cxgbi/cxgb3i/Kconfig           | 2 +-
>  drivers/scsi/cxgbi/cxgb4i/Kconfig           | 2 +-
>  fs/dlm/Kconfig                              | 2 +-
>  fs/gfs2/Kconfig                             | 2 +-
>  net/bridge/Kconfig                          | 1 -
>  net/ipv4/Kconfig                            | 9 ++++-----
>  net/ipv6/Kconfig                            | 6 +-----
>  net/ipv6/af_inet6.c                         | 8 +-------
>  net/l2tp/Kconfig                            | 1 -
>  net/netfilter/Kconfig                       | 8 --------
>  net/rxrpc/Kconfig                           | 2 +-
>  net/sctp/Kconfig                            | 1 -
>  net/tipc/Kconfig                            | 1 -
>  36 files changed, 28 insertions(+), 65 deletions(-)
> 
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
> index b67d5b1fc45b..0651a771f5c1 100644
> --- a/arch/arm64/configs/defconfig
> +++ b/arch/arm64/configs/defconfig
> @@ -140,7 +140,7 @@ CONFIG_IP_MULTICAST=y
>  CONFIG_IP_PNP=y
>  CONFIG_IP_PNP_DHCP=y
>  CONFIG_IP_PNP_BOOTP=y
> -CONFIG_IPV6=m
> +CONFIG_IPV6=y
>  CONFIG_NETFILTER=y
>  CONFIG_BRIDGE_NETFILTER=m
>  CONFIG_NF_CONNTRACK=m

No, I don't want IPV6. It is allowed as module if some users need, but
it's heavy bloat added to each person's build testing setup. Kernel
image is already huge and barely fits boot partitions when built with
KASAN and I do want a generic image with KASAN.

It must stay module for me. Alternatively, drop it, but then some users
will be really affected.

Best regards,
Krzysztof
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Kolbjørn Barmen 4 weeks, 1 day ago
On Mon, 9 Mar 2026, Krzysztof Kozlowski wrote:

> On 09/03/2026 03:19, Fernando Fernandez Mancera wrote:
> > Configuring IPV6 as a module provides little or no benefit and requires
> > time and resources to maintain. Therefore, drop the support for it.
> > 
> > Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig
> > dependencies across the tree that explicitly checked for IPV6=m. Adjust
> > all the default configurations from CONFIG_IPV6=m to CONFIG_IPV6=y. In
> > addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR()
> > and MODULE_LICENSE().
> > 
> > This is also replacing module_init() by fs_initcall().
> > 
> > Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
> > ---
-->8--
> No, I don't want IPV6. It is allowed as module if some users need, but
> it's heavy bloat added to each person's build testing setup. Kernel
> image is already huge and barely fits boot partitions when built with
> KASAN and I do want a generic image with KASAN.
> 
> It must stay module for me. Alternatively, drop it, but then some users
> will be really affected.

I agree. If anything I would prefer to see IPv4 be made optional (and
modular) as well, and not as something IPv6 depends on, it's (AFAIK)
impossible today to build an IPv6-only Linux kernel. 

-- kolla
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Arnd Bergmann 4 weeks, 1 day ago
On Tue, Mar 10, 2026, at 20:40, Kolbjørn Barmen wrote:
> On Mon, 9 Mar 2026, Krzysztof Kozlowski wrote:
>> On 09/03/2026 03:19, Fernando Fernandez Mancera wrote:
>>
>> It must stay module for me. Alternatively, drop it, but then some users
>> will be really affected.
>
> I agree. If anything I would prefer to see IPv4 be made optional (and
> modular) as well, and not as something IPv6 depends on, it's (AFAIK)
> impossible today to build an IPv6-only Linux kernel. 

My first feeling was that this is a bad idea as well. On the other hand
I found that the default changed from =m to -y over 10 years ago, all
recent distros listed in https://github.com/nyrahul/linux-kernel-configs
use that default (the only two exceptions are board specific builds
of Debian and Ubuntu for linux-5.x).

The list does not include openwrt though, and I know that in
previous releases, there was an optional kmod-ipv6 package
that could be left out of an install without rebuilding
the kernel. Configurations under 128MB are only partially
supported there these days, so maybe it's no longer important
for openwrt either, but it would be good to get a confirmation
from someone doing the packaging.

For optional IPv4 support, I would expect that it's possible
to make it a loadable module, with a significant amount of
work and little benefit. Loading an ipv6 module without also
loading ipv4 sounds completely unrealistic though, given
the way the code is structured today.

    Arnd
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Geert Uytterhoeven 4 weeks, 1 day ago
On Tue, 10 Mar 2026 at 20:58, Arnd Bergmann <arnd@arndb.de> wrote:
> On Tue, Mar 10, 2026, at 20:40, Kolbjørn Barmen wrote:
> > On Mon, 9 Mar 2026, Krzysztof Kozlowski wrote:
> >> On 09/03/2026 03:19, Fernando Fernandez Mancera wrote:
> >>
> >> It must stay module for me. Alternatively, drop it, but then some users
> >> will be really affected.
> >
> > I agree. If anything I would prefer to see IPv4 be made optional (and
> > modular) as well, and not as something IPv6 depends on, it's (AFAIK)
> > impossible today to build an IPv6-only Linux kernel.
>
> My first feeling was that this is a bad idea as well. On the other hand

Exactly my feeling. That's why I stayed quiet for a while, and gave
it some thought...

> I found that the default changed from =m to -y over 10 years ago, all
> recent distros listed in https://github.com/nyrahul/linux-kernel-configs
> use that default (the only two exceptions are board specific builds
> of Debian and Ubuntu for linux-5.x).

Thanks, that is something I was wondering too.

Obviously the world is moving the IPv6 (but having IPv6=m doesn't
preclude that!).  From the other side, there is a trend to have as much
as possible in modules instead of built-in.  A larger base kernel not
only has impact on memory usage (and loading modules has, too), but
also on e.g. boot partitions.  Various platform-specific limitations
may be at play (boot loader size limits, boot partition size limits,
base kernel must fit in the first memory block on systems with many
small discontiguous memory blocks, ...).

But apparently even the Android gki_defconfig (which is not on the
page mentioned above?) has IPv6 built-in.

Back to the numbers:
  - base kernel: atari_defconfig (CONFIG_IPv6=m)
  - with this series, CONFIG_IPv6=n: -22 KiB
  - with this series, CONFIG_IPv6=y: +246 KiB
Note that I ignored any defconfig changes in these series.
The size impact is almost the same for v1 and v2, but only v2 boots.

Each new kernel release increases kernel size by ca. 30-40 KiB on
average.  So a one-time increase of 246 KiB is not unsurmountable,
and slightly less than the increase between v6.14 and v6.19...

Gr{oetje,eeting}s,

                        Geert


--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Bjørn Mork 4 weeks, 1 day ago
"Arnd Bergmann" <arnd@arndb.de> writes:

> The list does not include openwrt though, and I know that in
> previous releases, there was an optional kmod-ipv6 package
> that could be left out of an install without rebuilding
> the kernel.

The kmod-ipv6 package was dropped in 2016:
https://github.com/openwrt/openwrt/commit/33beafa8d88e51907acba6fdece5a35f509934df

And IPv6 was unconditionally enabled in OpenWrt in 2022:
https://github.com/openwrt/openwrt/commit/832e7b817221d288df76b763ca12c585365db5d8


Bjørn
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Arnd Bergmann 4 weeks, 1 day ago
On Tue, Mar 10, 2026, at 22:18, Bjørn Mork wrote:
> "Arnd Bergmann" <arnd@arndb.de> writes:
>
>> The list does not include openwrt though, and I know that in
>> previous releases, there was an optional kmod-ipv6 package
>> that could be left out of an install without rebuilding
>> the kernel.
>
> The kmod-ipv6 package was dropped in 2016:
> https://github.com/openwrt/openwrt/commit/33beafa8d88e51907acba6fdece5a35f509934df
>
> And IPv6 was unconditionally enabled in OpenWrt in 2022:
> https://github.com/openwrt/openwrt/commit/832e7b817221d288df76b763ca12c585365db5d8

Thanks for checking!

Not sure what the commit log for the second one is trying to say, as
there generally was no build failure in mainline for a long time

But if nobody has bothered to revert the patch, it doesn't seem
to have caused any problems.

    Arnd
Re: [PATCH 01/10 net-next] ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Posted by Sabrina Dubroca 4 weeks, 1 day ago
2026-03-10, 20:58:15 +0100, Arnd Bergmann wrote:
> On Tue, Mar 10, 2026, at 20:40, Kolbjørn Barmen wrote:
> > On Mon, 9 Mar 2026, Krzysztof Kozlowski wrote:
> >> On 09/03/2026 03:19, Fernando Fernandez Mancera wrote:
> >>
> >> It must stay module for me. Alternatively, drop it, but then some users
> >> will be really affected.
> >
> > I agree. If anything I would prefer to see IPv4 be made optional (and
> > modular) as well, and not as something IPv6 depends on, it's (AFAIK)
> > impossible today to build an IPv6-only Linux kernel. 
> 
[...]
> For optional IPv4 support, I would expect that it's possible
> to make it a loadable module, with a significant amount of
> work and little benefit. Loading an ipv6 module without also
> loading ipv4 sounds completely unrealistic though, given
> the way the code is structured today.

I played with building IPv6-only kernels some years ago. It was
possible (at least for the reduced config I was using as a start), but
yes, a fair amount of investigation and churn, to find all the IPv4
common code and turn it into "generic" common code.

IPv4 as a module would get us in the same mess with have with IPv6,
let's not do that.

But even IPV4=n, I abandonned the idea because of the work/churn vs
benefit ratio.

-- 
Sabrina