summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2021-06-18 06:06:07 +0200
committerGitHub <noreply@github.com>2021-06-18 06:06:07 +0200
commite43dfd675313850b93508a84575515bb3611f1d7 (patch)
tree03800fc42a480cf61a20bd5857355c9ab990b849
parentb17bd0ef2ec47e7fcbf8fa901fd8752dcc5cb44b (diff)
parent4b2fef88644bb75dadbe33b9638a4150def7e14f (diff)
downloadvyos-1x-e43dfd675313850b93508a84575515bb3611f1d7.tar.gz
vyos-1x-e43dfd675313850b93508a84575515bb3611f1d7.zip
Merge pull request #883 from sever-sever/T3633
ethernet: T3633: Add LRO offload
-rw-r--r--interface-definitions/interfaces-ethernet.xml.in6
-rw-r--r--python/vyos/ifconfig/ethernet.py20
2 files changed, 26 insertions, 0 deletions
diff --git a/interface-definitions/interfaces-ethernet.xml.in b/interface-definitions/interfaces-ethernet.xml.in
index 942f88d0a..cb451f5be 100644
--- a/interface-definitions/interfaces-ethernet.xml.in
+++ b/interface-definitions/interfaces-ethernet.xml.in
@@ -80,6 +80,12 @@
<valueless/>
</properties>
</leafNode>
+ <leafNode name="lro">
+ <properties>
+ <help>Enable Large Receive Offload</help>
+ <valueless/>
+ </properties>
+ </leafNode>
<leafNode name="rps">
<properties>
<help>Enable Receive Packet Steering</help>
diff --git a/python/vyos/ifconfig/ethernet.py b/python/vyos/ifconfig/ethernet.py
index b89ca5a5c..07b31a12a 100644
--- a/python/vyos/ifconfig/ethernet.py
+++ b/python/vyos/ifconfig/ethernet.py
@@ -55,6 +55,11 @@ class EthernetIf(Interface):
'possible': lambda i, v: EthernetIf.feature(i, 'gso', v),
# 'shellcmd': 'ethtool -K {ifname} gso {value}',
},
+ 'lro': {
+ 'validate': lambda v: assert_list(v, ['on', 'off']),
+ 'possible': lambda i, v: EthernetIf.feature(i, 'lro', v),
+ # 'shellcmd': 'ethtool -K {ifname} lro {value}',
+ },
'sg': {
'validate': lambda v: assert_list(v, ['on', 'off']),
'possible': lambda i, v: EthernetIf.feature(i, 'sg', v),
@@ -238,6 +243,18 @@ class EthernetIf(Interface):
raise ValueError("Value out of range")
return self.set_interface('gso', 'on' if state else 'off')
+ def set_lro(self, state):
+ """
+ Enable Large Receive offload. State can be either True or False.
+ Example:
+ >>> from vyos.ifconfig import EthernetIf
+ >>> i = EthernetIf('eth0')
+ >>> i.set_lro(True)
+ """
+ if not isinstance(state, bool):
+ raise ValueError("Value out of range")
+ return self.set_interface('lro', 'on' if state else 'off')
+
def set_rps(self, state):
if not isinstance(state, bool):
raise ValueError("Value out of range")
@@ -328,6 +345,9 @@ class EthernetIf(Interface):
# GSO (generic segmentation offload)
self.set_gso(dict_search('offload.gso', config) != None)
+ # LRO (large receive offload)
+ self.set_lro(dict_search('offload.lro', config) != None)
+
# RPS - Receive Packet Steering
self.set_rps(dict_search('offload.rps', config) != None)