From: "Peter Müller" <peter.mueller@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: [PATCH] udev: Enable ntuple offloading feature in supported NICs
Date: Thu, 09 Sep 2021 22:03:38 +0200 [thread overview]
Message-ID: <5903c506-c074-2f88-82ac-bc8ed737e416@ipfire.org> (raw)
In-Reply-To: <20210907150125.16368-1-michael.tremer@ipfire.org>
[-- Attachment #1: Type: text/plain, Size: 4918 bytes --]
Acked-by: Peter Müller <peter.mueller(a)ipfire.org>
> 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 <michael.tremer(a)ipfire.org>
> ---
> 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 <info(a)ipfire.org>. #
> +# #
> +############################################################################
> +
> +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)
>
prev parent reply other threads:[~2021-09-09 20:03 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-07 15:01 Michael Tremer
2021-09-09 20:03 ` Peter Müller [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5903c506-c074-2f88-82ac-bc8ed737e416@ipfire.org \
--to=peter.mueller@ipfire.org \
--cc=development@lists.ipfire.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox