diff options
| -rw-r--r-- | interface-definitions/interfaces-ethernet.xml.in | 6 | ||||
| -rw-r--r-- | python/vyos/ifconfig/ethernet.py | 20 | 
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) | 
