kernel: Add KERNEL_DCB (Data Center Bridging)
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 19 Jan 2025 18:49:38 +0000 (19:49 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 9 Mar 2025 16:05:26 +0000 (17:05 +0100)
The kmod-mlxsw-spectrum driver activated CONFIG_DCB indirectly already
on all targets which are building this driver. All other DCB capable
driver did not activate their DCB support.

CONFIG_DCB increases the uncompressed kernel size by about 7.8KB.

CONFIG_DCB is only needed some data center Ethernet cards and not used
on normal routers. Activate it only on the x86_64 and the armsr_arm64
target which are used on normal servers or in VMs.

Link: https://github.com/openwrt/openwrt/pull/17672
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
config/Config-kernel.in
package/kernel/linux/modules/netdevices.mk
target/linux/generic/config-6.6
target/linux/loongarch64/config-6.6
target/linux/x86/modules.mk

index 64c8c63466a75a5eba33228d522c5c709375acc5..31d0e2dba4ec2a69a2bfc0186c28aeb2913d2f01 100644 (file)
@@ -1212,6 +1212,28 @@ config KERNEL_NET_L3_MASTER_DEV
          drivers to support L3 master devices like VRF.
          Increases the compressed kernel size by ~4kB (as of Linux 6.6).
 
+config KERNEL_DCB
+       bool "Data Center Bridging support"
+       default y if TARGET_armsr_armv8
+       default y if TARGET_x86_64
+       help
+         This enables support for configuring Data Center Bridging (DCB)
+         features on DCB capable Ethernet adapters via rtnetlink.  Say 'Y'
+         if you have a DCB capable Ethernet adapter which supports this
+         interface and you are connected to a DCB capable switch.
+
+         DCB is a collection of Ethernet enhancements which allow DCB capable
+         NICs and switches to support network traffic with differing
+         requirements (highly reliable, no drops vs. best effort vs. low
+         latency) to co-exist on Ethernet.
+
+         DCB features include:
+           Enhanced Transmission Selection (aka Priority Grouping) - provides a
+             framework for assigning bandwidth guarantees to traffic classes.
+           Priority-based Flow Control (PFC) - a MAC control pause frame which
+             works at the granularity of the 802.1p priority instead of the
+             link (802.3x).
+
 config KERNEL_XDP_SOCKETS
        bool "XDP sockets support"
        help
index d41870155551acf15e9ef075757dd603eea4c4d1..308958eb683fe080d648179c392e49f795a9f216 100644 (file)
@@ -1148,7 +1148,8 @@ define KernelPackage/ixgbe
   KCONFIG:=CONFIG_IXGBE \
     CONFIG_IXGBE_VXLAN=n \
     CONFIG_IXGBE_HWMON=y \
-    CONFIG_IXGBE_DCA=n
+    CONFIG_IXGBE_DCA=n \
+    CONFIG_IXGBE_DCB=y
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/ixgbe/ixgbe.ko
   AUTOLOAD:=$(call AutoLoad,35,ixgbe)
 endef
@@ -1186,7 +1187,8 @@ define KernelPackage/i40e
   KCONFIG:=CONFIG_I40E \
     CONFIG_I40E_VXLAN=n \
     CONFIG_I40E_HWMON=y \
-    CONFIG_I40E_DCA=n
+    CONFIG_I40E_DCA=n \
+    CONFIG_I40E_DCB=y
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/intel/i40e/i40e.ko
   AUTOLOAD:=$(call AutoProbe,i40e)
 endef
@@ -1600,7 +1602,7 @@ define KernelPackage/bnxt-en
          CONFIG_BNXT \
          CONFIG_BNXT_SRIOV=y \
          CONFIG_BNXT_FLOWER_OFFLOAD=y \
-         CONFIG_BNXT_DCB=n \
+         CONFIG_BNXT_DCB=y \
          CONFIG_BNXT_HWMON=y
   AUTOLOAD:=$(call AutoProbe,bnxt_en)
 endef
@@ -1642,7 +1644,7 @@ define KernelPackage/mlx4-core
        $(LINUX_DIR)/drivers/net/ethernet/mellanox/mlx4/mlx4_core.ko \
        $(LINUX_DIR)/drivers/net/ethernet/mellanox/mlx4/mlx4_en.ko
   KCONFIG:= CONFIG_MLX4_EN \
-       CONFIG_MLX4_EN_DCB=n \
+       CONFIG_MLX4_EN_DCB=y \
        CONFIG_MLX4_CORE=y \
        CONFIG_MLX4_CORE_GEN2=y \
        CONFIG_MLX4_DEBUG=n
@@ -1662,7 +1664,7 @@ define KernelPackage/mlx5-core
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.ko
   KCONFIG:= CONFIG_MLX5_CORE \
        CONFIG_MLX5_CORE_EN=y \
-       CONFIG_MLX5_CORE_EN_DCB=n \
+       CONFIG_MLX5_CORE_EN_DCB=y \
        CONFIG_MLX5_CORE_IPOIB=n \
        CONFIG_MLX5_EN_ARFS=n \
        CONFIG_MLX5_EN_IPSEC=n \
@@ -1781,8 +1783,7 @@ define KernelPackage/mlxsw-spectrum
   KCONFIG:= \
   CONFIG_MLXSW_SPECTRUM \
   CONFIG_MLXSW_SPECTRUM_DCB=y \
-  CONFIG_NET_SWITCHDEV=y \
-  CONFIG_DCB=y
+  CONFIG_NET_SWITCHDEV=y
   AUTOLOAD:=$(call AutoProbe,mlxsw_spectrum)
 endef
 
@@ -1817,7 +1818,8 @@ define KernelPackage/qlcnic
   KCONFIG:= \
        CONFIG_QLCNIC \
        CONFIG_QLCNIC_HWMON=y \
-       CONFIG_QLCNIC_SRIOV=y
+       CONFIG_QLCNIC_SRIOV=y \
+       CONFIG_QLCNIC_DCB=y
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/qlogic/qlcnic/qlcnic.ko
   AUTOLOAD:=$(call AutoProbe,qlcnic)
 endef
index d3b094eb585855096881f6a802379e30cc734121..ce2dc48ddef5f51b21b98b8eeef957ee4a8a6685 100644 (file)
@@ -179,7 +179,6 @@ CONFIG_ALLOW_DEV_COREDUMP=y
 # CONFIG_AMD_MEM_ENCRYPT is not set
 # CONFIG_AMD_PHY is not set
 # CONFIG_AMD_XGBE is not set
-# CONFIG_AMD_XGBE_DCB is not set
 # CONFIG_AMD_XGBE_HAVE_ECC is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_AMILO_RFKILL is not set
@@ -2531,7 +2530,6 @@ CONFIG_HZ_100=y
 # CONFIG_I3C is not set
 # CONFIG_I40E is not set
 # CONFIG_I40EVF is not set
-# CONFIG_I40E_DCB is not set
 # CONFIG_I6300ESB_WDT is not set
 # CONFIG_I82092 is not set
 # CONFIG_I82365 is not set
@@ -2883,7 +2881,6 @@ CONFIG_ISDN=y
 # CONFIG_IWLWIFI is not set
 # CONFIG_IXGBE is not set
 # CONFIG_IXGBEVF is not set
-# CONFIG_IXGBE_DCB is not set
 # CONFIG_JAILHOUSE_GUEST is not set
 # CONFIG_JBD2_DEBUG is not set
 # CONFIG_JFFS2_CMODE_FAVOURLZO is not set
@@ -4823,7 +4820,6 @@ CONFIG_PWRSEQ_SIMPLE=y
 # CONFIG_QFMT_V1 is not set
 # CONFIG_QLA3XXX is not set
 # CONFIG_QLCNIC is not set
-# CONFIG_QLCNIC_DCB is not set
 # CONFIG_QLGE is not set
 # CONFIG_QNX4FS_FS is not set
 # CONFIG_QNX6FS_FS is not set
index 553c7acbbcef4b66a57908f1e74ac7c930faa1f7..fe0c50c98d53b48328b3c5a997a31f4cb88da4ca 100644 (file)
@@ -169,7 +169,6 @@ CONFIG_CRYPTO_RNG2=y
 CONFIG_CRYPTO_RSA=y
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA256=y
-CONFIG_DCB=y
 CONFIG_DEBUG_BUGVERBOSE=y
 CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_INFO_COMPRESSED_NONE=y
index cdae01bce651f73ac90feb3ca53fac672f11e068..f43824571ac8077f20794bdc6c58fb40521cf8d7 100644 (file)
@@ -6,7 +6,9 @@ define KernelPackage/amd-xgbe
   SUBMENU:=$(NETWORK_DEVICES_MENU)
   TITLE:=AMD Ethernet on SoC support
   DEPENDS:=@PCI_SUPPORT @TARGET_x86_64 +kmod-lib-crc32c +kmod-ptp +kmod-libphy +kmod-mdio-devres
-  KCONFIG:=CONFIG_AMD_XGBE
+  KCONFIG:= \
+       CONFIG_AMD_XGBE \
+       CONFIG_AMD_XGBE_DCB=y
   FILES:=$(LINUX_DIR)/drivers/net/ethernet/amd/xgbe/amd-xgbe.ko
   AUTOLOAD:=$(call AutoLoad,35,amd-xgbe)
 endef