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@hauke-m.de>
This commit is contained in:
Hauke Mehrtens 2025-01-19 19:49:38 +01:00
parent 8a78637670
commit 40f1db9cb1
5 changed files with 35 additions and 14 deletions

View 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

View 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

View 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

View 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

View 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