summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorOleksandr Kuchmystyi <o.kuchmystyi@vyos.io>2026-02-18 12:35:28 +0300
committerOleksandr Kuchmystyi <o.kuchmystyi@vyos.io>2026-02-18 16:16:32 +0300
commit45077f87eee6772839b9f0fabdf79a385d0b46f1 (patch)
treecb25d8dd386a3040840b8fa557ab375947981fd8 /src
parentfc94e37b6f3f2bffcea24d11c926f4536b449c16 (diff)
downloadvyos-1x-45077f87eee6772839b9f0fabdf79a385d0b46f1.tar.gz
vyos-1x-45077f87eee6772839b9f0fabdf79a385d0b46f1.zip
vpp: T8274: Remove dpdk-options section for num-* parameters
Remove `dpdk-options` under `set vpp settings interface <ethN>` and move its child options to the interface level: - `num-rx-desc` - `num-rx-queues` - `num-tx-desc` - `num-tx-queues` Also remove `set vpp settings interface <ethN> dpdk-options promisc`.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/vpp.py23
-rw-r--r--src/migration-scripts/vpp/7-to-834
2 files changed, 39 insertions, 18 deletions
diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py
index 08eba8a45..d436fbe6b 100755
--- a/src/conf_mode/vpp.py
+++ b/src/conf_mode/vpp.py
@@ -554,21 +554,15 @@ def verify(config):
Warning(f'Not all RX queues will be connected to VPP for {iface}!')
- if iface_config['driver'] == 'xdp' and 'dpdk_options' in iface_config:
- raise ConfigError('DPDK options are not applicable for XDP driver!')
-
- if iface_config['driver'] == 'dpdk' and 'xdp_options' in iface_config:
- raise ConfigError('XDP options are not applicable for DPDK driver!')
-
- if iface_config['driver'] == 'dpdk' and 'dpdk_options' in iface_config:
- if 'num_rx_queues' in iface_config['dpdk_options']:
- rx_queues = int(iface_config['dpdk_options']['num_rx_queues'])
+ if iface_config['driver'] == 'dpdk':
+ if 'num_rx_queues' in iface_config:
+ rx_queues = int(iface_config['num_rx_queues'])
verify_vpp_interfaces_dpdk_num_queues(
qtype='receive', num_queues=rx_queues, workers=cpu_cores
)
- if 'num_tx_queues' in iface_config['dpdk_options']:
- tx_queues = int(iface_config['dpdk_options']['num_tx_queues'])
+ if 'num_tx_queues' in iface_config:
+ tx_queues = int(iface_config['num_tx_queues'])
verify_vpp_interfaces_dpdk_num_queues(
qtype='transmit', num_queues=tx_queues, workers=cpu_cores
)
@@ -783,13 +777,6 @@ def apply(config):
# add interfaces
iproute = IPRoute()
for iface, iface_config in config['settings']['interface'].items():
- # promisc option for DPDK interfaces
- if iface_config['driver'] == 'dpdk':
- if 'promisc' in iface_config['dpdk_options']:
- if_index = vpp_control.get_sw_if_index(iface)
- vpp_control.api.sw_interface_set_promisc(
- sw_if_index=if_index, promisc_on=True
- )
# add XDP interfaces
if iface_config['driver'] == 'xdp':
control_host.rename_iface(iface, f'defunct_{iface}')
diff --git a/src/migration-scripts/vpp/7-to-8 b/src/migration-scripts/vpp/7-to-8
index 122456e1f..54a1a7c43 100644
--- a/src/migration-scripts/vpp/7-to-8
+++ b/src/migration-scripts/vpp/7-to-8
@@ -26,6 +26,11 @@
# Convert `vpp settings interface <name> rx-mode` and `vpp kernel-interfaces <name> rx-mode`
# to `vpp settings interfaces-rx-mode` by choose the worst value from all nodes (T8266)
#
+# Get rid of 'dpdk-options' section for 'num-*' parameters:
+# - `vpp settings interface <ethN> dpdk-options num-*`
+# - `vpp settings interface <ethN> num-*`
+# and delete `vpp settings interface <ethN> dpdk-options promisc` (T8274)
+#
from vyos.configtree import ConfigTree
@@ -155,6 +160,34 @@ def _migrate_vpp_interface_rx_mode(config: ConfigTree) -> None:
_delete_rx_modes(kernel_interface_path)
+def _migrate_vpp_dpdk_options(config: ConfigTree) -> None:
+ base_path = ['vpp', 'settings', 'interface']
+ params = ['num-rx-desc', 'num-rx-queues', 'num-tx-desc', 'num-tx-queues']
+
+ if not config.exists(base_path):
+ return
+
+ for iface_name in config.list_nodes(base_path):
+ iface_path = base_path + [iface_name]
+ dpdk_path = iface_path + ['dpdk-options']
+
+ if config.exists(dpdk_path):
+ for param in params:
+ param_path = dpdk_path + [param]
+ new_param_path = iface_path + [param]
+
+ if config.exists(param_path):
+ # Move `vpp settings interface <iface_name> dpdk-options num-*`
+ # to `vpp settings interface <iface_name> num-*`
+ config.copy(param_path, new_param_path)
+ config.delete(param_path)
+
+ # Delete `vpp settings interface <iface_name> dpdk-options promisc`
+ promisc_path = dpdk_path + ['promisc']
+ if config.exists(promisc_path):
+ config.delete(promisc_path)
+
+
def migrate(config: ConfigTree) -> None:
if not config.exists(['vpp']):
# Nothing to do
@@ -166,3 +199,4 @@ def migrate(config: ConfigTree) -> None:
_migrate_vpp_ipsec(config)
_migrate_vpp_cpu(config)
_migrate_vpp_interface_rx_mode(config)
+ _migrate_vpp_dpdk_options(config)