summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSusant Sahani <susant@redhat.com>2016-08-31 09:17:02 +0200
committerSusant Sahani <susant@redhat.com>2016-08-31 09:17:02 +0200
commitf7ea90fbba95618e75371e98cf513957ff433de7 (patch)
treebf7b9601cf356e24f2c974b3868cd1f075efda51
parentlink : add support to configure Offload features (#4017) (diff)
downloadsystemd-f7ea90fbba95618e75371e98cf513957ff433de7.tar.xz
systemd-f7ea90fbba95618e75371e98cf513957ff433de7.zip
link : add support to configure LRO and GRO Offload features
The patch supports to configure GenericReceiveOffload LargeReceiveOffload
-rw-r--r--man/systemd.link.xml16
-rw-r--r--src/udev/net/ethtool-util.c2
-rw-r--r--src/udev/net/ethtool-util.h2
-rw-r--r--src/udev/net/link-config-gperf.gperf2
4 files changed, 22 insertions, 0 deletions
diff --git a/man/systemd.link.xml b/man/systemd.link.xml
index 313e4a4aa3..10fddeced0 100644
--- a/man/systemd.link.xml
+++ b/man/systemd.link.xml
@@ -411,6 +411,22 @@
Defaults to "unset".</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>GenericReceiveOffload=</varname></term>
+ <listitem>
+ <para>The Generic Receive Offload (GRO) when true enables
+ generic receive offload. Takes a boolean value.
+ Defaults to "unset".</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>LargeReceiveOffload=</varname></term>
+ <listitem>
+ <para>The Large Receive Offload (LRO) when true enables
+ large receive offload. Takes a boolean value.
+ Defaults to "unset".</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
diff --git a/src/udev/net/ethtool-util.c b/src/udev/net/ethtool-util.c
index 5143eb5a9d..19c69a98b1 100644
--- a/src/udev/net/ethtool-util.c
+++ b/src/udev/net/ethtool-util.c
@@ -48,6 +48,8 @@ DEFINE_CONFIG_PARSE_ENUM(config_parse_wol, wol, WakeOnLan, "Failed to parse Wake
static const char* const netdev_feature_table[_NET_DEV_FEAT_MAX] = {
[NET_DEV_FEAT_GSO] = "tx-generic-segmentation",
+ [NET_DEV_FEAT_GRO] = "rx-gro",
+ [NET_DEV_FEAT_LRO] = "rx-lro",
[NET_DEV_FEAT_TSO] = "tx-tcp-segmentation",
[NET_DEV_FEAT_UFO] = "tx-udp-fragmentation",
};
diff --git a/src/udev/net/ethtool-util.h b/src/udev/net/ethtool-util.h
index 2b5b9fbd1a..0744164653 100644
--- a/src/udev/net/ethtool-util.h
+++ b/src/udev/net/ethtool-util.h
@@ -40,6 +40,8 @@ typedef enum WakeOnLan {
typedef enum NetDevFeature {
NET_DEV_FEAT_GSO,
+ NET_DEV_FEAT_GRO,
+ NET_DEV_FEAT_LRO,
NET_DEV_FEAT_TSO,
NET_DEV_FEAT_UFO,
_NET_DEV_FEAT_MAX,
diff --git a/src/udev/net/link-config-gperf.gperf b/src/udev/net/link-config-gperf.gperf
index 5c57a0cb94..f8b85cbd13 100644
--- a/src/udev/net/link-config-gperf.gperf
+++ b/src/udev/net/link-config-gperf.gperf
@@ -38,3 +38,5 @@ Link.WakeOnLan, config_parse_wol, 0,
Link.GenericSegmentationOffload, config_parse_tristate, 0, offsetof(link_config, features[NET_DEV_FEAT_GSO])
Link.TCPSegmentationOffload, config_parse_tristate, 0, offsetof(link_config, features[NET_DEV_FEAT_TSO])
Link.UDPSegmentationOffload, config_parse_tristate, 0, offsetof(link_config, features[NET_DEV_FEAT_UFO])
+Link.GenericReceiveOffload, config_parse_tristate, 0, offsetof(link_config, features[NET_DEV_FEAT_GRO])
+Link.LargeReceiveOffload, config_parse_tristate, 0, offsetof(link_config, features[NET_DEV_FEAT_LRO])