[dts] [PATCH V1] add some vfio-pci assign cases to all the vf test suites.

Yuwei Zhang yuwei1.zhang at intel.com
Mon Oct 9 09:43:24 CEST 2017


Add test cases that use vfio-pci assign method to pass-through VFs to vm in all the VF related test suites, 
dts will read a global conf variable to determine the assign method(pci-assign or vfio-pci).

Signed-off-by: Yuwei Zhang <yuwei1.zhang at intel.com>
---
 tests/TestSuite_vf_jumboframe.py       | 17 +++++++++++++++--
 tests/TestSuite_vf_macfilter.py        | 21 +++++++++++++++++----
 tests/TestSuite_vf_offload.py          | 25 +++++++++++++++++++++----
 tests/TestSuite_vf_port_start_stop.py  | 19 ++++++++++++++++---
 tests/TestSuite_vf_rss.py              | 17 +++++++++++++++--
 tests/TestSuite_vf_to_vf_nic_bridge.py | 19 ++++++++++++++++---
 tests/TestSuite_vf_vlan.py             | 21 +++++++++++++++++----
 7 files changed, 117 insertions(+), 22 deletions(-)

diff --git a/tests/TestSuite_vf_jumboframe.py b/tests/TestSuite_vf_jumboframe.py
index d7241ff..7a62a50 100644
--- a/tests/TestSuite_vf_jumboframe.py
+++ b/tests/TestSuite_vf_jumboframe.py
@@ -19,6 +19,8 @@ ETHER_JUMBO_FRAME_MTU = 9000
 
 class TestVfJumboFrame(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
 
         self.dut_ports = self.dut.get_ports(self.nic)
@@ -30,6 +32,17 @@ class TestVfJumboFrame(TestCase):
         self.vm_port = 0
         cores = self.dut.get_core_list("1S/1C/1T")
         self.port_mask = utils.create_mask([self.port])
+
+        # set vf assign method and vf driver
+        self.dut.send_expect('modprobe vfio-pci', '#')
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
         
         # enable tester mtu
         tester_port = self.tester.get_local_port(self.port)
@@ -91,14 +104,14 @@ class TestVfJumboFrame(TestCase):
         try:
 
             for port in self.sriov_vfs_port:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
             vf_popt = {'opt_host': self.sriov_vfs_port[0].pci}
 
             # set up VM ENV
             self.vm = QEMUKvm(self.dut, 'vm0', 'vf_jumboframe')
-            self.vm.set_vm_device(driver='pci-assign', **vf_popt)
+            self.vm.set_vm_device(driver=self.vf_assign_method, **vf_popt)
             self.vm_dut = self.vm.start()
             if self.vm_dut is None:
                 raise Exception("Set up VM ENV failed!")
diff --git a/tests/TestSuite_vf_macfilter.py b/tests/TestSuite_vf_macfilter.py
index 09611bf..ec290a7 100644
--- a/tests/TestSuite_vf_macfilter.py
+++ b/tests/TestSuite_vf_macfilter.py
@@ -12,6 +12,8 @@ VM_CORES_MASK = 'all'
 
 class TestVfMacFilter(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
         self.dut_ports = self.dut.get_ports(self.nic)
         self.verify(len(self.dut_ports) > 1, "Insufficient ports")
@@ -19,6 +21,17 @@ class TestVfMacFilter(TestCase):
         self.pf0_vf0_mac = "00:12:34:56:78:01"
         self.iplinkset = True
 
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+            self.tester.send_expect('modprobe vfio-pci', '#')
+
     def set_up(self):
 
         self.setup_2pf_2vf_1vm_env_flag = 0
@@ -41,10 +54,10 @@ class TestVfMacFilter(TestCase):
         try:
 
             for port in self.sriov_vfs_port_0:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             for port in self.sriov_vfs_port_1:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
             vf0_prop = {'opt_host': self.sriov_vfs_port_0[0].pci}
@@ -59,8 +72,8 @@ class TestVfMacFilter(TestCase):
 
             # set up VM0 ENV
             self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_macfilter')
-            self.vm0.set_vm_device(driver='pci-assign', **vf0_prop)
-            self.vm0.set_vm_device(driver='pci-assign', **vf1_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf1_prop)
             self.vm_dut_0 = self.vm0.start()
             if self.vm_dut_0 is None:
                 raise Exception("Set up VM0 ENV failed!")
diff --git a/tests/TestSuite_vf_offload.py b/tests/TestSuite_vf_offload.py
index ed6d106..f447c69 100644
--- a/tests/TestSuite_vf_offload.py
+++ b/tests/TestSuite_vf_offload.py
@@ -16,16 +16,33 @@ VM_CORES_MASK = 'all'
 
 class TestVfOffload(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
         self.dut_ports = self.dut.get_ports(self.nic)
         self.verify(len(self.dut_ports) > 1, "Insufficient ports")
         self.vm0 = None
+
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+            self.tester.send_expect('modprobe vfio-pci', '#')
+
         self.setup_2pf_2vf_1vm_env_flag = 0
+        import pdb
+        pdb.set_trace()
         self.setup_2pf_2vf_1vm_env(driver='')
         self.vm0_dut_ports = self.vm_dut_0.get_ports('any')
         self.portMask = utils.create_mask([self.vm0_dut_ports[0]])
         self.vm0_testpmd = PmdOutput(self.vm_dut_0)
 
+        
     def set_up(self):
         pass
 
@@ -41,10 +58,10 @@ class TestVfOffload(TestCase):
         try:
 
             for port in self.sriov_vfs_port_0:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             for port in self.sriov_vfs_port_1:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
             vf0_prop = {'opt_host': self.sriov_vfs_port_0[0].pci}
@@ -59,8 +76,8 @@ class TestVfOffload(TestCase):
 
             # set up VM0 ENV
             self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_offload')
-            self.vm0.set_vm_device(driver='pci-assign', **vf0_prop)
-            self.vm0.set_vm_device(driver='pci-assign', **vf1_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf1_prop)
             self.vm_dut_0 = self.vm0.start()
             if self.vm_dut_0 is None:
                 raise Exception("Set up VM0 ENV failed!")
diff --git a/tests/TestSuite_vf_port_start_stop.py b/tests/TestSuite_vf_port_start_stop.py
index 9e2e47c..5629f8c 100644
--- a/tests/TestSuite_vf_port_start_stop.py
+++ b/tests/TestSuite_vf_port_start_stop.py
@@ -14,6 +14,8 @@ VM_CORES_MASK = 'all'
 
 class TestVfPortStartStop(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
 
         self.dut_ports = self.dut.get_ports(self.nic)
@@ -21,6 +23,17 @@ class TestVfPortStartStop(TestCase):
         self.vm0 = None
         self.filename = "/tmp/vf.pcap"
 
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+            self.tester.send_expect('modprobe vfio-pci', '#')
+
     def set_up(self):
 
         self.setup_1pf_2vf_1vm_env_flag = 0
@@ -152,7 +165,7 @@ class TestVfPortStartStop(TestCase):
         try:
 
             for port in self.sriov_vfs_port:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
 
@@ -168,8 +181,8 @@ class TestVfPortStartStop(TestCase):
 
             # set up VM0 ENV
             self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_port_start_stop')
-            self.vm0.set_vm_device(driver='pci-assign', **vf0_prop)
-            self.vm0.set_vm_device(driver='pci-assign', **vf1_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf1_prop)
             self.vm_dut_0 = self.vm0.start()
             if self.vm_dut_0 is None:
                 raise Exception("Set up VM0 ENV failed!")
diff --git a/tests/TestSuite_vf_rss.py b/tests/TestSuite_vf_rss.py
index 6e2ff97..33591b5 100644
--- a/tests/TestSuite_vf_rss.py
+++ b/tests/TestSuite_vf_rss.py
@@ -47,6 +47,9 @@ from pmd_output import PmdOutput
 from qemu_kvm import QEMUKvm
 
 class TestVfRss(TestCase):
+
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def send_packet(self, itf, tran_type):
         """
         Sends packets.
@@ -218,6 +221,16 @@ class TestVfRss(TestCase):
         self.dut_ports = self.dut.get_ports(self.nic)
         self.verify(len(self.dut_ports) >= 1, "Not enough ports available")
 
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+
         self.vm0 = None
         self.host_testpmd = None
         self.setup_1pf_1vf_1vm_env_flag = 0
@@ -237,7 +250,7 @@ class TestVfRss(TestCase):
         try:
 
             for port in self.sriov_vfs_port_0:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
             vf0_prot = {'opt_host': self.sriov_vfs_port_0[0].pci}
@@ -250,7 +263,7 @@ class TestVfRss(TestCase):
 
             # set up VM0 ENV
             self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_rss')
-            self.vm0.set_vm_device(driver='pci-assign', **vf0_prot)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prot)
 
             self.vm_dut_0 = self.vm0.start()
             if self.vm_dut_0 is None:
diff --git a/tests/TestSuite_vf_to_vf_nic_bridge.py b/tests/TestSuite_vf_to_vf_nic_bridge.py
index efdb9fb..c5b1cb6 100644
--- a/tests/TestSuite_vf_to_vf_nic_bridge.py
+++ b/tests/TestSuite_vf_to_vf_nic_bridge.py
@@ -49,12 +49,25 @@ SEND_PACKET = 100
 
 class TestVF2VFBridge(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
         self.dut_ports = self.dut.get_ports(self.nic)
         self.verify(len(self.dut_ports) >= 1, "Insufficient ports")
         self.vm0 = None
         self.vm1 = None
 
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+
+
     def set_up(self):
         self.set_up_vf_to_vf_env()
 
@@ -71,7 +84,7 @@ class TestVF2VFBridge(TestCase):
                                  (self.host_port_intf, i, VF_TEMP_MAC % i), '#', 10)
         try:
             for port in self.sriov_vfs_ports:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
             time.sleep(1)
         except Exception as e:
             raise Exception(e)
@@ -80,7 +93,7 @@ class TestVF2VFBridge(TestCase):
         vf1_prop = {'opt_host': self.sriov_vfs_ports[1].pci}
         time.sleep(1)
         self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_to_vf_bridge')
-        self.vm0.set_vm_device(driver='pci-assign', **vf0_prop)
+        self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prop)
         try:
             self.vm0_dut = self.vm0.start()
             if self.vm0_dut is None:
@@ -89,7 +102,7 @@ class TestVF2VFBridge(TestCase):
             print utils.RED(str(e))
 
         self.vm1 = QEMUKvm(self.dut, 'vm1', 'vf_to_vf_bridge')
-        self.vm1.set_vm_device(driver='pci-assign', **vf1_prop)
+        self.vm1.set_vm_device(driver=self.vf_assign_method, **vf1_prop)
         try:
             self.vm1_dut = self.vm1.start()
             if self.vm1_dut is None:
diff --git a/tests/TestSuite_vf_vlan.py b/tests/TestSuite_vf_vlan.py
index 90b1d13..ab64a15 100644
--- a/tests/TestSuite_vf_vlan.py
+++ b/tests/TestSuite_vf_vlan.py
@@ -16,6 +16,8 @@ MAX_VLAN = 4095
 
 class TestVfVlan(TestCase):
 
+    supported_vf_driver = ['pci-stub', 'vfio-pci']
+
     def set_up_all(self):
 
         self.dut_ports = self.dut.get_ports(self.nic)
@@ -23,6 +25,17 @@ class TestVfVlan(TestCase):
         self.vm0 = None
         self.env_done = False
 
+        # set vf assign method and vf driver
+        self.vf_driver = self.get_suite_cfg()['vf_driver']
+        if self.vf_driver is None:
+            self.vf_driver = 'pci-stub'
+        self.verify(self.vf_driver in self.supported_vf_driver, "Unspported vf driver")
+        if self.vf_driver == 'pci-stub':
+            self.vf_assign_method = 'pci-assign'
+        else:
+            self.vf_assign_method = 'vfio-pci'
+
+
     def set_up(self):
         self.setup_vm_env()
 
@@ -90,10 +103,10 @@ class TestVfVlan(TestCase):
         try:
 
             for port in self.sriov_vfs_port_0:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             for port in self.sriov_vfs_port_1:
-                port.bind_driver('pci-stub')
+                port.bind_driver(self.vf_driver)
 
             time.sleep(1)
             vf0_prop = {'opt_host': self.sriov_vfs_port_0[0].pci}
@@ -101,8 +114,8 @@ class TestVfVlan(TestCase):
 
             # set up VM0 ENV
             self.vm0 = QEMUKvm(self.dut, 'vm0', 'vf_vlan')
-            self.vm0.set_vm_device(driver='pci-assign', **vf0_prop)
-            self.vm0.set_vm_device(driver='pci-assign', **vf1_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf0_prop)
+            self.vm0.set_vm_device(driver=self.vf_assign_method, **vf1_prop)
             self.vm_dut_0 = self.vm0.start()
             if self.vm_dut_0 is None:
                 raise Exception("Set up VM0 ENV failed!")
-- 
2.14.1.windows.1



More information about the dts mailing list