net: added more coalescing options, filter out unsupported ones

resolves: RHEL-181668
This commit is contained in:
Jaroslav Škarvada 2026-06-15 17:00:54 +02:00
parent e730a4a5ef
commit f953b24893
2 changed files with 80 additions and 1 deletions

View File

@ -0,0 +1,73 @@
From f5cfd2a72263ebf1c868fa75afd6d6e085e10e50 Mon Sep 17 00:00:00 2001
From: Fothsid <18036123+Fothsid@users.noreply.github.com>
Date: Wed, 22 Apr 2026 16:01:23 +0200
Subject: [PATCH] net: add more coalescing options, filter out unsupported ones
Ethtool's tx-aggr-* parameters were not known to tuned.
In addition to adding those, checking logic is changed to
filter out unknown parameters supported by ethtool instead
of simply failing to set any options.
Resolves: RHEL-152675
---
tuned/plugins/plugin_net.py | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/tuned/plugins/plugin_net.py b/tuned/plugins/plugin_net.py
index 6d291b291..31b30f5df 100644
--- a/tuned/plugins/plugin_net.py
+++ b/tuned/plugins/plugin_net.py
@@ -332,7 +332,10 @@ def _get_config_options_coalesce(cls):
"rx-frames-high": None,
"tx-usecs-high": None,
"tx-frames-high": None,
- "sample-interval": None
+ "sample-interval": None,
+ "tx-aggr-max-bytes": None,
+ "tx-aggr-max-frames": None,
+ "tx-aggr-time-usecs": None
}
@classmethod
@@ -615,7 +618,7 @@ def _get_mtu(self, device, instance, ignore_missing=False):
# d is dict: {parameter: value}
def _check_parameters(self, context, d):
if context == "features":
- return True
+ return d
params = set(d.keys())
supported_getter = { "coalesce": self._get_config_options_coalesce, \
"pause": self._get_config_options_pause, \
@@ -623,9 +626,8 @@ def _check_parameters(self, context, d):
"channels": self._get_config_options_channels }
supported = set(supported_getter[context]().keys())
if not params.issubset(supported):
- log.error("unknown %s parameter(s): %s" % (context, str(params - supported)))
- return False
- return True
+ log.warning("ignoring unknown %s parameter(s): %s" % (context, str(params - supported)))
+ return {k: v for k, v in d.items() if k in supported}
# parse output of ethtool -a
def _parse_pause_parameters(self, s):
@@ -712,17 +714,13 @@ def _get_device_parameters(self, instance, context, device):
"channels": self._parse_channels_parameters }
parser = context2parser[context]
d = parser(value)
- if context == "coalesce" and not self._check_parameters(context, d):
- return None
- return d
+ return self._check_parameters(context, d)
def _set_device_parameters(self, instance, context, value, device, sim,
dev_params = None):
if value is None or len(value) == 0:
return None
- d = self._parse_config_parameters(value, context)
- if d is None or not self._check_parameters(context, d):
- return {}
+ d = self._check_parameters(context, self._parse_config_parameters(value, context))
# check if device supports parameters and filter out unsupported ones
if dev_params:
self._check_device_support(instance, context, d, device, dev_params)

View File

@ -43,7 +43,7 @@
Summary: A dynamic adaptive system tuning daemon
Name: tuned
Version: 2.27.0
Release: 1%{?prerel1}%{?dist}
Release: 2%{?prerel1}%{?dist}
License: GPLv2+
Source0: https://github.com/redhat-performance/%{name}/archive/v%{version}%{?prerel2}/%{name}-%{version}%{?prerel2}.tar.gz
# RHEL-9 specific recommend.conf:
@ -122,6 +122,8 @@ Requires: python3-syspurpose
Patch: tuned-2.25.0-revert-profile-migration.patch
# Revert not yet RHEL approved tuning
Patch: tuned-2.27.0-openshift-revert.patch
# https://github.com/redhat-performance/tuned/pull/852
Patch: tuned-2.27.0-net-coalescing-fix.patch
%description
The tuned package contains a daemon that tunes system settings dynamically.
@ -640,6 +642,10 @@ fi
%config(noreplace) %{_sysconfdir}/tuned/ppd.conf
%changelog
* Mon Jun 15 2026 Jaroslav Škarvada <jskarvad@redhat.com> - 2.27.0-2
- net: added more coalescing options, filter out unsupported ones
resolves: RHEL-181668
* Sun Feb 22 2026 Jaroslav Škarvada <jskarvad@redhat.com> - 2.27.0-1
- new release
- rebased tuned to latest upstream