Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/125524/?format=api
http://patches.dpdk.org/api/patches/125524/?format=api", "web_url": "http://patches.dpdk.org/project/dts/patch/20230327075700.3205050-1-weix.ling@intel.com/", "project": { "id": 3, "url": "http://patches.dpdk.org/api/projects/3/?format=api", "name": "DTS", "link_name": "dts", "list_id": "dts.dpdk.org", "list_email": "dts@dpdk.org", "web_url": "", "scm_url": "git://dpdk.org/tools/dts", "webscm_url": "http://git.dpdk.org/tools/dts/", "list_archive_url": "https://inbox.dpdk.org/dts", "list_archive_url_format": "https://inbox.dpdk.org/dts/{}", "commit_url_format": "" }, "msgid": "<20230327075700.3205050-1-weix.ling@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dts/20230327075700.3205050-1-weix.ling@intel.com", "date": "2023-03-27T07:57:00", "name": "[V1] tests/*_dsa: modify all dsa related testsuites by virtio_common optimize", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "07bd86300a4d9d7e75437d59c9b42919485963e3", "submitter": { "id": 1828, "url": "http://patches.dpdk.org/api/people/1828/?format=api", "name": "Ling, WeiX", "email": "weix.ling@intel.com" }, "delegate": null, "mbox": "http://patches.dpdk.org/project/dts/patch/20230327075700.3205050-1-weix.ling@intel.com/mbox/", "series": [ { "id": 27547, "url": "http://patches.dpdk.org/api/series/27547/?format=api", "web_url": "http://patches.dpdk.org/project/dts/list/?series=27547", "date": "2023-03-27T07:57:00", "name": "[V1] tests/*_dsa: modify all dsa related testsuites by virtio_common optimize", "version": 1, "mbox": "http://patches.dpdk.org/series/27547/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/125524/comments/", "check": "warning", "checks": "http://patches.dpdk.org/api/patches/125524/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dts-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id C8A8E4284E;\n\tMon, 27 Mar 2023 09:59:57 +0200 (CEST)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id BD31340ED8;\n\tMon, 27 Mar 2023 09:59:57 +0200 (CEST)", "from mga06.intel.com (mga06b.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id ADED140ED5\n for <dts@dpdk.org>; Mon, 27 Mar 2023 09:59:55 +0200 (CEST)", "from orsmga001.jf.intel.com ([10.7.209.18])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Mar 2023 00:59:54 -0700", "from unknown (HELO localhost.localdomain) ([10.239.252.222])\n by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 27 Mar 2023 00:59:51 -0700" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1679903995; x=1711439995;\n h=from:to:cc:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=oAbXpTt7Ij/ck0KyORBcN5nZlt9enr5l1oZeRDD7E/I=;\n b=K3azEWbEKceuml2NOdB3oCSpq9lz5vkGmfN/tGiTPo+8EgALUhTHLNEn\n Xgv8eMM3UaJicCHCK/841Myln8fv6B9jPZhZkeudCMAze467qmrqaNwMG\n /dDIw9sUSmNMBc9TalJjoQDbO5eOwxOX91HSsbx8lZ3IB54hEiKNQ1+vW\n e5YvMQi2Pv+HpYqv5dLGA7uABCHbQJhkbblwZ0ohKqmbapSh3KWsUHLej\n xq4AljUVrNsM5t7/7jXDGuqwPAY4F2/HVwItpqDAp71Yq7CuQFUNRe1L3\n SaHC4k4y9DT+7lR+bHzTSYsj8RJIjOEHTgmbrmx5dd0kx9zueA4hAdBYY w==;", "X-IronPort-AV": [ "E=McAfee;i=\"6600,9927,10661\"; a=\"402800395\"", "E=Sophos;i=\"5.98,294,1673942400\"; d=\"scan'208\";a=\"402800395\"", "E=McAfee;i=\"6600,9927,10661\"; a=\"715987081\"", "E=Sophos;i=\"5.98,294,1673942400\"; d=\"scan'208\";a=\"715987081\"" ], "X-ExtLoop1": "1", "From": "Wei Ling <weix.ling@intel.com>", "To": "dts@dpdk.org", "Cc": "Wei Ling <weix.ling@intel.com>", "Subject": "[dts][PATCH V1] tests/*_dsa: modify all dsa related testsuites by\n virtio_common optimize", "Date": "Mon, 27 Mar 2023 15:57:00 +0800", "Message-Id": "<20230327075700.3205050-1-weix.ling@intel.com>", "X-Mailer": "git-send-email 2.25.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dts@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "test suite reviews and discussions <dts.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dts>,\n <mailto:dts-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dts/>", "List-Post": "<mailto:dts@dpdk.org>", "List-Help": "<mailto:dts-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dts>,\n <mailto:dts-request@dpdk.org?subject=subscribe>", "Errors-To": "dts-bounces@dpdk.org" }, "content": "As tests/virtio_common.py optimize to adapt more scenes, such as\nwe can assign the DSA device index to test in testcase, so modify\nall dsa related testsuites.\n\nSigned-off-by: Wei Ling <weix.ling@intel.com>\n---\n ...TestSuite_loopback_vhost_async_perf_dsa.py | 144 +-\n ...te_loopback_virtio_user_server_mode_dsa.py | 1305 +++++++------\n ...vhost_async_multi_paths_performance_dsa.py | 144 +-\n ...ite_pvp_vhost_async_virtio_pmd_perf_dsa.py | 450 ++---\n tests/TestSuite_vhost_dsa.py | 796 ++++----\n tests/TestSuite_vm2vm_virtio_net_perf_dsa.py | 1614 +++++++++--------\n tests/TestSuite_vm2vm_virtio_pmd_dsa.py | 259 ++-\n tests/TestSuite_vm2vm_virtio_user_dsa.py | 619 ++++---\n tests/virtio_common.py | 187 +-\n 9 files changed, 3026 insertions(+), 2492 deletions(-)", "diff": "diff --git a/tests/TestSuite_loopback_vhost_async_perf_dsa.py b/tests/TestSuite_loopback_vhost_async_perf_dsa.py\nindex 85883ea3..679971ae 100644\n--- a/tests/TestSuite_loopback_vhost_async_perf_dsa.py\n+++ b/tests/TestSuite_loopback_vhost_async_perf_dsa.py\n@@ -45,8 +45,6 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n # Prepare the result table\n self.table_header = [\n \"Frame Size\",\n@@ -249,8 +247,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 1: loopback vhost async test with split ring inorder mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -280,8 +278,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 2: loopback vhost async test with split ring inorder non-mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -311,8 +309,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 3: loopback vhost async test with split ring mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -342,8 +340,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 4: loopback vhost async test with split ring non-mergeable path path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -373,8 +371,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 5: loopback vhost async test with split ring vectorized path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -404,8 +402,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 6: loopback vhost async test with packed ring inorder mergeable path path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -435,8 +433,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 7: loopback vhost async test with packed ring inorder non-mergeable path path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -466,8 +464,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 8: loopback vhost async test with packed ring mergeable path path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -497,8 +495,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 9: loopback vhost async test with packed ring non-mergeable path path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -528,8 +526,8 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 10: loopback vhost async test with packed ring vectorized path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -559,20 +557,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 11: loopback vhost async test with split ring inorder mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=1,mrg_rxbuf=1\"\n@@ -599,20 +597,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 12: loopback vhost async test with split ring inorder non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=1,mrg_rxbuf=0\"\n@@ -639,20 +637,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 13: loopback vhost async test with split ring mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=1\"\n@@ -679,20 +677,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 14: loopback vhost async test with split ring non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=0\"\n@@ -719,20 +717,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 15: loopback vhost async test with split ring vectorized path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=0,vectorized=1\"\n@@ -759,20 +757,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 16: loopback vhost async test with packed ring inorder mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=1,mrg_rxbuf=1\"\n@@ -799,20 +797,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 17: loopback vhost async test with packed ring inorder non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=1,mrg_rxbuf=0\"\n@@ -839,20 +837,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 18: loopback vhost async test with packed ring mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=0,mrg_rxbuf=1\"\n@@ -879,20 +877,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 19: loopback vhost async test with packed ring non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=0,mrg_rxbuf=0\"\n@@ -919,20 +917,20 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n Test Case 20: loopback vhost async test with packed ring vectorized path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n virtio_eal_param = \"--vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=0,mrg_rxbuf=0,vectorized=1\"\n@@ -965,8 +963,6 @@ class TestLoopbackVhostAsyncPerfDsa(TestCase):\n \"\"\"\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n \"\"\"\ndiff --git a/tests/TestSuite_loopback_virtio_user_server_mode_dsa.py b/tests/TestSuite_loopback_virtio_user_server_mode_dsa.py\nindex facd84e1..854cee2d 100644\n--- a/tests/TestSuite_loopback_virtio_user_server_mode_dsa.py\n+++ b/tests/TestSuite_loopback_virtio_user_server_mode_dsa.py\n@@ -50,9 +50,6 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"Cycle\",\n ]\n self.result_table_create(self.table_header)\n- self.use_dsa_list = []\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n @property\n def check_2M_env(self):\n@@ -190,25 +187,22 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n Test Case 1: Loopback split ring server mode large chain packets stress test with dsa dpdk driver\n \"\"\"\n if not self.check_2M_env:\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n- )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n+ dmas = \"txq0@%s-q0;rxq0@%s-q0\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=1,dmas=[%s],client=1'\"\n % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024 --mbuf-size=65535\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -230,25 +224,22 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n Test Case 2: Loopback packed ring server mode large chain packets stress test with dsa dpdk driver\n \"\"\"\n if not self.check_2M_env:\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n- )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n+ dmas = \"txq0@%s-q0;rxq0@%s-q0\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=1,dmas=[%s],client=1'\"\n % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024 --mbuf-size=65535\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -269,8 +260,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 3: Loopback split ring inorder mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -286,31 +277,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -333,8 +324,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 4: Loopback split ring mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -350,31 +341,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -397,8 +388,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 5: Loopback split ring non-mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -414,31 +405,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -463,8 +454,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 6: Loopback split ring inorder non-mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -480,31 +471,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -527,8 +518,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 7: Loopback split ring vectorized path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -544,31 +535,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -591,8 +582,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 8: Loopback packed ring inorder mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -608,31 +599,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -655,8 +646,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 9: Loopback packed ring mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -672,31 +663,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -719,8 +710,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 10: Loopback packed ring non-mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -736,31 +727,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -783,8 +774,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 11: Loopback packed ring inorder non-mergeable path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -800,31 +791,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -847,8 +838,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 12: Loopback packed ring vectorized path multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -864,31 +855,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -911,8 +902,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 13: Loopback packed ring vectorized path and ring size is not power of 2 multi-queues payload check with server mode and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -928,31 +919,31 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -976,8 +967,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n Test Case 14: Loopback split ring server mode large chain packets stress test with dsa kernel driver\n \"\"\"\n if not self.check_2M_env:\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.0\"\n+ wqs = self.DC.create_wq(wq_num=1, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=1,dmas=[%s],client=1'\"\n % dmas\n@@ -1008,8 +999,8 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n Test Case 15: Loopback packed ring server mode large chain packets stress test with dsa kernel driver\n \"\"\"\n if not self.check_2M_env:\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.0\"\n+ wqs = self.DC.create_wq(wq_num=1, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=1,dmas=[%s],client=1'\"\n % dmas\n@@ -1039,21 +1030,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 16: Loopback split ring inorder mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1080,18 +1084,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1115,21 +1133,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 17: Loopback split ring mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1157,18 +1188,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1192,21 +1237,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 18: Loopback split ring non-mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1236,18 +1294,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1271,21 +1343,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 19: Loopback split ring inorder non-mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1313,18 +1398,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1348,21 +1447,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 20: Loopback split ring vectorized path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1390,18 +1502,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1425,21 +1551,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 21: Loopback packed ring inorder mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1467,18 +1606,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1502,21 +1655,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 22: Loopback packed ring mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1544,18 +1710,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1579,21 +1759,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 23: Loopback packed ring non-mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1621,18 +1814,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1656,21 +1863,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 24: Loopback packed ring inorder non-mergeable path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1698,18 +1918,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1733,21 +1967,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 25: Loopback packed ring vectorized path multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1775,18 +2022,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1810,21 +2071,34 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 26: Loopback packed ring vectorized path and ring size is not power of 2 multi-queues payload check with server mode and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1852,18 +2126,32 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1887,45 +2175,52 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n Test Case 27: PV split and packed ring server mode test txonly mode with dsa dpdk and kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2,\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2,\n driver_name=\"vfio-pci\",\n- dsa_index_list=[2, 3],\n+ dsa_idxs=[2, 3],\n socket=self.ports_socket,\n )\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n \"txq4@%s-q0;\"\n \"txq5@%s-q0;\"\n \"rxq2@%s-q1;\"\n \"rxq3@%s-q1;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ wqs[8],\n+ wqs[8],\n+ wqs[8],\n+ wqs[8],\n )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --rxq=8 --txq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1967,8 +2262,6 @@ class TestLoopbackVirtioUserServerModeDsa(TestCase):\n \"\"\"\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.kill_all()\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n \"\"\"\ndiff --git a/tests/TestSuite_pvp_vhost_async_multi_paths_performance_dsa.py b/tests/TestSuite_pvp_vhost_async_multi_paths_performance_dsa.py\nindex 7b5077cb..13ab3d85 100644\n--- a/tests/TestSuite_pvp_vhost_async_multi_paths_performance_dsa.py\n+++ b/tests/TestSuite_pvp_vhost_async_multi_paths_performance_dsa.py\n@@ -51,8 +51,6 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n # Prepare the result table\n self.table_header = [\"Frame\"]\n self.table_header.append(\"Mode/RXD-TXD\")\n@@ -273,8 +271,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 1: pvp vhost async test with split ring inorder mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -301,8 +299,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 2: pvp vhost async test with split ring inorder non-mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -329,8 +327,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 3: pvp vhost async test with split ring mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -357,8 +355,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 4: pvp vhost async test with split ring non-mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -385,8 +383,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 5: pvp vhost async test with split ring vectorized path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -413,8 +411,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 6: pvp vhost async test with packed ring inorder mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -441,8 +439,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 7: pvp vhost async test with packed ring inorder non-mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -469,8 +467,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 8: pvp vhost async test with packed ring mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -497,8 +495,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 9: pvp vhost async test with packed ring non-mergeable path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -525,8 +523,8 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 10: pvp vhost async test with packed ring vectorized path using IDXD kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n@@ -553,17 +551,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 11: pvp vhost async test with split ring inorder mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -588,17 +586,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 12: pvp vhost async test with split ring inorder non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -623,17 +621,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 13: pvp vhost async test with split ring mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -658,17 +656,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 14: pvp vhost async test with split ring non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -693,17 +691,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 15: pvp vhost async test with split ring vectorized_rx path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -728,17 +726,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 16: pvp vhost async test with packed ring inorder mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -763,17 +761,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 17: pvp vhost async test with packed ring inorder non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -798,17 +796,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 18: pvp vhost async test with packed ring mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -833,17 +831,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 19: pvp vhost async test with packed ring non-mergeable path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -868,17 +866,17 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n Test Case 20: pvp vhost async test with split ring vectorized path using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;\" \"rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net,queues=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=1 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_user_testpmd(\n eal_param=vhost_eal_param,\n param=vhost_param,\n@@ -909,8 +907,6 @@ class TestPVPVhostAsyncMultiPathsPerformanceDsa(TestCase):\n \"\"\"\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n \"\"\"\ndiff --git a/tests/TestSuite_pvp_vhost_async_virtio_pmd_perf_dsa.py b/tests/TestSuite_pvp_vhost_async_virtio_pmd_perf_dsa.py\nindex 9a0b04ce..2d2471ef 100644\n--- a/tests/TestSuite_pvp_vhost_async_virtio_pmd_perf_dsa.py\n+++ b/tests/TestSuite_pvp_vhost_async_virtio_pmd_perf_dsa.py\n@@ -22,6 +22,7 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Run at the start of each test suite.\n \"\"\"\n+ self.frame_sizes = [64, 128, 256, 512, 1024, 1280, 1518, 2048, 4096]\n self.vhost_user = self.dut.new_session(suite=\"vhost-user\")\n self.vhost_user_pmd = PmdOutput(self.dut, self.vhost_user)\n self.dut_ports = self.dut.get_ports()\n@@ -51,8 +52,6 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"killall -s INT qemu-system-x86_64\", \"#\")\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n # Prepare the result table\n self.table_header = [\"Frame\"]\n self.table_header.append(\"Mode/RXD-TXD\")\n@@ -104,7 +103,7 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"mq=on,vectors=%s,\" % (2 + self.queues * 2) if self.queues > 1 else \"\"\n )\n vm_params[\"opt_settings\"] = (\n- \"disable-modern=false,mrg_rxbuf=on,%srx_queue_size=1024,tx_queue_size=1024,csum=off,guest_csum=off,gso= off,host_tso4=off,guest_tso4=off,guest_ecn=off%s\"\n+ \"disable-modern=false,mrg_rxbuf=on,%srx_queue_size=1024,tx_queue_size=1024,csum=off,guest_csum=off,gso=off,host_tso4=off,guest_tso4=off,guest_ecn=off%s\"\n % (mq_param, packed_param)\n )\n self.vm.set_vm_device(**vm_params)\n@@ -134,11 +133,7 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Send packet with packet generator and verify\n \"\"\"\n- if \"4c_4q\" or \"4c_8q\" not in self.running_case:\n- frame_sizes = [64, 128, 256, 512, 1024, 1280, 1518]\n- else:\n- frame_sizes = [64, 128, 256, 512, 1024, 1280, 1518, 2048, 4096]\n- for frame_size in frame_sizes:\n+ for frame_size in self.frame_sizes:\n payload_size = frame_size - self.headers_size\n tgen_input = []\n self.throughput[frame_size] = dict()\n@@ -308,10 +303,7 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"--socket-mem 8192 --vdev 'net_vhost0,iface=vhost-net,queues=%d,dmas=[%s]'\"\n % (self.queues, self.dmas)\n )\n- if \"4c_4q\" or \"4c_8q\" not in self.running_case:\n- max_len_param = \"\"\n- else:\n- max_len_param = \"--max-pkt-len=5200 --tx-offloads=0x00008000\"\n+ max_len_param = \"--max-pkt-len=5200 --tx-offloads=0x00008000\"\n vhost_param = (\n \"--nb-cores=%d --txq=%d --rxq=%d --txd=2048 --rxd=2048 %s --forward-mode=mac -a\"\n % (self.nb_cores, self.queues, self.queues, max_len_param)\n@@ -348,9 +340,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 1: pvp split ring vhost async test with 1core 1queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n self.queues = 1\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ self.dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -361,9 +353,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 2: pvp split ring vhost async test with 1core 2queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n self.queues = 2\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1;txq1@wq0.2;rxq1@wq0.3\"\n+ self.dmas = \"txq0@%s;rxq0@%s;txq1@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -374,9 +366,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 3: pvp split ring vhost async test with 2core 2queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n self.queues = 2\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1;txq1@wq0.2;rxq1@wq0.3\"\n+ self.dmas = \"txq0@%s;rxq0@%s;txq1@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -387,17 +379,17 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 4: pvp split ring vhost async test with 2core 4queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 4\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.1;\"\n- \"txq1@wq0.2;\"\n- \"rxq1@wq0.3;\"\n- \"txq2@wq0.4;\"\n- \"rxq2@wq0.5;\"\n- \"txq3@wq0.6;\"\n- \"rxq3@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3], wqs[4], wqs[5], wqs[6], wqs[7])\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -409,17 +401,17 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 5: pvp split ring vhost async test with 4core 4queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 4\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.1;\"\n- \"txq1@wq0.2;\"\n- \"rxq1@wq0.3;\"\n- \"txq2@wq0.4;\"\n- \"rxq2@wq0.5;\"\n- \"txq3@wq0.6;\"\n- \"rxq3@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3], wqs[4], wqs[5], wqs[6], wqs[7])\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -431,25 +423,43 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 6: pvp split ring vhost async test with 4core 8queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 8\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"rxq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"rxq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"rxq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"rxq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq5@wq0.5;\"\n- \"txq6@wq0.6;\"\n- \"rxq6@wq0.6;\"\n- \"txq7@wq0.7;\"\n- \"rxq7@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s;\"\n+ \"txq4@%s;\"\n+ \"rxq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq5@%s;\"\n+ \"txq6@%s;\"\n+ \"rxq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[4],\n+ wqs[4],\n+ wqs[5],\n+ wqs[5],\n+ wqs[6],\n+ wqs[6],\n+ wqs[7],\n+ wqs[7],\n+ )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -461,9 +471,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 7: pvp packed ring vhost async test with 1core 1queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n self.queues = 1\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1\"\n+ self.dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[1])\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -474,9 +484,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 8: pvp packed ring vhost async test with 1core 2queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n self.queues = 2\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1;txq1@wq0.2;rxq1@wq0.3\"\n+ self.dmas = \"txq0@%s;rxq0@%s;txq1@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -487,9 +497,9 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 9: pvp packed ring vhost async test with 2core 2queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n self.queues = 2\n- self.dmas = \"txq0@wq0.0;rxq0@wq0.1;txq1@wq0.2;rxq1@wq0.3\"\n+ self.dmas = \"txq0@%s;rxq0@%s;txq1@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n self.perf_test(\n@@ -500,17 +510,17 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 10: pvp packed ring vhost async test with 2core 4queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 4\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.1;\"\n- \"txq1@wq0.2;\"\n- \"rxq1@wq0.3;\"\n- \"txq2@wq0.4;\"\n- \"rxq2@wq0.5;\"\n- \"txq3@wq0.6;\"\n- \"rxq3@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3], wqs[4], wqs[5], wqs[6], wqs[7])\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -522,17 +532,17 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 11: pvp packed ring vhost async test with 4core 4queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 4\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.1;\"\n- \"txq1@wq0.2;\"\n- \"rxq1@wq0.3;\"\n- \"txq2@wq0.4;\"\n- \"rxq2@wq0.5;\"\n- \"txq3@wq0.6;\"\n- \"rxq3@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3], wqs[4], wqs[5], wqs[6], wqs[7])\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -544,25 +554,43 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 12: pvp packed ring vhost async test with 4core 8queue using idxd kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0])\n self.queues = 8\n self.dmas = (\n- \"txq0@wq0.0;\"\n- \"rxq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"rxq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"rxq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"rxq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"rxq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq5@wq0.5;\"\n- \"txq6@wq0.6;\"\n- \"rxq6@wq0.6;\"\n- \"txq7@wq0.7;\"\n- \"rxq7@wq0.7\"\n+ \"txq0@%s;\"\n+ \"rxq0@%s;\"\n+ \"txq1@%s;\"\n+ \"rxq1@%s;\"\n+ \"txq2@%s;\"\n+ \"rxq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq3@%s;\"\n+ \"txq4@%s;\"\n+ \"rxq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq5@%s;\"\n+ \"txq6@%s;\"\n+ \"rxq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[4],\n+ wqs[4],\n+ wqs[5],\n+ wqs[5],\n+ wqs[6],\n+ wqs[6],\n+ wqs[7],\n+ wqs[7],\n+ )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n@@ -574,18 +602,18 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 13: pvp split ring vhost async test with 1core 1queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 1\n self.dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -597,8 +625,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 14: pvp split ring vhost async test with 1core 2queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 2\n self.dmas = (\n@@ -607,16 +635,16 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq1@%s-q2;\"\n \"rxq1@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -628,8 +656,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 15: pvp split ring vhost async test with 2core 2queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 2\n self.dmas = (\n@@ -638,16 +666,16 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq1@%s-q2;\"\n \"rxq1@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -659,8 +687,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 16: pvp split ring vhost async test with 2core 4queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 4\n self.dmas = (\n@@ -673,20 +701,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -698,8 +726,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 17: pvp split ring vhost async test with 4core 4queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 4\n self.dmas = (\n@@ -712,20 +740,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -737,8 +765,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 18: pvp split ring vhost async test with 4core 8queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 8\n self.dmas = (\n@@ -751,20 +779,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -776,18 +804,18 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 19: pvp packed ring vhost async test with 1core 1queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 1\n self.dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -799,8 +827,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 20: pvp packed ring vhost async test with 1core 2queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 2\n self.dmas = (\n@@ -809,16 +837,16 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq1@%s-q2;\"\n \"rxq1@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 1\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -830,8 +858,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 21: pvp packed ring vhost async test with 2core 2queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 2\n self.dmas = (\n@@ -840,16 +868,16 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq1@%s-q2;\"\n \"rxq1@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -861,8 +889,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 22: pvp packed ring vhost async test with 2core 4queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 4\n self.dmas = (\n@@ -875,20 +903,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 2\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -900,8 +928,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 23: pvp packed ring vhost async test with 4core 4queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 4\n self.dmas = (\n@@ -914,20 +942,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -939,8 +967,8 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"\"\"\n Test Case 24: pvp packed ring vhost async test with 4core 8queue using vfio-pci driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n self.queues = 8\n self.dmas = (\n@@ -953,20 +981,20 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n \"txq3@%s-q6;\"\n \"rxq3@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n self.nb_cores = 4\n ports = [self.dut.ports_info[self.dut_ports[0]][\"pci\"]]\n- ports.append(self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ ports.append(dsas[0])\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.perf_test(\n case_info=self.running_case,\n ports=ports,\n@@ -985,8 +1013,6 @@ class TestPVPVhostAsyncVirtioPmdPerfDsa(TestCase):\n Run after each test case.\n \"\"\"\n self.stop_vm_and_quit_testpmd()\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n \"\"\"\ndiff --git a/tests/TestSuite_vhost_dsa.py b/tests/TestSuite_vhost_dsa.py\nindex 1477eb6c..ef3fdf46 100644\n--- a/tests/TestSuite_vhost_dsa.py\n+++ b/tests/TestSuite_vhost_dsa.py\n@@ -76,8 +76,6 @@ class TestVhostDsa(TestCase):\n self.dut.send_expect(\"killall -I %s\" % self.testpmd_name, \"#\", 20)\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n self.mode_list = []\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def get_vhost_port_num(self):\n out = self.vhost_user.send_expect(\"show port summary all\", \"testpmd> \", 60)\n@@ -166,8 +164,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 1: PVP split ring vhost async operation test with each tx/rx queue using one DSA dpdk driver channel\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -175,10 +173,10 @@ class TestVhostDsa(TestCase):\n \"rxq0@%s-q2;\"\n \"rxq1@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -187,9 +185,9 @@ class TestVhostDsa(TestCase):\n vhost_param = \"--nb-cores=1 --txq=2 --rxq=2 --txd=1024 --rxd=1024\"\n \n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -233,10 +231,10 @@ class TestVhostDsa(TestCase):\n \"rxq0@%s-q0;\"\n \"rxq1@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_param = \"--nb-cores=2 --txq=2 --rxq=2 --txd=1024 --rxd=1024\"\n@@ -244,8 +242,8 @@ class TestVhostDsa(TestCase):\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=2,dmas=[%s]'\" % dmas\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=2\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=2\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -293,8 +291,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 2: PVP split ring vhost async operations test with one DSA dpdk driver channel being shared among multiple tx/rx queues\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -314,22 +312,22 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q1;\"\n \"rxq7@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -337,9 +335,9 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -395,29 +393,29 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q6;\"\n \"rxq7@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=6 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -470,29 +468,29 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q0;\"\n \"rxq7@%s-q0\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=6 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -539,8 +537,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 3: PVP split ring dynamic queues vhost async operation with dsa dpdk driver channels\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -548,10 +546,10 @@ class TestVhostDsa(TestCase):\n \"txq2@%s-q2;\"\n \"txq3@%s-q2\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -559,9 +557,9 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=4 --rxq=4 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -610,17 +608,17 @@ class TestVhostDsa(TestCase):\n \"rxq2@%s-q1;\"\n \"rxq3@%s-q0\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --txq=4 --rxq=4 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -649,18 +647,18 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q2;\"\n \"rxq7@%s-q2\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -668,8 +666,8 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -711,19 +709,19 @@ class TestVhostDsa(TestCase):\n \"rxq2@%s-q1;\"\n \"rxq3@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=5 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -751,8 +749,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 4: PVP packed ring vhost async operation test with each tx/rx queue using one DSA dpdk driver channel\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -760,10 +758,10 @@ class TestVhostDsa(TestCase):\n \"rxq0@%s-q2;\"\n \"rxq1@%s-q2\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -771,9 +769,9 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=1 --txq=2 --rxq=2 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -818,10 +816,10 @@ class TestVhostDsa(TestCase):\n \"rxq0@%s-q0;\"\n \"rxq1@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -875,8 +873,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 5: PVP packed ring vhost async operation test with one DSA dpdk driver channel being shared among multiple tx/rx queues\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -896,22 +894,22 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q1;\"\n \"rxq7@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -919,9 +917,9 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n param=vhost_param,\n@@ -978,22 +976,22 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q0;\"\n \"rxq7@%s-q0\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -1047,17 +1045,17 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 6: PVP packed ring dynamic queues vhost async operation with dsa dpdk driver channels\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n \"txq1@%s-q0;\"\n \"txq2@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -1065,11 +1063,11 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=4 --rxq=4 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -1118,9 +1116,9 @@ class TestVhostDsa(TestCase):\n \"rxq1@%s-q1;\"\n \"rxq2@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n vhost_eal_param = (\n@@ -1155,18 +1153,18 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q2;\"\n \"rxq7@%s-q2\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -1244,8 +1242,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 7: PVP split ring vhost async operation test with each tx/rx queue using one DSA kernel driver channel\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n- dmas = \"txq0@wq0.0;\" \"txq1@wq0.1;\" \"rxq0@wq0.2;\" \"rxq1@wq0.3\"\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n+ dmas = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=2,dmas=[%s]'\" % dmas\n )\n@@ -1300,24 +1298,42 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 8: PVP split ring all path multi-queues vhost async operation test with one DSA kernel driver channel being shared among multiple tx/rx queues\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"txq6@wq0.1;\"\n- \"txq7@wq0.1;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0;\"\n- \"rxq4@wq0.1;\"\n- \"rxq5@wq0.1;\"\n- \"rxq6@wq0.1;\"\n- \"rxq7@wq0.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n@@ -1362,22 +1378,40 @@ class TestVhostDsa(TestCase):\n if not self.check_2M_env:\n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.1;\"\n- \"txq3@wq0.1;\"\n- \"txq4@wq0.2;\"\n- \"txq5@wq0.2;\"\n- \"txq6@wq0.3;\"\n- \"txq7@wq0.3;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1;\"\n- \"rxq4@wq0.2;\"\n- \"rxq5@wq0.2;\"\n- \"rxq6@wq0.3;\"\n- \"rxq7@wq0.3\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n@@ -1406,9 +1440,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 9: PVP split ring dynamic queues vhost async operation with dsa kernel driver channels\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- dmas = \"txq0@wq0.0;\" \"txq1@wq0.1;\" \"txq2@wq0.2;\" \"txq3@wq0.2\"\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dmas = \"txq0@%s;txq1@%s;txq2@%s;txq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[2])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n@@ -1456,7 +1489,7 @@ class TestVhostDsa(TestCase):\n self.check_each_queue_of_port_packets(queues=1)\n \n self.vhost_user_pmd.quit()\n- dmas = \"rxq0@wq0.0;\" \"rxq1@wq0.1;\" \"rxq2@wq0.1;\" \"rxq3@wq0.0\"\n+ dmas = \"rxq0@%s;rxq1@%s;rxq2@%s;rxq3@%s\" % (wqs[0], wqs[1], wqs[1], wqs[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n@@ -1476,18 +1509,32 @@ class TestVhostDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.2;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.1;\"\n- \"rxq4@wq1.2;\"\n- \"rxq5@wq1.2;\"\n- \"rxq6@wq1.2;\"\n- \"rxq7@wq1.2\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[10],\n+ wqs[10],\n+ wqs[10],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1508,18 +1555,32 @@ class TestVhostDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1571,9 +1632,8 @@ class TestVhostDsa(TestCase):\n Test Case 10: PVP packed ring all path multi-queues vhost async operation test with each tx/rx queue using one DSA kernel driver channel\n \n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=1)\n- dmas = \"txq0@wq0.0;\" \"txq1@wq0.1;\" \"rxq0@wq1.0;\" \"rxq1@wq1.1\"\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0, 1])\n+ dmas = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=2,dmas=[%s]'\" % dmas\n )\n@@ -1629,24 +1689,42 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 11: PVP packed ring all path multi-queues vhost async operation test with one DSA kernel driver channel being shared among multiple tx/rx queues\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"txq6@wq0.1;\"\n- \"txq7@wq0.1;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0;\"\n- \"rxq4@wq0.1;\"\n- \"rxq5@wq0.1;\"\n- \"rxq6@wq0.1;\"\n- \"rxq7@wq0.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n@@ -1691,24 +1769,6 @@ class TestVhostDsa(TestCase):\n \n if not self.check_2M_env:\n self.vhost_user_pmd.quit()\n- dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"txq6@wq0.1;\"\n- \"txq7@wq0.1;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0;\"\n- \"rxq4@wq0.1;\"\n- \"rxq5@wq0.1;\"\n- \"rxq6@wq0.1;\"\n- \"rxq7@wq0.1\"\n- )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,dmas=[%s]'\" % dmas\n )\n@@ -1736,9 +1796,8 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 12: PVP packed ring dynamic queues vhost async operation with dsa kernel driver channels\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- dmas = \"txq0@wq0.0;\" \"txq1@wq0.1;\" \"txq2@wq0.2;\" \"txq3@wq0.2\"\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dmas = \"txq0@%s;txq1@%s;txq2@%s;txq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[2])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n@@ -1786,7 +1845,7 @@ class TestVhostDsa(TestCase):\n self.check_each_queue_of_port_packets(queues=1)\n \n self.vhost_user_pmd.quit()\n- dmas = \"rxq0@wq0.0;\" \"rxq1@wq0.1;\" \"rxq2@wq0.1;\" \"rxq3@wq0.0\"\n+ dmas = \"rxq0@%s;rxq1@%s;rxq2@%s;rxq3@%s\" % (wqs[0], wqs[1], wqs[1], wqs[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n@@ -1806,18 +1865,32 @@ class TestVhostDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.2;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.1;\"\n- \"rxq4@wq1.2;\"\n- \"rxq5@wq1.2;\"\n- \"rxq6@wq1.2;\"\n- \"rxq7@wq1.2\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[10],\n+ wqs[10],\n+ wqs[10],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1838,18 +1911,32 @@ class TestVhostDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n@@ -1894,15 +1981,14 @@ class TestVhostDsa(TestCase):\n \"\"\"\n Test Case 13: PVP split and packed ring dynamic queues vhost async operation with dsa dpdk and kernel driver channels\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2,\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2,\n driver_name=\"vfio-pci\",\n- dsa_index_list=[2, 3],\n+ dsa_idxs=[2, 3],\n socket=self.ports_socket,\n )\n- dmas = \"txq0@wq0.0;\" \"txq1@wq0.0\"\n+ dmas = \"txq0@%s;txq1@%s\" % (wqs[0], wqs[0])\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n@@ -1944,14 +2030,14 @@ class TestVhostDsa(TestCase):\n \"rxq2@%s-q1;\"\n \"rxq3@%s-q2\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -1959,11 +2045,11 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -1980,13 +2066,13 @@ class TestVhostDsa(TestCase):\n \n self.vhost_user_pmd.quit()\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"txq6@wq0.6;\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n \"rxq2@%s-q0;\"\n \"rxq3@%s-q1;\"\n \"rxq4@%s-q0;\"\n@@ -1994,12 +2080,19 @@ class TestVhostDsa(TestCase):\n \"rxq6@%s-q2;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -2007,11 +2100,11 @@ class TestVhostDsa(TestCase):\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -2045,39 +2138,16 @@ class TestVhostDsa(TestCase):\n self.check_each_queue_of_port_packets(queues=8)\n \n self.vhost_user_pmd.quit()\n- dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"txq6@wq0.6;\"\n- \"rxq2@%s-q0;\"\n- \"rxq3@%s-q1;\"\n- \"rxq4@%s-q0;\"\n- \"rxq5@%s-q1;\"\n- \"rxq6@%s-q2;\"\n- \"rxq7@%s-q3\"\n- % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- )\n- )\n vhost_eal_param = (\n \"--vdev 'net_vhost0,iface=vhost-net0,queues=8,client=1,dmas=[%s]'\" % dmas\n )\n vhost_param = \"--nb-cores=4 --txq=8 --rxq=8 --txd=1024 --rxd=1024\"\n ports = [self.dut.ports_info[0][\"pci\"]]\n- for i in self.use_dsa_list:\n+ for i in dsas:\n ports.append(i)\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\ndiff --git a/tests/TestSuite_vm2vm_virtio_net_perf_dsa.py b/tests/TestSuite_vm2vm_virtio_net_perf_dsa.py\nindex b06e5ca6..408713f8 100644\n--- a/tests/TestSuite_vm2vm_virtio_net_perf_dsa.py\n+++ b/tests/TestSuite_vm2vm_virtio_net_perf_dsa.py\n@@ -2,16 +2,14 @@\n # Copyright(c) 2022 Intel Corporation\n #\n \n-import random\n import re\n-import string\n-import time\n \n import framework.utils as utils\n from framework.pmd_output import PmdOutput\n from framework.test_case import TestCase\n from framework.virt_common import VM\n \n+from .virtio_common import basic_common as BC\n from .virtio_common import dsa_common as DC\n \n \n@@ -22,28 +20,22 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n self.cores_list = self.dut.get_core_list(config=\"all\", socket=self.ports_socket)\n self.vhost_core_list = self.cores_list[0:9]\n self.vm_num = 2\n- self.virtio_ip1 = \"1.1.1.1\"\n- self.virtio_ip2 = \"1.1.1.2\"\n- self.virtio_mac1 = \"52:54:00:00:00:01\"\n- self.virtio_mac2 = \"52:54:00:00:00:02\"\n self.base_dir = self.dut.base_dir.replace(\"~\", \"/root\")\n- self.random_string = string.ascii_letters + string.digits\n socket_num = len(set([int(core[\"socket\"]) for core in self.dut.cores]))\n self.socket_mem = \",\".join([\"2048\"] * socket_num)\n self.vhost_user = self.dut.new_session(suite=\"vhost\")\n self.vhost_user_pmd = PmdOutput(self.dut, self.vhost_user)\n self.app_testpmd_path = self.dut.apps_name[\"test-pmd\"]\n self.testpmd_name = self.app_testpmd_path.split(\"/\")[-1]\n+ self.BC = BC(self)\n self.DC = DC(self)\n \n def set_up(self):\n self.dut.send_expect(\"rm -rf %s/vhost-net*\" % self.base_dir, \"#\")\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n+ self.dut.send_expect(\"killall -s INT qemu-system-x86_64\", \"#\")\n self.vm_dut = []\n self.vm = []\n- self.use_dsa_list = []\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def start_vhost_testpmd(\n self,\n@@ -115,86 +107,6 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n self.vm_dut.append(vm_dut)\n self.vm.append(vm_info)\n \n- def config_vm_ip(self):\n- \"\"\"\n- set virtio device IP and run arp protocal\n- \"\"\"\n- vm1_intf = self.vm_dut[0].ports_info[0][\"intf\"]\n- vm2_intf = self.vm_dut[1].ports_info[0][\"intf\"]\n- self.vm_dut[0].send_expect(\n- \"ifconfig %s %s\" % (vm1_intf, self.virtio_ip1), \"#\", 10\n- )\n- self.vm_dut[1].send_expect(\n- \"ifconfig %s %s\" % (vm2_intf, self.virtio_ip2), \"#\", 10\n- )\n- self.vm_dut[0].send_expect(\n- \"arp -s %s %s\" % (self.virtio_ip2, self.virtio_mac2), \"#\", 10\n- )\n- self.vm_dut[1].send_expect(\n- \"arp -s %s %s\" % (self.virtio_ip1, self.virtio_mac1), \"#\", 10\n- )\n-\n- def config_vm_combined(self, combined=1):\n- \"\"\"\n- set virtio device combined\n- \"\"\"\n- vm1_intf = self.vm_dut[0].ports_info[0][\"intf\"]\n- vm2_intf = self.vm_dut[1].ports_info[0][\"intf\"]\n- self.vm_dut[0].send_expect(\n- \"ethtool -L %s combined %d\" % (vm1_intf, combined), \"#\", 10\n- )\n- self.vm_dut[1].send_expect(\n- \"ethtool -L %s combined %d\" % (vm2_intf, combined), \"#\", 10\n- )\n-\n- def check_ping_between_vms(self):\n- ping_out = self.vm_dut[0].send_expect(\n- \"ping {} -c 4\".format(self.virtio_ip2), \"#\", 20\n- )\n- self.logger.info(ping_out)\n-\n- def start_iperf(self):\n- \"\"\"\n- run perf command between to vms\n- \"\"\"\n- self.vhost_user_pmd.execute_cmd(\"clear port xstats all\")\n-\n- server = \"iperf -s -i 1\"\n- client = \"iperf -c {} -i 1 -t 60\".format(self.virtio_ip1)\n- self.vm_dut[0].send_expect(\"{} > iperf_server.log &\".format(server), \"\", 10)\n- self.vm_dut[1].send_expect(\"{} > iperf_client.log &\".format(client), \"\", 10)\n- time.sleep(60)\n-\n- def get_perf_result(self):\n- \"\"\"\n- get the iperf test result\n- \"\"\"\n- self.table_header = [\"Mode\", \"[M|G]bits/sec\"]\n- self.result_table_create(self.table_header)\n- self.vm_dut[0].send_expect(\"pkill iperf\", \"# \")\n- self.vm_dut[1].session.copy_file_from(\"%s/iperf_client.log\" % self.dut.base_dir)\n- fp = open(\"./iperf_client.log\")\n- fmsg = fp.read()\n- fp.close()\n- # remove the server report info from msg\n- index = fmsg.find(\"Server Report\")\n- if index != -1:\n- fmsg = fmsg[:index]\n- iperfdata = re.compile(\"\\S*\\s*[M|G]bits/sec\").findall(fmsg)\n- # the last data of iperf is the ave data from 0-30 sec\n- self.verify(len(iperfdata) != 0, \"The iperf data between to vms is 0\")\n- self.logger.info(\"The iperf data between vms is %s\" % iperfdata[-1])\n-\n- # put the result to table\n- results_row = [\"vm2vm\", iperfdata[-1]]\n- self.result_table_add(results_row)\n-\n- # print iperf resut\n- self.result_table_print()\n- # rm the iperf log file in vm\n- self.vm_dut[0].send_expect(\"rm iperf_server.log\", \"#\", 10)\n- self.vm_dut[1].send_expect(\"rm iperf_client.log\", \"#\", 10)\n-\n def verify_xstats_info_on_vhost(self):\n \"\"\"\n check both 2VMs can receive and send big packets to each other\n@@ -213,40 +125,15 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n int(tx_info.group(1)) > 0, \"Port 0 not forward packet greater than 1519\"\n )\n \n- def check_scp_file_valid_between_vms(self, file_size=1024):\n- \"\"\"\n- scp file form VM1 to VM2, check the data is valid\n- \"\"\"\n- # default file_size=1024K\n- data = \"\"\n- for char in range(file_size * 1024):\n- data += random.choice(self.random_string)\n- self.vm_dut[0].send_expect('echo \"%s\" > /tmp/payload' % data, \"# \")\n- # scp this file to vm1\n- out = self.vm_dut[1].send_command(\n- \"scp root@%s:/tmp/payload /root\" % self.virtio_ip1, timeout=10\n- )\n- if \"Are you sure you want to continue connecting\" in out:\n- self.vm_dut[1].send_command(\"yes\", timeout=10)\n- self.vm_dut[1].send_command(self.vm[0].password, timeout=10)\n- # get the file info in vm1, and check it valid\n- md5_send = self.vm_dut[0].send_expect(\"md5sum /tmp/payload\", \"# \")\n- md5_revd = self.vm_dut[1].send_expect(\"md5sum /root/payload\", \"# \")\n- md5_send = md5_send[: md5_send.find(\" \")]\n- md5_revd = md5_revd[: md5_revd.find(\" \")]\n- self.verify(\n- md5_send == md5_revd, \"the received file is different with send file\"\n- )\n-\n def test_split_tso_with_dpdk_driver(self):\n \"\"\"\n Test Case 1: VM2VM vhost-user/virtio-net split ring test TSO with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;rxq0@%s-q0\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ dmas = \"txq0@%s-q0;rxq0@%s-q0\" % (dsas[0], dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=1,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=1,tso=1,dmas=[%s]'\"\n@@ -257,23 +144,23 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=False, vm_queue=1)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.verify_xstats_info_on_vhost()\n \n def test_split_mergeable_8_queues_large_packet_paylocad_with_dpdk_driver(self):\n \"\"\"\n Test Case 2: VM2VM vhost-user/virtio-net split ring mergeable path 8 queues test with large packet payload with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -293,25 +180,25 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,tso=1,dmas=[%s]'\"\n@@ -322,17 +209,17 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=True, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n dmas1 = (\n@@ -349,18 +236,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q5;\"\n \"rxq7@%s-q5\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n dmas2 = (\n@@ -377,18 +264,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q5;\"\n \"rxq7@%s-q5\"\n % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n vhost_eal_param = (\n@@ -397,20 +284,20 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=8\",\n- self.use_dsa_list[1]: \"max_queues=8\",\n+ dsas[0]: \"max_queues=8\",\n+ dsas[1]: \"max_queues=8\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n if not self.check_2M_env:\n self.vhost_user_pmd.quit()\n@@ -418,14 +305,14 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"pa\",\n )\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -439,11 +326,11 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=4)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=4)\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -457,18 +344,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=1)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=1)\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_split_non_mergeable_8_queues_large_packet_paylocad_with_dpdk_driver(self):\n \"\"\"\n Test Case 3: VM2VM vhost-user/virtio-net split ring non-mergeable path 8 queues test with large packet payload with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -488,25 +375,25 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=8\"}\n+ port_options = {dsas[0]: \"max_queues=8\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,tso=1,dmas=[%s]'\"\n@@ -517,17 +404,17 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=True, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -541,11 +428,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=4)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=4)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -559,21 +447,22 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=1)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=1)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_tso_with_dpdk_driver(self):\n \"\"\"\n Test Case 4: VM2VM vhost-user/virtio-net packed ring test TSO with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ dmas = \"txq0@%s-q0;rxq0@%s-q1\" % (dsas[0], dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=1,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=1,tso=1,dmas=[%s]'\"\n@@ -584,23 +473,24 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=1)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.verify_xstats_info_on_vhost()\n \n def test_packed_mergeable_8_queues_large_packet_paylocad_with_dpdk_driver(self):\n \"\"\"\n Test Case 5: VM2VM vhost-user/virtio-net packed ring mergeable path 8 queues test with large packet payload with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -620,25 +510,25 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q3;\"\n \"rxq7@%s-q3\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=8,tso=1,dmas=[%s]'\"\n@@ -649,30 +539,30 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_non_mergeable_8_queues_large_packet_paylocad_with_dpdk_driver(self):\n \"\"\"\n Test Case 6: VM2VM vhost-user/virtio-net packed ring non-mergeable path 8 queues test with large packet payload with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas1 = (\n \"txq0@%s-q0;\"\n@@ -688,18 +578,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q7;\"\n \"rxq7@%s-q7\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n dmas2 = (\n@@ -716,23 +606,23 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q7;\"\n \"rxq7@%s-q7\"\n % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=8\",\n- self.use_dsa_list[1]: \"max_queues=8\",\n+ dsas[0]: \"max_queues=8\",\n+ dsas[1]: \"max_queues=8\",\n }\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,tso=1,dmas=[%s]' \"\n@@ -744,34 +634,34 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=off,guest_tso4=off,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_dma_ring_size_with_tcp_and_dpdk_driver(self):\n \"\"\"\n Test Case 7: VM2VM vhost-user/virtio-net packed ring test dma-ring-size with tcp traffic and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n- dmas1 = \"txq0@%s-q0;rxq0@%s-q0\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n- dmas2 = \"txq0@%s-q1;rxq0@%s-q1\" % (self.use_dsa_list[0], self.use_dsa_list[0])\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ dmas1 = \"txq0@%s-q0;rxq0@%s-q0\" % (dsas[0], dsas[0])\n+ dmas2 = \"txq0@%s-q1;rxq0@%s-q1\" % (dsas[0], dsas[0])\n+ port_options = {dsas[0]: \"max_queues=2\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=1,tso=1,dmas=[%s],dma-ring-size=64' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=1,tso=1,dmas=[%s],dma-ring-size=64'\"\n@@ -782,23 +672,24 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=1)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.verify_xstats_info_on_vhost()\n \n def test_packed_mergeable_8_queues_with_legacy_mode_and_dpdk_driver(self):\n \"\"\"\n Test Case 8: VM2VM vhost-user/virtio-net packed ring mergeable path 8 queues test with legacy mode with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -818,25 +709,25 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q1;\"\n \"rxq7@%s-q1\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,tso=1,legacy-ol-flags=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=8,tso=1,legacy-ol-flags=1,dmas=[%s]'\"\n@@ -847,30 +738,30 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_split_tso_with_kernel_driver(self):\n \"\"\"\n Test Case 9: VM2VM vhost-user/virtio-net split ring test TSO with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.0\"\n+ wqs = self.DC.create_wq(wq_num=1, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[0])\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=1,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=1,tso=1,dmas=[%s]'\"\n@@ -885,53 +776,87 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=False, vm_queue=1)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.verify_xstats_info_on_vhost()\n \n def test_split_mergeable_8_queues_large_packet_paylocad_with_kernel_driver(self):\n \"\"\"\n Test Case 10: VM2VM vhost-user/virtio-net split ring mergeable path 8 queues test with large packet payload with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"txq6@wq0.6;\"\n- \"txq7@wq0.7;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.1;\"\n- \"rxq2@wq0.2;\"\n- \"rxq3@wq0.3;\"\n- \"rxq4@wq0.4;\"\n- \"rxq5@wq0.5;\"\n- \"rxq6@wq0.6;\"\n- \"rxq7@wq0.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ ) % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ wqs[7],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ wqs[7],\n )\n dmas2 = (\n- \"txq0@wq1.0;\"\n- \"txq1@wq1.1;\"\n- \"txq2@wq1.2;\"\n- \"txq3@wq1.3;\"\n- \"txq4@wq1.4;\"\n- \"txq5@wq1.5;\"\n- \"txq6@wq1.6;\"\n- \"txq7@wq1.7;\"\n- \"rxq0@wq1.0;\"\n- \"rxq1@wq1.1;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ ) % (\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,tso=1,dmas=[%s]' \"\n@@ -947,41 +872,69 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=True, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1;\"\n- \"rxq4@wq0.2;\"\n- \"rxq5@wq0.2;\"\n- \"rxq6@wq0.2;\"\n- \"rxq7@wq0.2\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ )\n )\n dmas2 = (\n- \"txq0@wq0.3;\"\n- \"txq1@wq0.3;\"\n- \"txq2@wq0.3;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.4;\"\n- \"rxq2@wq0.4;\"\n- \"rxq3@wq0.4;\"\n- \"rxq4@wq0.5;\"\n- \"rxq5@wq0.5;\"\n- \"rxq6@wq0.5;\"\n- \"rxq7@wq0.5\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[3],\n+ wqs[3],\n+ wqs[3],\n+ wqs[3],\n+ wqs[4],\n+ wqs[4],\n+ wqs[4],\n+ wqs[4],\n+ wqs[5],\n+ wqs[5],\n+ wqs[5],\n+ wqs[5],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,tso=1,dmas=[%s]' \"\n@@ -1011,11 +964,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=4)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=4)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -1029,11 +983,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=1)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=1)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_split_non_mergeable_8_queues_large_packet_paylocad_with_kernel_driver(\n self,\n@@ -1041,35 +996,62 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"\"\"\n Test Case 11: VM2VM vhost-user/virtio-net split ring non-mergeable path 8 queues test with large packet payload with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1;\"\n- \"rxq4@wq0.2;\"\n- \"rxq5@wq0.2;\"\n- \"rxq6@wq0.2;\"\n- \"rxq7@wq0.2\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ )\n )\n dmas2 = (\n- \"txq0@wq1.0;\"\n- \"txq1@wq1.0;\"\n- \"txq2@wq1.0;\"\n- \"txq3@wq1.0;\"\n- \"txq4@wq1.1;\"\n- \"txq5@wq1.1;\"\n- \"rxq2@wq1.1;\"\n- \"rxq3@wq1.1;\"\n- \"rxq4@wq1.2;\"\n- \"rxq5@wq1.2;\"\n- \"rxq6@wq1.2;\"\n- \"rxq7@wq1.2\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[3],\n+ wqs[3],\n+ wqs[3],\n+ wqs[3],\n+ wqs[4],\n+ wqs[4],\n+ wqs[4],\n+ wqs[4],\n+ wqs[5],\n+ wqs[5],\n+ wqs[5],\n+ wqs[5],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,tso=1,dmas=[%s]' \"\n@@ -1085,12 +1067,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=off,guest_tso4=off,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=True, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -1104,11 +1086,10 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n-\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=4,tso=1' \"\n@@ -1121,18 +1102,19 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=1)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=1)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_tso_with_kernel_driver(self):\n \"\"\"\n Test Case 12: VM2VM vhost-user/virtio-net packed ring test TSO with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- dmas = \"txq0@wq0.0;rxq0@wq0.0\"\n+ wqs = self.DC.create_wq(wq_num=1, dsa_idxs=[0])\n+ dmas = \"txq0@%s;rxq0@%s\" % (wqs[0], wqs[0])\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=1,tso=1,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,queues=1,tso=1,dmas=[%s]'\"\n@@ -1147,45 +1129,73 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=1)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n self.verify_xstats_info_on_vhost()\n \n def test_packed_mergeable_8_queues_large_packet_paylocad_with_kernel_driver(self):\n \"\"\"\n Test Case 13: VM2VM vhost-user/virtio-net packed ring mergeable path 8 queues test with large packet payload with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"txq4@wq0.4;\"\n- \"txq5@wq0.5;\"\n- \"rxq2@wq0.2;\"\n- \"rxq3@wq0.3;\"\n- \"rxq4@wq0.4;\"\n- \"rxq5@wq0.5;\"\n- \"rxq6@wq0.6;\"\n- \"rxq7@wq0.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ wqs[7],\n+ )\n )\n dmas2 = (\n- \"txq0@wq1.0;\"\n- \"txq1@wq1.1;\"\n- \"txq2@wq1.2;\"\n- \"txq3@wq1.3;\"\n- \"txq4@wq1.4;\"\n- \"txq5@wq1.5;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.3;\"\n- \"rxq4@wq1.4;\"\n- \"rxq5@wq1.5;\"\n- \"rxq6@wq1.6;\"\n- \"rxq7@wq1.7\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,tso=1,dmas=[%s]' \"\n@@ -1201,18 +1211,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_non_mergeable_8_queues_large_packet_paylocad_with_kernel_driver(\n self,\n@@ -1220,43 +1230,78 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"\"\"\n Test Case 14: VM2VM vhost-user/virtio-net packed ring non-mergeable path 8 queues test with large packet payload with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.1;\"\n- \"txq3@wq0.1;\"\n- \"txq4@wq0.2;\"\n- \"txq5@wq0.2;\"\n- \"txq6@wq0.3;\"\n- \"txq7@wq0.3;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1;\"\n- \"rxq4@wq0.2;\"\n- \"rxq5@wq0.2;\"\n- \"rxq6@wq0.3;\"\n- \"rxq7@wq0.3\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ )\n )\n dmas2 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.1;\"\n- \"txq3@wq0.1;\"\n- \"txq4@wq0.2;\"\n- \"txq5@wq0.2;\"\n- \"txq6@wq0.3;\"\n- \"txq7@wq0.3;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1;\"\n- \"rxq4@wq0.2;\"\n- \"rxq5@wq0.2;\"\n- \"rxq6@wq0.3;\"\n- \"rxq7@wq0.3\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"txq6@%s;\"\n+ \"txq7@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=8,tso=1,dmas=[%s]' \"\n@@ -1272,27 +1317,26 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n )\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=on,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=8)\n- self.config_vm_combined(combined=8)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=8)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_split_non_mergeable_16_queues_with_rx_tx_csum_in_sw(self):\n \"\"\"\n Test Case 15: VM2VM vhost-user/virtio-net split ring non-mergeable 16 queues test with Rx/Tx csum in SW\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2,\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2,\n driver_name=\"vfio-pci\",\n dsa_index_list=[2, 3],\n socket=self.ports_socket,\n@@ -1314,39 +1358,55 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"txq13@%s-q0;\"\n \"txq14@%s-q0;\"\n \"txq15@%s-q0;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0;\"\n- \"rxq4@wq0.0;\"\n- \"rxq5@wq0.0;\"\n- \"rxq6@wq0.0;\"\n- \"rxq7@wq0.0;\"\n- \"rxq8@wq0.0;\"\n- \"rxq9@wq0.0;\"\n- \"rxq10@wq0.0;\"\n- \"rxq11@wq0.0;\"\n- \"rxq12@wq0.0;\"\n- \"rxq13@wq0.0;\"\n- \"rxq14@wq0.0;\"\n- \"rxq15@wq0.0\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s;\"\n+ \"rxq8@%s;\"\n+ \"rxq9@%s;\"\n+ \"rxq10@%s;\"\n+ \"rxq11@%s;\"\n+ \"rxq12@%s;\"\n+ \"rxq13@%s;\"\n+ \"rxq14@%s;\"\n+ \"rxq15@%s\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n )\n )\n dmas2 = (\n@@ -1366,39 +1426,55 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"txq13@%s-q5;\"\n \"txq14@%s-q6;\"\n \"txq15@%s-q7;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.1;\"\n- \"rxq2@wq0.2;\"\n- \"rxq3@wq0.3;\"\n- \"rxq4@wq0.4;\"\n- \"rxq5@wq0.5;\"\n- \"rxq6@wq0.6;\"\n- \"rxq7@wq0.7;\"\n- \"rxq8@wq1.0;\"\n- \"rxq9@wq1.1;\"\n- \"rxq10@wq1.2;\"\n- \"rxq11@wq1.3;\"\n- \"rxq12@wq1.4;\"\n- \"rxq13@wq1.5;\"\n- \"rxq14@wq1.6;\"\n- \"rxq15@wq1.7\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s;\"\n+ \"rxq8@%s;\"\n+ \"rxq9@%s;\"\n+ \"rxq10@%s;\"\n+ \"rxq11@%s;\"\n+ \"rxq12@%s;\"\n+ \"rxq13@%s;\"\n+ \"rxq14@%s;\"\n+ \"rxq15@%s\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ wqs[7],\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n )\n )\n vhost_eal_param = (\n@@ -1411,7 +1487,7 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n )\n self.vhost_user_pmd.execute_cmd(\"stop\")\n self.vhost_user_pmd.execute_cmd(\"set fwd csum\")\n@@ -1425,12 +1501,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"start\")\n self.vm_args = \"disable-modern=false,mrg_rxbuf=off,mq=on,vectors=40,csum=on,guest_csum=off,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on\"\n self.start_vms(server_mode=True, vm_queue=16)\n- self.config_vm_combined(combined=16)\n- self.config_vm_ip()\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=16)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n dmas1 = (\n@@ -1447,29 +1523,39 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"rxq6@%s-q6;\"\n \"rxq7@%s-q6\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n )\n dmas2 = (\n- \"txq12@wq1.0;\"\n- \"txq13@wq1.0;\"\n- \"txq14@wq1.0;\"\n- \"txq15@wq1.0;\"\n- \"rxq12@wq1.1;\"\n- \"rxq13@wq1.1;\"\n- \"rxq14@wq1.1;\"\n- \"rxq15@wq1.1\"\n+ \"txq12@%s;\"\n+ \"txq13@%s;\"\n+ \"txq14@%s;\"\n+ \"txq15@%s;\"\n+ \"rxq12@%s;\"\n+ \"rxq13@%s;\"\n+ \"rxq14@%s;\"\n+ \"rxq15@%s\"\n+ % (\n+ wqs[8],\n+ wqs[8],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=16,tso=1,dmas=[%s]' \"\n@@ -1481,12 +1567,12 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n )\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -1500,10 +1586,10 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n self.vhost_user_pmd.quit()\n vhost_eal_param = (\n@@ -1517,20 +1603,19 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n param=vhost_param,\n no_pci=True,\n )\n- self.config_vm_combined(combined=1)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=1)\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def test_packed_mergeable_16_queues_with_rx_tx_csum_in_sw(self):\n \"\"\"\n Test Case 16: VM2VM vhost-user/virtio-net packed ring mergeable 16 queues test with Rx/Tx csum in SW\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2,\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2,\n driver_name=\"vfio-pci\",\n dsa_index_list=[2, 3],\n socket=self.ports_socket,\n@@ -1552,39 +1637,55 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"txq13@%s-q0;\"\n \"txq14@%s-q0;\"\n \"txq15@%s-q0;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0;\"\n- \"rxq4@wq0.0;\"\n- \"rxq5@wq0.0;\"\n- \"rxq6@wq0.0;\"\n- \"rxq7@wq0.0;\"\n- \"rxq8@wq0.0;\"\n- \"rxq9@wq0.0;\"\n- \"rxq10@wq0.0;\"\n- \"rxq11@wq0.0;\"\n- \"rxq12@wq0.0;\"\n- \"rxq13@wq0.0;\"\n- \"rxq14@wq0.0;\"\n- \"rxq15@wq0.0\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s;\"\n+ \"rxq8@%s;\"\n+ \"rxq9@%s;\"\n+ \"rxq10@%s;\"\n+ \"rxq11@%s;\"\n+ \"rxq12@%s;\"\n+ \"rxq13@%s;\"\n+ \"rxq14@%s;\"\n+ \"rxq15@%s\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n )\n )\n dmas2 = (\n@@ -1604,39 +1705,55 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n \"txq13@%s-q5;\"\n \"txq14@%s-q6;\"\n \"txq15@%s-q7;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.1;\"\n- \"rxq2@wq0.2;\"\n- \"rxq3@wq0.3;\"\n- \"rxq4@wq0.4;\"\n- \"rxq5@wq0.5;\"\n- \"rxq6@wq0.6;\"\n- \"rxq7@wq0.7;\"\n- \"rxq8@wq1.0;\"\n- \"rxq9@wq1.1;\"\n- \"rxq10@wq1.2;\"\n- \"rxq11@wq1.3;\"\n- \"rxq12@wq1.4;\"\n- \"rxq13@wq1.5;\"\n- \"rxq14@wq1.6;\"\n- \"rxq15@wq1.7\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s;\"\n+ \"rxq8@%s;\"\n+ \"rxq9@%s;\"\n+ \"rxq10@%s;\"\n+ \"rxq11@%s;\"\n+ \"rxq12@%s;\"\n+ \"rxq13@%s;\"\n+ \"rxq14@%s;\"\n+ \"rxq15@%s\"\n % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ wqs[0],\n+ wqs[1],\n+ wqs[2],\n+ wqs[3],\n+ wqs[4],\n+ wqs[5],\n+ wqs[6],\n+ wqs[7],\n+ wqs[8],\n+ wqs[9],\n+ wqs[10],\n+ wqs[11],\n+ wqs[12],\n+ wqs[13],\n+ wqs[14],\n+ wqs[15],\n )\n )\n vhost_eal_param = (\n@@ -1649,7 +1766,7 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n )\n self.vhost_user_pmd.execute_cmd(\"stop\")\n self.vhost_user_pmd.execute_cmd(\"set fwd csum\")\n@@ -1663,18 +1780,18 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"start\")\n self.vm_args = \"disable-modern=false,mrg_rxbuf=on,mq=on,vectors=40,csum=on,guest_csum=off,host_tso4=on,guest_tso4=on,guest_ecn=on,guest_ufo=on,host_ufo=on,packed=on\"\n self.start_vms(server_mode=False, vm_queue=16)\n- self.config_vm_ip()\n- self.config_vm_combined(combined=16)\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.config_2_vms_combined(combined=16)\n+ self.BC.config_2_vms_ip()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n for _ in range(5):\n- self.check_ping_between_vms()\n- self.check_scp_file_valid_between_vms()\n- self.start_iperf()\n- self.get_perf_result()\n+ self.BC.check_ping_between_2_vms()\n+ self.BC.check_scp_file_between_2_vms()\n+ self.BC.run_iperf_test_between_2_vms()\n+ self.BC.check_iperf_result_between_2_vms()\n \n def stop_all_apps(self):\n for i in range(len(self.vm)):\n@@ -1685,8 +1802,7 @@ class TestVM2VMVirtioNetPerfDsa(TestCase):\n self.stop_all_apps()\n self.dut.kill_all()\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n+ self.dut.send_expect(\"killall -s INT qemu-system-x86_64\", \"#\")\n \n def tear_down_all(self):\n self.dut.close_session(self.vhost_user)\ndiff --git a/tests/TestSuite_vm2vm_virtio_pmd_dsa.py b/tests/TestSuite_vm2vm_virtio_pmd_dsa.py\nindex c4353661..6ae9f165 100644\n--- a/tests/TestSuite_vm2vm_virtio_pmd_dsa.py\n+++ b/tests/TestSuite_vm2vm_virtio_pmd_dsa.py\n@@ -42,9 +42,6 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n self.vm_num = 2\n self.vm_dut = []\n self.vm = []\n- self.use_dsa_list = []\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n @property\n def check_2M_env(self):\n@@ -99,7 +96,6 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n packed=False,\n server_mode=True,\n restart_vm1=False,\n- vm_config=\"vhost_sample\",\n ):\n \"\"\"\n start two VM, each VM has one virtio device\n@@ -111,7 +107,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n for i in range(self.vm_num):\n if restart_vm1:\n i = i + 1\n- vm_info = VM(self.dut, \"vm%d\" % i, vm_config)\n+ vm_info = VM(self.dut, \"vm%d\" % i, \"vhost_sample\")\n vm_params[\"driver\"] = \"vhost-user\"\n if not server_mode:\n vm_params[\"opt_path\"] = self.base_dir + \"/vhost-net%d\" % i\n@@ -210,6 +206,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n dut_pmd.execute_cmd(\"start\")\n \n def get_and_verify_func_name_of_perf_top(self, func_name_list):\n+ time.sleep(10)\n self.dut.send_expect(\"rm -fr perf_top.log\", \"# \", 120)\n self.dut.send_expect(\"perf top > perf_top.log\", \"\", 120)\n time.sleep(30)\n@@ -229,8 +226,8 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 1: VM2VM virtio-pmd split ring mergeable path dynamic queue size with dsa dpdk driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -241,18 +238,9 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n \"rxq1@%s-q1;\"\n \"rxq2@%s-q2;\"\n \"rxq3@%s-q3\"\n- % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- )\n+ % (dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0])\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,dmas=[%s]'\"\n@@ -263,7 +251,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.start_vms(vm_queue=8, mergeable=True, packed=False, server_mode=True)\n@@ -293,8 +281,8 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 2: VM2VM virtio-pmd split ring non-mergeable path dynamic queue size with dsa dpdk driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -305,18 +293,9 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n \"rxq1@%s-q2;\"\n \"rxq2@%s-q3;\"\n \"rxq3@%s-q3\"\n- % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- )\n+ % (dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0])\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,dmas=[%s]'\"\n@@ -327,7 +306,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.start_vms(vm_queue=8, mergeable=False, packed=False, server_mode=True)\n@@ -359,8 +338,8 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 3: VM2VM virtio-pmd packed ring mergeable path dynamic queue size with dsa dpdk driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -371,18 +350,9 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n \"rxq1@%s-q1;\"\n \"rxq2@%s-q2;\"\n \"rxq3@%s-q3\"\n- % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- )\n+ % (dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0])\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,dmas=[%s]'\"\n@@ -393,7 +363,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.start_vms(vm_queue=8, mergeable=True, packed=True, server_mode=True)\n@@ -442,8 +412,8 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 4: VM2VM virtio-pmd packed ring non-mergeable path dynamic queue size with dsa dpdk driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1, driver_name=\"vfio-pci\", socket=self.ports_socket\n )\n dmas = (\n \"txq0@%s-q0;\"\n@@ -454,18 +424,9 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n \"rxq1@%s-q1;\"\n \"rxq2@%s-q2;\"\n \"rxq3@%s-q3\"\n- % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- )\n+ % (dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0], dsas[0])\n )\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n \"--vdev 'eth_vhost1,iface=vhost-net1,client=1,queues=8,dmas=[%s]'\"\n@@ -476,7 +437,7 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n )\n self.start_vms(vm_queue=8, mergeable=False, packed=True, server_mode=True)\n@@ -508,28 +469,27 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 5: VM2VM virtio-pmd split ring mergeable path dynamic queue size with dsa kernel driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"rxq0@wq0.1;\"\n- \"rxq1@wq0.1;\"\n- \"rxq2@wq0.1;\"\n- \"rxq3@wq0.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[0], wqs[0], wqs[0], wqs[1], wqs[1], wqs[1], wqs[1])\n )\n \n dmas2 = (\n- \"txq0@wq0.1;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.1;\"\n- \"txq3@wq0.1;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.0;\"\n- \"rxq2@wq0.0;\"\n- \"rxq3@wq0.0\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s\" % (wqs[1], wqs[1], wqs[1], wqs[1], wqs[0], wqs[0], wqs[0], wqs[0])\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n@@ -572,21 +532,34 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 6: VM2VM virtio-pmd split ring non-mergeable path dynamic queue size with dsa kernel driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n@@ -629,17 +602,16 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 7: VM2VM virtio-pmd packed ring mergeable path dynamic queue size with dsa kernel driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.1;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.3;\"\n- \"rxq0@wq0.0;\"\n- \"rxq1@wq0.1;\"\n- \"rxq2@wq0.2;\"\n- \"rxq3@wq0.3\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"rxq0@%s;\"\n+ \"rxq1@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s\" % (wqs[0], wqs[1], wqs[2], wqs[3], wqs[0], wqs[1], wqs[2], wqs[3])\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n@@ -699,36 +671,63 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n Test Case 8: VM2VM virtio-pmd packed ring non-mergeable path dynamic queue size with dsa kernel driver and server mode\n \"\"\"\n self.check_path = [\"virtio_dev_rx_async\", \"virtio_dev_tx_async\"]\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=8, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=8, dsa_idxs=[0, 1])\n dmas1 = (\n- \"txq0@wq0.0;\"\n- \"txq1@wq0.0;\"\n- \"txq2@wq0.0;\"\n- \"txq3@wq0.0;\"\n- \"txq4@wq0.1;\"\n- \"txq5@wq0.1;\"\n- \"rxq2@wq1.0;\"\n- \"rxq3@wq1.0;\"\n- \"rxq4@wq1.1;\"\n- \"rxq5@wq1.1;\"\n- \"rxq6@wq1.1;\"\n- \"rxq7@wq1.1\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[0],\n+ wqs[1],\n+ wqs[1],\n+ wqs[8],\n+ wqs[8],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ wqs[9],\n+ )\n )\n \n dmas2 = (\n- \"txq0@wq0.2;\"\n- \"txq1@wq0.2;\"\n- \"txq2@wq0.2;\"\n- \"txq3@wq0.2;\"\n- \"txq4@wq0.3;\"\n- \"txq5@wq0.3;\"\n- \"rxq2@wq1.2;\"\n- \"rxq3@wq1.2;\"\n- \"rxq4@wq1.3;\"\n- \"rxq5@wq1.3;\"\n- \"rxq6@wq1.3;\"\n- \"rxq7@wq1.3\"\n+ \"txq0@%s;\"\n+ \"txq1@%s;\"\n+ \"txq2@%s;\"\n+ \"txq3@%s;\"\n+ \"txq4@%s;\"\n+ \"txq5@%s;\"\n+ \"rxq2@%s;\"\n+ \"rxq3@%s;\"\n+ \"rxq4@%s;\"\n+ \"rxq5@%s;\"\n+ \"rxq6@%s;\"\n+ \"rxq7@%s\"\n+ % (\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ wqs[2],\n+ wqs[3],\n+ wqs[3],\n+ wqs[10],\n+ wqs[10],\n+ wqs[11],\n+ wqs[11],\n+ wqs[11],\n+ wqs[11],\n+ )\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,client=1,queues=8,dmas=[%s]' \"\n@@ -773,8 +772,6 @@ class TestVM2VMVirtioPmdDsa(TestCase):\n self.stop_all_apps()\n self.dut.kill_all()\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n self.dut.close_session(self.vhost_user)\ndiff --git a/tests/TestSuite_vm2vm_virtio_user_dsa.py b/tests/TestSuite_vm2vm_virtio_user_dsa.py\nindex 7e359f3b..bd841e02 100644\n--- a/tests/TestSuite_vm2vm_virtio_user_dsa.py\n+++ b/tests/TestSuite_vm2vm_virtio_user_dsa.py\n@@ -46,10 +46,6 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.dut.send_expect(\"rm -rf %s\" % self.dump_vhost_pcap, \"#\")\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"killall -s INT %s\" % self.pdump_name, \"#\")\n- self.use_dsa_list = []\n-\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n @property\n def check_2M_env(self):\n@@ -279,16 +275,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 1: VM2VM vhost-user/virtio-user split ring non-mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -296,14 +292,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n virtio1_eal_param = \"--vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,mrg_rxbuf=0,in_order=0,queue_size=4096\"\n@@ -329,16 +325,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q1;txq1@%s-q1;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;txq1@%s-q1;rxq1@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -346,8 +342,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -355,7 +351,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -370,16 +366,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 2: VM2VM split ring inorder non-mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -387,14 +383,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=4\"}\n+ port_options = {dsas[0]: \"max_queues=4\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n virtio1_eal_param = \"--vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,mrg_rxbuf=0,in_order=1,queue_size=4096\"\n@@ -420,16 +416,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q1;txq1@%s-q1;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;txq1@%s-q1;rxq1@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -437,8 +433,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=2\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=2\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -446,7 +442,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -461,16 +457,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 3: VM2VM split ring inorder mergeable path and multi-queues test non-indirect descriptor and payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -479,14 +475,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n )\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n \n@@ -514,16 +510,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.virtio_user1_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q1;rxq1@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -531,8 +527,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -540,7 +536,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_virtio_testpmd_with_vhost_net1(\n@@ -565,16 +561,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 4: VM2VM split ring mergeable path and multi-queues test indirect descriptor and payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -582,14 +578,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n virtio1_eal_param = \"--vdev=net_virtio_user1,mac=00:01:02:03:04:05,path=./vhost-net1,queues=2,server=1,mrg_rxbuf=1,in_order=0,queue_size=256\"\n@@ -616,16 +612,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.virtio_user1_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q1;rxq1@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -633,8 +629,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -642,7 +638,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_virtio_testpmd_with_vhost_net1(\n@@ -667,18 +663,18 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 5: VM2VM split ring vectorized path and multi-queues payload check with vhost async operation and dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;rxq0@%s-q1;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -692,7 +688,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n \n@@ -722,16 +718,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q3;txq1@%s-q3;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[0],\n+ dsas[0],\n+ dsas[1],\n+ dsas[1],\n )\n dmas2 = \"txq0@%s-q1;txq1@%s-q1;rxq1@%s-q3;rxq1@%s-q3\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[1],\n+ dsas[1],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -739,8 +735,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -748,7 +744,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -763,16 +759,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 6: VM2VM packed ring non-mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -786,7 +782,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n \n@@ -816,16 +812,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q1;rxq1@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -833,8 +829,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=4\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=4\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -842,7 +838,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -857,16 +853,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 7: VM2VM packed ring inorder non-mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -876,8 +872,8 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=2\",\n- self.use_dsa_list[1]: \"max_queues=2\",\n+ dsas[0]: \"max_queues=2\",\n+ dsas[1]: \"max_queues=2\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n@@ -885,7 +881,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n \n@@ -915,16 +911,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q5;txq1@%s-q6;rxq0@%s-q5;rxq1@%s-q6\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q5;txq1@%s-q6;rxq1@%s-q5;rxq1@%s-q6\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -936,7 +932,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -951,16 +947,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 8: VM2VM packed ring mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -969,14 +965,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n )\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n port_options=port_options,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n \n@@ -1006,16 +1002,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q4;txq1@%s-q5;rxq1@%s-q6;rxq1@%s-q7\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1027,7 +1023,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -1042,18 +1038,18 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 9: VM2VM packed ring inorder mergeable path and multi-queues payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;rxq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1067,7 +1063,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n \n@@ -1097,16 +1093,16 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.clear_virtio_user1_stats()\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q1;rxq1@%s-q0;rxq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1118,7 +1114,7 @@ class TestVM2VMVirtioUserDsa(TestCase):\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n iova_mode=\"va\",\n )\n self.start_pdump_to_capture_pkt()\n@@ -1133,20 +1129,20 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 10: VM2VM packed ring vectorized-tx path and multi-queues test indirect descriptor and payload check with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;txq1@%s-q0;rxq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;txq1@%s-q1;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1155,13 +1151,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n )\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1193,14 +1189,14 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.virtio_user1_pmd.execute_cmd(\"quit\", \"#\", 60)\n self.vhost_user_pmd.execute_cmd(\"quit\", \"#\", 60)\n dmas1 = \"txq0@%s-q0;txq1@%s-q1;rxq0@%s-q2;rxq1@%s-q3\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q1\" % (\n- self.use_dsa_list[1],\n- self.use_dsa_list[1],\n+ dsas[1],\n+ dsas[1],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1208,15 +1204,15 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n port_options = {\n- self.use_dsa_list[0]: \"max_queues=4\",\n- self.use_dsa_list[1]: \"max_queues=2\",\n+ dsas[0]: \"max_queues=4\",\n+ dsas[1]: \"max_queues=2\",\n }\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1242,20 +1238,20 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 11: VM2VM packed ring vectorized path and payload check test with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;txq1@%s-q0;rxq0@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q1;txq1@%s-q1;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1264,13 +1260,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n )\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1304,20 +1300,20 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 12: VM2VM packed ring vectorized path payload check test with ring size is not power of 2 with dsa dpdk driver\n \"\"\"\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=2, driver_name=\"vfio-pci\", socket=self.port_socket\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=2, driver_name=\"vfio-pci\", socket=self.port_socket\n )\n dmas1 = \"txq0@%s-q0;txq1@%s-q0;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n dmas2 = \"txq0@%s-q0;txq1@%s-q0;rxq0@%s-q1;rxq1@%s-q1\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1326,13 +1322,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n )\n \n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=2\"}\n+ port_options = {dsas[0]: \"max_queues=2\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list[0:1],\n+ ports=dsas[0:1],\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1366,10 +1362,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 13: VM2VM split ring non-mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;rxq1@%s\" % (wqs[0], wqs[0])\n+ dmas2 = \"txq0@%s;rxq1@%s\" % (wqs[1], wqs[1])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq1@wq0.0]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.1;rxq1@wq0.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1409,10 +1408,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 14: VM2VM split ring inorder non-mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;rxq1@%s\" % (wqs[0], wqs[1])\n+ dmas2 = \"txq0@%s;rxq1@%s\" % (wqs[2], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.2;rxq1@wq0.3]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1452,10 +1454,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 15: VM2VM split ring inorder mergeable path and multi-queues test non-indirect descriptor and payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;rxq1@%s\" % (wqs[0], wqs[1])\n+ dmas2 = \"txq0@%s;rxq1@%s\" % (wqs[2], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.2;rxq1@wq0.3]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1495,10 +1500,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 16: VM2VM split ring mergeable path and multi-queues test indirect descriptor and payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq0@%s\" % (wqs[0], wqs[0], wqs[0], wqs[0])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq0@%s\" % (wqs[1], wqs[1], wqs[1], wqs[1])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.0;rxq0@wq0.0]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.1;txq1@wq0.1;rxq0@wq0.1;rxq0@wq0.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1538,10 +1546,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 17: VM2VM split ring vectorized path and multi-queues payload check with vhost async operation and dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=4, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=4, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[0], wqs[0])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[0], wqs[0])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.0;rxq1@wq0.0]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.0;rxq1@wq0.0]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1581,10 +1592,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 18: VM2VM packed ring non-mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;rxq1@%s\" % (wqs[0], wqs[0])\n+ dmas2 = \"txq0@%s;rxq1@%s\" % (wqs[1], wqs[1])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq1@wq0.0]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.1;rxq1@wq0.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1624,11 +1638,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 19: VM2VM packed ring inorder non-mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0, 1])\n+ dmas1 = \"txq0@%s;rxq1@%s\" % (wqs[0], wqs[1])\n+ dmas2 = \"txq0@%s;rxq1@%s\" % (wqs[2], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq1.0;rxq1@wq1.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1668,10 +1684,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 20: VM2VM packed ring mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[1], wqs[1])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[1], wqs[1], wqs[0], wqs[0])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.1;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq0.1;txq1@wq0.1;rxq0@wq0.0;rxq1@wq0.0]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1711,11 +1730,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 21: VM2VM packed ring inorder mergeable path and multi-queues payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=1, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=1, dsa_idxs=[0, 1])\n+ dmas1 = \"txq0@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[0])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq1@%s\" % (wqs[1], wqs[1], wqs[1])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;rxq0@wq0.0;rxq1@wq0.0]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq1.0;txq1@wq1.0;rxq1@wq1.0]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1755,11 +1776,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 22: VM2VM packed ring vectorized-tx path and multi-queues test indirect descriptor and payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0, 1])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[1], wqs[1])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[2], wqs[2], wqs[3], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.1;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq1.0;txq1@wq1.0;rxq0@wq1.1;rxq1@wq1.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1799,11 +1822,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 23: VM2VM packed ring vectorized path and multi-queues test indirect descriptor and payload check with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0, 1])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[1], wqs[1])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[2], wqs[2], wqs[3], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.1;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq1.0;txq1@wq1.0;rxq0@wq1.1;rxq1@wq1.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1843,11 +1868,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 24: VM2VM packed ring vectorized path payload check test with ring size is not power of 2 with dsa kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=1)\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0, 1])\n+ dmas1 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[1], wqs[1])\n+ dmas2 = \"txq0@%s;txq1@%s;rxq0@%s;rxq1@%s\" % (wqs[2], wqs[2], wqs[3], wqs[3])\n vhost_eal_param = (\n- \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[txq0@wq0.0;txq1@wq0.0;rxq0@wq0.1;rxq1@wq0.1]' \"\n- \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[txq0@wq1.0;txq1@wq1.0;rxq0@wq1.1;rxq1@wq1.1]'\"\n+ \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n+ \"--vdev 'eth_vhost1,iface=vhost-net1,queues=2,client=1,dmas=[%s]'\"\n+ % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n self.start_vhost_testpmd(\n@@ -1887,18 +1914,18 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 25: VM2VM split ring mergeable path and multi-queues test indirect descriptor with dsa dpdk and kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1,\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1,\n driver_name=\"vfio-pci\",\n- dsa_index_list=[1],\n+ dsa_idxs=[1],\n socket=self.port_socket,\n )\n- dmas1 = \"txq0@wq0.0;rxq0@wq0.0;rxq1@wq0.0\"\n+ dmas1 = \"txq0@%s;rxq0@%s;rxq1@%s\" % (wqs[0], wqs[0], wqs[0])\n dmas2 = \"txq0@%s-q0;txq1@%s-q0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dsas[0],\n+ dsas[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1906,13 +1933,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=256 --rxd=256 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -1946,20 +1973,24 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 26: VM2VM packed ring inorder mergeable path and multi-queues payload check with dsa dpdk and kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1,\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1,\n driver_name=\"vfio-pci\",\n- dsa_index_list=[1],\n+ dsa_idxs=[1],\n socket=self.port_socket,\n )\n- dmas1 = \"txq0@%s-q0;txq1@wq0.0;rxq0@%s-q0;rxq1@wq0.0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dmas1 = \"txq0@%s-q0;txq1@%s;rxq0@%s-q0;rxq1@%s\" % (\n+ dsas[0],\n+ wqs[0],\n+ dsas[0],\n+ wqs[0],\n )\n- dmas2 = \"txq0@wq0.0;txq1@%s-q0;rxq0@wq0.0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dmas2 = \"txq0@%s;txq1@%s-q0;rxq0@%s;rxq1@%s-q0\" % (\n+ wqs[0],\n+ dsas[0],\n+ wqs[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -1967,13 +1998,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -2007,20 +2038,24 @@ class TestVM2VMVirtioUserDsa(TestCase):\n \"\"\"\n Test Case 27: VM2VM packed ring vectorized-tx path test batch processing with dsa dpdk and kernel driver\n \"\"\"\n- self.DC.create_work_queue(work_queue_number=2, dsa_index=0)\n- self.use_dsa_list = self.DC.bind_dsa_to_dpdk(\n- dsa_number=1,\n+ wqs = self.DC.create_wq(wq_num=2, dsa_idxs=[0])\n+ dsas = self.DC.bind_dsa_to_dpdk_driver(\n+ dsa_num=1,\n driver_name=\"vfio-pci\",\n- dsa_index_list=[1],\n+ dsa_idxs=[1],\n socket=self.port_socket,\n )\n- dmas1 = \"txq0@%s-q0;txq1@wq0.0;rxq0@%s-q0;rxq1@wq0.0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dmas1 = \"txq0@%s-q0;txq1@%s;rxq0@%s-q0;rxq1@%s\" % (\n+ dsas[0],\n+ wqs[0],\n+ dsas[0],\n+ wqs[0],\n )\n- dmas2 = \"txq0@wq0.0;txq1@%s-q0;rxq0@wq0.0;rxq1@%s-q0\" % (\n- self.use_dsa_list[0],\n- self.use_dsa_list[0],\n+ dmas2 = \"txq0@%s;txq1@%s-q0;rxq0@%s;rxq1@%s-q0\" % (\n+ wqs[0],\n+ dsas[0],\n+ wqs[0],\n+ dsas[0],\n )\n vhost_eal_param = (\n \"--vdev 'eth_vhost0,iface=vhost-net0,queues=2,client=1,dmas=[%s]' \"\n@@ -2028,13 +2063,13 @@ class TestVM2VMVirtioUserDsa(TestCase):\n % (dmas1, dmas2)\n )\n vhost_param = \"--nb-cores=1 --rxq=2 --txq=2 --txd=4096 --rxd=4096 --no-flush-rx\"\n- port_options = {self.use_dsa_list[0]: \"max_queues=1\"}\n+ port_options = {dsas[0]: \"max_queues=1\"}\n self.start_vhost_testpmd(\n cores=self.vhost_core_list,\n eal_param=vhost_eal_param,\n param=vhost_param,\n no_pci=False,\n- ports=self.use_dsa_list,\n+ ports=dsas,\n port_options=port_options,\n iova_mode=\"va\",\n )\n@@ -2072,8 +2107,6 @@ class TestVM2VMVirtioUserDsa(TestCase):\n self.quit_all_testpmd()\n self.dut.send_expect(\"killall -s INT %s\" % self.testpmd_name, \"#\")\n self.dut.send_expect(\"killall -s INT %s\" % self.pdump_name, \"#\")\n- self.DC.reset_all_work_queue()\n- self.DC.bind_all_dsa_to_kernel()\n \n def tear_down_all(self):\n pass\ndiff --git a/tests/virtio_common.py b/tests/virtio_common.py\nindex 9ad75448..9754f49e 100644\n--- a/tests/virtio_common.py\n+++ b/tests/virtio_common.py\n@@ -237,90 +237,123 @@ class dsa_common(object):\n def __init__(self, test_case):\n self.test_case = test_case\n \n- def get_all_work_queue_index(self):\n+ def get_all_dsa_pcis(self):\n+ \"\"\"\n+ Get all the DSA device PCI of DUT.\n+ :return: [0000:6a:01.0, 0000:6f:01.0, 0000:74:01.0, 0000:79:01.0]\n+ \"\"\"\n+ dsa_pcis = []\n+ out = self.test_case.dut.send_expect(\n+ \"./usertools/dpdk-devbind.py --status-dev dma\", \"#\"\n+ )\n+ info = out.split(\"\\n\")\n+ for item in info:\n+ pci = re.search(\"\\s*(0000:\\S*:\\d*.\\d*)\", item)\n+ if pci is not None:\n+ dsa_pcis.append(pci.group(1))\n+ dsa_pcis.sort()\n+ return dsa_pcis\n+\n+ def bind_dsa_to_kernel_driver(self, dsa_idx):\n+ \"\"\"\n+ Get the DSA device current driver\n+ \"\"\"\n+ dsa_pcis = self.get_all_dsa_pcis()\n+ pci = dsa_pcis[dsa_idx]\n+ addr_array = pci.split(\":\")\n+ domain_id, bus_id, devfun_id = addr_array[0], addr_array[1], addr_array[2]\n+ out = self.test_case.dut.send_expect(\n+ \"cat /sys/bus/pci/devices/%s\\:%s\\:%s/uevent\"\n+ % (domain_id, bus_id, devfun_id),\n+ \"# \",\n+ alt_session=True,\n+ )\n+ rexp = r\"DRIVER=(.+?)\\r\"\n+ pattern = re.compile(rexp)\n+ match = pattern.search(out)\n+ if not match:\n+ driver = None\n+ else:\n+ driver = match.group(1)\n+ if driver != \"idxd\":\n+ self.test_case.dut.send_expect(\n+ \"./usertools/dpdk-devbind.py --force --bind=idxd %s\" % pci, \"# \", 60\n+ )\n+\n+ def get_all_dsa_idxs(self):\n \"\"\"\n Get all DSA device work queue index.\n Example: `wq0.0 wq0.1 wq1.0 wq1.1`, return [0, 1]\n \"\"\"\n- dsa_index_list = []\n+ dsa_idxs = []\n if os.path.exists(\"/dev/dsa\"):\n out = self.test_case.dut.send_expect(\"ls /dev/dsa\", \"# \")\n info = out.split()\n for item in info:\n- index = int(re.search(\"(\\d+)\", item).group(0))\n- dsa_index_list.append(index)\n- return list(set(dsa_index_list))\n-\n- def reset_all_work_queue(self):\n- \"\"\"\n- Reset all DSA device work queue which have created work queue.\n- After reset all DSA device work queues, the `/dev/dsa/` path will not exist.\n- \"\"\"\n- dsa_index_list = self.get_all_work_queue_index()\n- if len(dsa_index_list) > 0:\n- for dsa_index in dsa_index_list:\n- self.test_case.dut.send_expect(\n- \"./drivers/dma/idxd/dpdk_idxd_cfg.py --reset %s\" % dsa_index, \"# \"\n- )\n+ idx = int(re.search(\"(\\d+)\", item).group(0))\n+ dsa_idxs.append(idx)\n+ return list(set(dsa_idxs))\n \n- def check_dsa_has_work_queue(self, dsa_index):\n+ def check_wq_exist(self, dsa_idx):\n \"\"\"\n Check DSA device has work queue or not, if has work queue, return True, or return False\n \"\"\"\n- if dsa_index in self.get_all_work_queue_index():\n+ if dsa_idx in self.get_all_dsa_idxs():\n return True\n else:\n return False\n \n- def create_work_queue(self, work_queue_number, dsa_index):\n+ def reset_wq(self, dsa_idx):\n \"\"\"\n- Create work queue by work_queue_number and dsa_index.\n- :param work_queue_number: number of work queue to be create.\n- :param dsa_index: index of DSA device which to create work queue.\n- Example: work_queue_number=4, dsa_index=0, will create 4 work queue under this first DSA device\n- root@dpdk:~# ls /dev/dsa/\n- wq0.0 wq0.1 wq0.2 wq0.3\n+ Reset DSA device work queue which have created work queue.\n \"\"\"\n- if self.check_dsa_has_work_queue(dsa_index=dsa_index):\n+ if self.check_wq_exist(dsa_idx):\n self.test_case.dut.send_expect(\n- \"./drivers/dma/idxd/dpdk_idxd_cfg.py --reset %s\" % dsa_index, \"# \"\n+ \"./drivers/dma/idxd/dpdk_idxd_cfg.py --reset %s\" % dsa_idx, \"# \"\n )\n- self.test_case.dut.send_expect(\n- \"./drivers/dma/idxd/dpdk_idxd_cfg.py -q %d %d\"\n- % (work_queue_number, dsa_index),\n- \"# \",\n- )\n \n- def get_all_dsa_pci(self):\n+ def create_wq(self, wq_num, dsa_idxs):\n \"\"\"\n- Get all the DSA device PCI of DUT.\n- :return: [0000:6a:01.0, 0000:6f:01.0, 0000:74:01.0, 0000:79:01.0]\n+ Create work queue by work_queue_number and dsa_idx.\n+ :param wq_num: number of work queue to be create.\n+ :param dsa_idxs: index of DSA device which to create work queue.\n+ Example: wq_num=4, dsa_idx=[0, 1], will create 4 work queue:\n+ root@dpdk:~# ls /dev/dsa/\n+ wq0.0 wq0.1 wq1.0 wq1.1\n \"\"\"\n- dsa_pci = []\n- out = self.test_case.dut.send_expect(\n- \"./usertools/dpdk-devbind.py --status-dev dma\", \"#\"\n- )\n- info = out.split(\"\\n\")\n- for item in info:\n- pci = re.search(\"\\s*(0000:\\S*:\\d*.\\d*)\", item)\n- if pci is not None:\n- dsa_pci.append(pci.group(1))\n- return dsa_pci\n+ for dsa_idx in dsa_idxs:\n+ if self.check_wq_exist(dsa_idx):\n+ self.reset_wq(dsa_idx)\n+ self.bind_dsa_to_kernel_driver(dsa_idx)\n+ self.test_case.dut.send_expect(\n+ \"./drivers/dma/idxd/dpdk_idxd_cfg.py -q %d %d\" % (wq_num, dsa_idx),\n+ \"# \",\n+ )\n+ wqs = []\n+ if os.path.exists(\"/dev/dsa\"):\n+ out = self.test_case.dut.send_expect(\"ls /dev/dsa\", \"# \")\n+ info = out.split()\n+ for item in info:\n+ idx = int(re.search(\"(\\d+)\", item).group(0))\n+ if idx in dsa_idxs:\n+ wqs.append(item)\n+ return wqs\n \n- def bind_dsa_to_dpdk(\n- self, dsa_number, driver_name=\"vfio-pci\", dsa_index_list=\"all\", socket=-1\n+ def bind_dsa_to_dpdk_driver(\n+ self, dsa_num, driver_name=\"vfio-pci\", dsa_idxs=\"all\", socket=-1\n ):\n \"\"\"\n Bind DSA device to driver\n- :param dsa_number: number of DSA device to be bind.\n+ :param dsa_num: number of DSA device to be bind.\n :param driver_name: driver name, like `vfio-pci`.\n- :param dsa_index_list: the index list of DSA device, like [2,3]\n+ :param dsa_idxs: the index list of DSA device, like [2,3]\n :param socket: socket id: like 0 or 1, if socket=-1, use all the DSA deveice no matter on which socket.\n :return: bind_dsa_list, like [0000:6a:01.0, 0000:6f:01.0]\n \"\"\"\n- dsa_list = []\n- dsa_pci = self.get_all_dsa_pci()\n- for pci in dsa_pci:\n+ dsas = []\n+ bind_dsas = []\n+ dsa_pcis = self.get_all_dsa_pcis()\n+ for pci in dsa_pcis:\n addr_array = pci.split(\":\")\n domain_id, bus_id, devfun_id = addr_array[0], addr_array[1], addr_array[2]\n cur_socket = self.test_case.dut.send_expect(\n@@ -331,47 +364,21 @@ class dsa_common(object):\n )\n if socket != -1:\n if int(cur_socket) == socket:\n- dsa_list.append(pci)\n+ dsas.append(pci)\n else:\n- dsa_list.append(pci)\n- if dsa_index_list == \"all\":\n- bind_dsa_list = dsa_list[0:dsa_number]\n+ dsas.append(pci)\n+ if dsa_idxs == \"all\":\n+ bind_dsas = dsas[0:dsa_num]\n else:\n- tmp_dsa_list = []\n- for i in dsa_index_list:\n- tmp_dsa_list.append(dsa_list[i])\n- bind_dsa_list = tmp_dsa_list[0:dsa_number]\n- bind_dsa_string = \" \".join(bind_dsa_list)\n+ tmp_dsas = []\n+ for i in dsa_idxs:\n+ tmp_dsas.append(dsas[i])\n+ bind_dsas = tmp_dsas[0:dsa_num]\n+ bind_dsas_str = \" \".join(bind_dsas)\n self.test_case.dut.send_expect(\n \"./usertools/dpdk-devbind.py --force --bind=%s %s\"\n- % (driver_name, bind_dsa_string),\n+ % (driver_name, bind_dsas_str),\n \"# \",\n 60,\n )\n- return bind_dsa_list\n-\n- def bind_all_dsa_to_kernel(self):\n- \"\"\"\n- Check the DSA device is bind to kernel driver or not, if not bind to kernel driver, then bind to kernel driver.\n- \"\"\"\n- dsa_pci = self.get_all_dsa_pci()\n- for pci in dsa_pci:\n- addr_array = pci.split(\":\")\n- domain_id, bus_id, devfun_id = addr_array[0], addr_array[1], addr_array[2]\n- out = self.test_case.dut.send_expect(\n- \"cat /sys/bus/pci/devices/%s\\:%s\\:%s/uevent\"\n- % (domain_id, bus_id, devfun_id),\n- \"# \",\n- alt_session=True,\n- )\n- rexp = r\"DRIVER=(.+?)\\r\"\n- pattern = re.compile(rexp)\n- match = pattern.search(out)\n- if not match:\n- driver = None\n- else:\n- driver = match.group(1)\n- if driver != \"idxd\":\n- self.test_case.dut.send_expect(\n- \"./usertools/dpdk-devbind.py --force --bind=idxd %s\" % pci, \"# \", 60\n- )\n+ return bind_dsas\n", "prefixes": [ "V1" ] }{ "id": 125524, "url": "