diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-09-15 13:34:51 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2022-09-15 13:34:51 +0200 |
commit | 87ee858f14839624e14cfc7df11fa265159bcbf3 (patch) | |
tree | dd5f83c61b10b4e2a2d2a2b123efbb07e265d29a /python | |
parent | 31602e18386e79f49b4a524b645166cf30dc2d6c (diff) | |
parent | ac4e07f96ae329bab51c3da8596a2b975a0f3f17 (diff) | |
download | vyos-1x-87ee858f14839624e14cfc7df11fa265159bcbf3.tar.gz vyos-1x-87ee858f14839624e14cfc7df11fa265159bcbf3.zip |
Merge branch 'T4689' of https://github.com/jack9603301/vyos-1x into current
* 'T4689' of https://github.com/jack9603301/vyos-1x:
rfs: T4689: Support RFS(Receive Flow Steering)
Diffstat (limited to 'python')
-rw-r--r-- | python/vyos/ifconfig/ethernet.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/python/vyos/ifconfig/ethernet.py b/python/vyos/ifconfig/ethernet.py index b8deb3311..eac72ab8c 100644 --- a/python/vyos/ifconfig/ethernet.py +++ b/python/vyos/ifconfig/ethernet.py @@ -16,6 +16,7 @@ import os import re +from glob import glob from vyos.ethtool import Ethtool from vyos.ifconfig.interface import Interface from vyos.util import run @@ -74,6 +75,10 @@ class EthernetIf(Interface): 'convert': lambda cpus: cpus if cpus else '0', 'location': '/sys/class/net/{ifname}/queues/rx-0/rps_cpus', }, + 'rfs': { + 'convert': lambda num: num if num else '0', + 'location': '/proc/sys/net/core/rps_sock_flow_entries', + }, }} def __init__(self, ifname, **kargs): @@ -258,6 +263,22 @@ class EthernetIf(Interface): # send bitmask representation as hex string without leading '0x' return self.set_interface('rps', rps_cpus) + def set_rfs(self, state): + rfs_flow = 0 + global_rfs_flow = 0 + ifname = self.config['ifname'] + queues = glob(f'/sys/class/net/{ifname}/queues/rx-*') + if state: + global_rfs_flow = 32768 + rfs_flow = global_rfs_flow/len(queues) + + self.set_interface('rfs', str(int(global_rfs_flow))) + + for i in range(0,len(queues)): + self._write_sysfs(f'/sys/class/net/{ifname}/queues/rx-{i}/rps_flow_cnt',str(int(rfs_flow))) + + return state + def set_sg(self, state): """ Enable Scatter-Gather support. State can be either True or False. @@ -342,6 +363,9 @@ class EthernetIf(Interface): # RPS - Receive Packet Steering self.set_rps(dict_search('offload.rps', config) != None) + # RFS - Receive Flow Steering + self.set_rfs(dict_search('offload.rfs', config) != None) + # scatter-gather option self.set_sg(dict_search('offload.sg', config) != None) |