diff --git a/config/rootfiles/common/udev b/config/rootfiles/common/udev index 877a832a3..4a01f3eef 100644 --- a/config/rootfiles/common/udev +++ b/config/rootfiles/common/udev @@ -37,6 +37,7 @@ lib/udev/mtd_probe lib/udev/network-hotplug-bridges lib/udev/network-hotplug-rename lib/udev/network-hotplug-vlan +lib/udev/network-offloading lib/udev/rule_generator.functions #lib/udev/rules.d lib/udev/rules.d/25-alsa.rules @@ -64,6 +65,7 @@ lib/udev/rules.d/78-sound-card.rules lib/udev/rules.d/80-drivers.rules lib/udev/rules.d/90-hwrng.rules lib/udev/rules.d/99-codel.rules +lib/udev/rules.d/99-offloading.rules lib/udev/scsi_id lib/udev/v4l_id lib/udev/write_cd_rules diff --git a/config/udev/99-offloading.rules b/config/udev/99-offloading.rules new file mode 100644 index 000000000..5387971ac --- /dev/null +++ b/config/udev/99-offloading.rules @@ -0,0 +1,2 @@ +# Call the offloading script +SUBSYSTEM=="net", RUN+="/lib/udev/network-offloading" diff --git a/config/udev/network-offloading b/config/udev/network-offloading new file mode 100644 index 000000000..dfdf51ee9 --- /dev/null +++ b/config/udev/network-offloading @@ -0,0 +1,44 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# IPFire is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2021 IPFire Team . # +# # +############################################################################ + +if [ -z "${INTERFACE}" ]; then + echo "INTERFACE variable was not set" >&2 + exit 1 +fi + +case "${ACTION}" in + add|register) + # Try to enable ntuple (and ignore if not supported) + ethtool --features "${INTERFACE}" ntuple on &>/dev/null + ;; + + remove|unregister) + # Nothing to do here. + ;; + + *) + echo "No or unkown ACTION set" >&2 + exit 1 +esac + +exit 0 diff --git a/lfs/udev b/lfs/udev index b578ab54c..cfad0398b 100644 --- a/lfs/udev +++ b/lfs/udev @@ -132,5 +132,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -m 755 $(DIR_SRC)/config/udev/enable_codel \ /lib/udev/enable_codel + # Install offloading rules + install -v -m 644 $(DIR_SRC)/config/udev/99-offloading.rules \ + /lib/udev/rules.d + install -m 755 $(DIR_SRC)/config/udev/network-offloading \ + /lib/udev/network-offloading + @rm -rf $(DIR_APP) @$(POSTBUILD)