Acked-by: Peter Müller > We are using CPU-affinity and packet steering functions in various > places in IPFire, but packets might still be received on a random CPU > core. > > This feature enables that packets that belong to the same connection > (i.e. have the save tuple) will be steered to the same queue. This will > increase cache locality and decrease locking which results in higher > throughput. > > https://www.kernel.org/doc/Documentation/networking/scaling.txt > > Signed-off-by: Michael Tremer > --- > config/rootfiles/common/udev | 2 ++ > config/udev/99-offloading.rules | 2 ++ > config/udev/network-offloading | 44 +++++++++++++++++++++++++++++++++ > lfs/udev | 6 +++++ > 4 files changed, 54 insertions(+) > create mode 100644 config/udev/99-offloading.rules > create mode 100644 config/udev/network-offloading > > 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) >