[openwrt/openwrt] kernel: Add KERNEL_DCB (Data Center Bridging)

LEDE Commits lede-commits at lists.infradead.org
Sun Mar 9 09:06:58 PDT 2025


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/40f1db9cb11d98ef0b5061b8e210e6351935df8a

commit 40f1db9cb11d98ef0b5061b8e210e6351935df8a
Author: Hauke Mehrtens <hauke at hauke-m.de>
AuthorDate: Sun Jan 19 19:49:38 2025 +0100

    kernel: Add KERNEL_DCB (Data Center Bridging)
    
    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 at hauke-m.de>
---
 config/Config-kernel.in                    | 22 ++++++++++++++++++++++
 package/kernel/linux/modules/netdevices.mk | 18 ++++++++++--------
 target/linux/generic/config-6.6            |  4 ----
 target/linux/loongarch64/config-6.6        |  1 -
 target/linux/x86/modules.mk                |  4 +++-
 5 files changed, 35 insertions(+), 14 deletions(-)

diff --git a/config/Config-kernel.in b/config/Config-kernel.in
index 64c8c63466..31d0e2dba4 100644
--- a/config/Config-kernel.in
+++ b/config/Config-kernel.in
@@ -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
diff --git a/package/kernel/linux/modules/netdevices.mk b/package/kernel/linux/modules/netdevices.mk
index d418701555..308958eb68 100644
--- a/package/kernel/linux/modules/netdevices.mk
+++ b/package/kernel/linux/modules/netdevices.mk
@@ -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
diff --git a/target/linux/generic/config-6.6 b/target/linux/generic/config-6.6
index d3b094eb58..ce2dc48dde 100644
--- a/target/linux/generic/config-6.6
+++ b/target/linux/generic/config-6.6
@@ -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
diff --git a/target/linux/loongarch64/config-6.6 b/target/linux/loongarch64/config-6.6
index 553c7acbbc..fe0c50c98d 100644
--- a/target/linux/loongarch64/config-6.6
+++ b/target/linux/loongarch64/config-6.6
@@ -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
diff --git a/target/linux/x86/modules.mk b/target/linux/x86/modules.mk
index cdae01bce6..f43824571a 100644
--- a/target/linux/x86/modules.mk
+++ b/target/linux/x86/modules.mk
@@ -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




More information about the lede-commits mailing list