test suite reviews and discussions
 help / color / mirror / Atom feed
From: Lijuan Tu <lijuan.tu@intel.com>
To: dts@dpdk.org
Cc: Lijuan Tu <lijuan.tu@intel.com>
Subject: [dts]  [PATCH V2] tests/vf_l3fwd: add a case for fvl iavf
Date: Wed, 19 Feb 2020 03:59:01 +0800	[thread overview]
Message-ID: <1582055941-27657-1-git-send-email-lijuan.tu@intel.com> (raw)

* add a new test case: kernel_pf_dpdk_iavf_perf
* fix mapping of pf/vf driver

Signed-off-by: Lijuan Tu <lijuan.tu@intel.com>
---
 tests/TestSuite_vf_l3fwd.py | 50 +++++++++++++++++++++++++++++++++------------
 1 file changed, 37 insertions(+), 13 deletions(-)

diff --git a/tests/TestSuite_vf_l3fwd.py b/tests/TestSuite_vf_l3fwd.py
index 760b920..2aa3041 100644
--- a/tests/TestSuite_vf_l3fwd.py
+++ b/tests/TestSuite_vf_l3fwd.py
@@ -107,27 +107,26 @@ class TestVfL3fwd(TestCase):
         """
         self.setup_vf_env_flag = 0
 
-    def setup_vf_env(self, host_driver='default'):
+    def setup_vf_env(self, host_driver='default', vf_driver='vfio-pci'):
         """
         require enough PF ports,using kernel or dpdk driver, create 1 VF from each PF.
         """
+        if host_driver != "default" and host_driver != "igb_uio":
+            self.logger.error("only support kernel driver and igb_uio!")
         self.used_dut_port = [port for port in self.dut_ports]
         self.sriov_vfs_port = []
         for i in valports:
-            if host_driver != '':
-                self.dut.generate_sriov_vfs_by_port(self.used_dut_port[i], 1)
-            else:
-                self.dut.generate_sriov_vfs_by_port(self.used_dut_port[i], 1, host_driver)
+            self.dut.generate_sriov_vfs_by_port(self.used_dut_port[i], 1, host_driver)
             sriov_vfs_port = self.dut.ports_info[self.used_dut_port[i]]['vfs_port']
             self.sriov_vfs_port.append(sriov_vfs_port)
         # bind vf to vf driver
         try:
             for i in valports:
                 for port in self.sriov_vfs_port[i]:
-                    port.bind_driver(self.vf_driver)
+                    port.bind_driver(vf_driver)
             time.sleep(1)
             # set vf mac address.
-            if host_driver == '':
+            if host_driver == 'default':
                 for i in valports:
                     pf_intf = self.dut.ports_info[i]['port'].get_interface_name()
                     self.dut.send_expect("ip link set %s vf 0 mac %s" % (pf_intf, self.vfs_mac[i]), "#")
@@ -260,11 +259,11 @@ class TestVfL3fwd(TestCase):
         self.dut.close_session(l3fwd_session)
         self.result_table_print()
 
-    def measure_vf_performance(self, host_driver='default'):
+    def measure_vf_performance(self, host_driver='default', vf_driver='vfio-pci'):
         """
         start l3fwd and run the perf test
         """
-        self.setup_vf_env(host_driver)
+        self.setup_vf_env(host_driver, vf_driver)
         eal_param = ""
         for i in valports:
             eal_param += " -w " + self.sriov_vfs_port[i][0].pci
@@ -281,17 +280,42 @@ class TestVfL3fwd(TestCase):
             for j in range(self.queue):
                 queue_config += "({0}, {1}, {2})," .format(i, j, core_list[m])
                 m += 1
-        cmdline = "./examples/l3fwd/build/l3fwd -c {0} -n 4 {1} -- -p {2} --config '{3}' ". \
+        cmdline = "./examples/l3fwd/build/l3fwd -c {0} -n 4 {1} -- -p {2} --config '{3}' --parse-ptype". \
             format(core_mask, eal_param, port_mask, queue_config)
         self.perf_test(cmdline)
 
-    def test_perf_kernel_pf_dpdk_vf_perf_host_only(self):
+    def get_kernel_pf_vf_driver(self):
+        if self.vf_driver == "igb_uio" or self.vf_driver == "vfio-pci":
+            vf_driver = self.vf_driver
+        elif self.drivername == "igb_uio" or self.drivername == "vfio-pci":
+            vf_driver = self.drivername
+        else:
+            vf_driver = "vfio-pci"
+        return vf_driver
 
-        self.measure_vf_performance(host_driver='')
+    def test_perf_kernel_pf_dpdk_vf_perf_host_only(self):
+        self.measure_vf_performance(host_driver='default', vf_driver=self.get_kernel_pf_vf_driver())
 
     def test_perf_dpdk_pf_dpdk_vf_perf_host_only(self):
+        if self.drivername != "igb_uio":
+            self.logger.warning("Use igb_uio as host driver for testing instead of %s" % self.drivername)
+
+        self.measure_vf_performance(host_driver='igb_uio', vf_driver='igb_uio')
+
+    def test_perf_kernel_pf_dpdk_iavf_perf_host_only(self):
+        self.verify_supported_nic()
+        self.build_iavf()
+        self.dut.build_dpdk_apps("./examples/l3fwd")
+        self.measure_vf_performance(host_driver='default', vf_driver=self.get_kernel_pf_vf_driver())
+
+    def verify_supported_nic(self):
+        for idx in self.dut_ports:
+            self.verify(self.dut.ports_info[idx]['port'].default_driver == 'i40e', 'The case is only designed for Fortville')
 
-        self.measure_vf_performance(host_driver=self.vf_driver)
+    def build_iavf(self):
+        self.dut.send_expect("sed -i '/{ RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_ADAPTIVE_VF) },/a { RTE_PCI_DEVICE(IAVF_INTEL_VENDOR_ID, IAVF_DEV_ID_VF) },' drivers/net/iavf/iavf_ethdev.c", "# ")
+        self.dut.send_expect("sed -i -e '/I40E_DEV_ID_VF/s/0x154C/0x164C/g'  drivers/net/i40e/base/i40e_devids.h", "# ")
+        self.dut.build_install_dpdk(self.target)
 
     def set_fields(self):
         """
-- 
1.8.3.1


                 reply	other threads:[~2020-02-18 11:50 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1582055941-27657-1-git-send-email-lijuan.tu@intel.com \
    --to=lijuan.tu@intel.com \
    --cc=dts@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).