aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/python
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2020-02-28 07:13:27 +0000
committerPeter Mikus <pmikus@cisco.com>2020-03-10 11:10:27 +0000
commit6daa2d791f0e0d41b73668ef3ee233e58987dc37 (patch)
treee04db74c43eeb297284ab9431af97438fd2f7b7d /resources/libraries/python
parentdddfcfb9ce358799ce2b9f53ffb8e1e594fb2cec (diff)
Make RXQs/TXQs configurable
Change-Id: Ib30bc4697fcba93a6723ee492a59a0523425f623 Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources/libraries/python')
-rw-r--r--resources/libraries/python/DPDK/L2fwdTest.py39
-rw-r--r--resources/libraries/python/InterfaceUtil.py22
2 files changed, 35 insertions, 26 deletions
diff --git a/resources/libraries/python/DPDK/L2fwdTest.py b/resources/libraries/python/DPDK/L2fwdTest.py
index de275f94af..76d1dcb362 100644
--- a/resources/libraries/python/DPDK/L2fwdTest.py
+++ b/resources/libraries/python/DPDK/L2fwdTest.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
+# Copyright (c) 2020 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
@@ -16,8 +16,8 @@ DUT nodes.
"""
from resources.libraries.python.Constants import Constants
-from resources.libraries.python.ssh import SSH
-from resources.libraries.python.topology import NodeType, Topology
+from resources.libraries.python.ssh import exec_cmd_no_error
+from resources.libraries.python.topology import NodeType
class L2fwdTest:
@@ -25,35 +25,34 @@ class L2fwdTest:
@staticmethod
def start_the_l2fwd_test(
- dut_node, cpu_cores, nb_cores, queue_nums, jumbo_frames):
+ node, cpu_cores, nb_cores, queue_nums, jumbo_frames,
+ rxq_size=1024, txq_size=1024):
"""
- Execute the l2fwd on the dut_node.
+ Execute the l2fwd on the DUT node.
- :param dut_node: Will execute the l2fwd on this node.
+ :param node: Will execute the l2fwd on this node.
:param cpu_cores: The DPDK run cores.
:param nb_cores: The cores number for the forwarding.
:param queue_nums: The queues number for the NIC.
:param jumbo_frames: Indication if the jumbo frames are used (True) or
- not (False).
- :type dut_node: dict
+ not (False).
+ :param rxq_size: RXQ size. Default=1024.
+ :param txq_size: TXQ size. Default=1024.
+ :type node: dict
:type cpu_cores: str
:type nb_cores: str
:type queue_nums: str
:type jumbo_frames: bool
+ :type rxq_size: int
+ :type txq_size: int
:raises RuntimeError: If the script "run_l2fwd.sh" fails.
"""
- if dut_node[u"type"] == NodeType.DUT:
- ssh = SSH()
- ssh.connect(dut_node)
-
- arch = Topology.get_node_arch(dut_node)
+ if node[u"type"] == NodeType.DUT:
jumbo = u"yes" if jumbo_frames else u"no"
- cmd = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \
+ command = f"{Constants.REMOTE_FW_DIR}/tests/dpdk/dpdk_scripts" \
f"/run_l2fwd.sh {cpu_cores} {nb_cores} {queue_nums} {jumbo} " \
- f"{arch}"
+ f"{rxq_size} {txq_size}"
+
+ message = f"Failed to execute l2fwd test at node {node['host']}"
- ret_code, _, _ = ssh.exec_command_sudo(cmd, timeout=1800)
- if ret_code != 0:
- raise RuntimeError(
- f"Failed to execute l2fwd test at node {dut_node['host']}"
- )
+ exec_cmd_no_error(node, command, timeout=1800, message=message)
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py
index ad76eac4f8..0333c9c092 100644
--- a/resources/libraries/python/InterfaceUtil.py
+++ b/resources/libraries/python/InterfaceUtil.py
@@ -1132,16 +1132,21 @@ class InterfaceUtil:
)
@staticmethod
- def vpp_create_avf_interface(node, if_key, num_rx_queues=None):
+ def vpp_create_avf_interface(
+ node, if_key, num_rx_queues=None, rxq_size=0, txq_size=0):
"""Create AVF interface on VPP node.
:param node: DUT node from topology.
:param if_key: Interface key from topology file of interface
to be bound to i40evf driver.
:param num_rx_queues: Number of RX queues.
+ :param rxq_size: Size of RXQ (0 = Default API; 512 = Default VPP).
+ :param txq_size: Size of TXQ (0 = Default API; 512 = Default VPP).
:type node: dict
:type if_key: str
:type num_rx_queues: int
+ :type rxq_size: int
+ :type txq_size: int
:returns: AVF interface key (name) in topology.
:rtype: str
:raises RuntimeError: If it is not possible to create AVF interface on
@@ -1157,8 +1162,8 @@ class InterfaceUtil:
pci_addr=InterfaceUtil.pci_to_int(vf_pci_addr),
enable_elog=0,
rxq_num=int(num_rx_queues) if num_rx_queues else 0,
- rxq_size=0,
- txq_size=0
+ rxq_size=rxq_size,
+ txq_size=txq_size
)
err_msg = f"Failed to create AVF interface on host {node[u'host']}"
with PapiSocketExecutor(node) as papi_exec:
@@ -1173,17 +1178,22 @@ class InterfaceUtil:
@staticmethod
def vpp_create_rdma_interface(
- node, if_key, num_rx_queues=None, mode=u"auto"):
+ node, if_key, num_rx_queues=None, rxq_size=0, txq_size=0,
+ mode=u"auto"):
"""Create RDMA interface on VPP node.
:param node: DUT node from topology.
:param if_key: Physical interface key from topology file of interface
to be bound to rdma-core driver.
:param num_rx_queues: Number of RX queues.
+ :param rxq_size: Size of RXQ (0 = Default API; 512 = Default VPP).
+ :param txq_size: Size of TXQ (0 = Default API; 512 = Default VPP).
:param mode: RDMA interface mode - auto/ibv/dv.
:type node: dict
:type if_key: str
:type num_rx_queues: int
+ :type rxq_size: int
+ :type txq_size: int
:type mode: str
:returns: Interface key (name) in topology file.
:rtype: str
@@ -1196,8 +1206,8 @@ class InterfaceUtil:
name=InterfaceUtil.pci_to_eth(node, pci_addr),
host_if=InterfaceUtil.pci_to_eth(node, pci_addr),
rxq_num=int(num_rx_queues) if num_rx_queues else 0,
- rxq_size=1024,
- txq_size=1024,
+ rxq_size=rxq_size,
+ txq_size=txq_size,
mode=getattr(RdmaMode,f"RDMA_API_MODE_{mode.upper()}").value,
)
err_msg = f"Failed to create RDMA interface on host {node[u'host']}"