]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev/net: support more ethtool features
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 12 Jan 2026 09:32:23 +0000 (18:32 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 16 Jan 2026 17:52:20 +0000 (02:52 +0900)
Closes #39318.

man/systemd.link.xml
src/udev/net/link-config-gperf.gperf

index e9c367341a254ab08a99ef18c60ac3f8dc05a619..602f19b60030cbfc7d1192ddf0e75a59d77048ca 100644 (file)
           <xi:include href="version-info.xml" xpointer="v245"/>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term><varname>ScatterGather=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, enables offload feature where the hardware builds a network
+          packet from multiple non-contiguous memory buffers.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> tx-scatter-gather on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><varname>ScatterGatherFragmentList=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, enables offload feature where the hardware builds a network
+          packet from a chained list of socket buffers.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> tx-scatter-gather-fraglist on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
       <varlistentry>
         <term><varname>TCPSegmentationOffload=</varname></term>
         <listitem>
           <xi:include href="version-info.xml" xpointer="v232"/>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term><varname>TCPECNSegmentationOffload=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, TCP Segmentation Offload (TSO) is performed even when ECN
+          (Explicit Congestion Notification) flags are active in the TCP stream.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> tx-tcp-ecn-segmentation on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><varname>TCPMangleIdSegmentationOffload=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, TCP Segmentation Offload (TSO) is performed even if the
+          hardware is incapable of correctly incrementing the IPv4 Identification (ID) field for each
+          resulting packet.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> tx-tcp-mangleid-segmentation on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
       <varlistentry>
         <term><varname>TCP6SegmentationOffload=</varname></term>
         <listitem>
           <xi:include href="version-info.xml" xpointer="v250"/>
         </listitem>
       </varlistentry>
+      <varlistentry>
+        <term><varname>GenericReceiveOffloadList=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, Generic Receive Offload (GRO) List for UDP is enabled.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> rx-gro-list on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><varname>GenericReceiveOffloadUDPForwarding=</varname></term>
+        <listitem>
+          <para>Takes a boolean. If set to true, Generic Receive Offload (GRO) for aggregating incoming UDP packets is enabled.
+          When unset, the kernel's default will be used. This corresponds to the command
+          <command>ethtool -K <replaceable>INTERFACE</replaceable> rx-udp-gro-forwarding on|off</command>.</para>
+
+          <xi:include href="version-info.xml" xpointer="v260"/>
+        </listitem>
+      </varlistentry>
       <varlistentry>
         <term><varname>LargeReceiveOffload=</varname></term>
         <listitem>
index ef3ebf41cd545c976f7e17ceea70e0c4b2b7c78f..ef68dab339fff7f211eb6391cdfb8b83bc0bd173 100644 (file)
@@ -72,13 +72,19 @@ Link.WakeOnLanPassword,                    config_parse_wol_password,
 /* ethtool features */
 Link.ReceiveChecksumOffload,               config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_RXCSUM])
 Link.TransmitChecksumOffload,              config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_TXCSUM])
+Link.ScatterGather,                        config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_SG])
+Link.ScatterGatherFragmentList,            config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_FRAGLIST])
 Link.GenericSegmentationOffload,           config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GSO])
 Link.TCPSegmentationOffload,               config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_TSO])
+Link.TCPECNSegmentationOffload,            config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_TSO_ECN])
+Link.TCPMangleIdSegmentationOffload,       config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_TSO_MANGLEID])
 Link.TCP6SegmentationOffload,              config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_TSO6])
 Link.PartialGenericSegmentationOffload,    config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GSO_PARTIAL])
 Link.UDPSegmentationOffload,               config_parse_warn_compat,              DISABLED_LEGACY,               0
 Link.GenericReceiveOffload,                config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GRO])
 Link.GenericReceiveOffloadHardware,        config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GRO_HW])
+Link.GenericReceiveOffloadList,            config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GRO_FRAGLIST])
+Link.GenericReceiveOffloadUDPForwarding,   config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_GRO_UDP_FWD])
 Link.LargeReceiveOffload,                  config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_LRO])
 Link.ReceiveVLANCTAGHardwareAcceleration,  config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_HW_VLAN_CTAG_RX])
 Link.TransmitVLANCTAGHardwareAcceleration, config_parse_tristate,                 0,                             offsetof(LinkConfig, features[NET_DEV_FEAT_HW_VLAN_CTAG_TX])