diff mbox series

[V1,1/4] tests/kernelpf_iavf: update dts code for driver change

Message ID 20220705071835.17187-1-weiyuanx.li@intel.com (mailing list archive)
State Superseded
Headers show
Series [V1,1/4] tests/kernelpf_iavf: update dts code for driver change | expand

Commit Message

Li, WeiyuanX July 5, 2022, 7:18 a.m. UTC
The out-tree driver has vf-vlan-pruning option,but in-tree driver has
not. So we need different action to enable vlan filter when we validate
the vlan filter function with in-tree and out-tree kernel drvier.

Signed-off-by: Weiyuan Li <weiyuanx.li@intel.com>
---
 tests/TestSuite_kernelpf_iavf.py | 34 ++++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py
index d7d17ac4..8d051931 100644
--- a/tests/TestSuite_kernelpf_iavf.py
+++ b/tests/TestSuite_kernelpf_iavf.py
@@ -96,7 +96,26 @@  class TestKernelpfIavf(TestCase):
         # bind to default driver
         self.bind_nic_driver(self.dut_ports, driver="")
         self.used_dut_port = self.dut_ports[0]
-        if self.is_eth_series_nic(800) and self.default_stats:
+        # check out tree driver whether there is flag vf-vlan-pruning.
+        # out tree path: /lib/modules/4.18.0-305.19.1.el8_4.x86_64/updates/drivers/net/ethernet/intel/i40e/i40e.ko
+        # in tree path:/lib/modules/5.15.0-27-generic/kernel/drivers/net/ethernet/intel/ice/ice.ko
+        out = self.dut.send_expect(f"modinfo {self.kdriver}", "# ")
+        pattern = "/lib/modules/(.*?)/updates/drivers"
+        regex = re.compile(pattern)
+        mo = regex.search(out)
+        if mo:
+            search_results = mo.group(0)
+        else:
+            search_results = ''
+        if "updates" in search_results and not self.default_stats:
+            self.verify(
+                False,
+                f"{self.kdriver} driver out tree does not have vf-vlan-pruning flag. Please confirm whether the driver is correct.",
+            )
+        if (
+            any([self.is_eth_series_nic(800), self.kdriver == "i40e"])
+            and self.default_stats
+        ):
             self.dut.send_expect(
                 "ethtool --set-priv-flags %s %s on" % (self.host_intf, self.flag), "# "
             )
@@ -119,7 +138,6 @@  class TestKernelpfIavf(TestCase):
             self.dut.send_expect(
                 "ip link set %s vf 0 mac %s" % (self.host_intf, self.vf_mac), "# "
             )
-
         try:
 
             for port in self.sriov_vfs_port:
@@ -453,7 +471,11 @@  class TestKernelpfIavf(TestCase):
         time.sleep(1)
         tcpdump_out = self.get_tcpdump_package()
         receive_pkt = re.findall("vlan %s" % random_vlan, tcpdump_out)
-        if self.kdriver == "i40e" and self.driver_version < "2.13.10":
+        if (
+            (self.kdriver == "i40e" and self.driver_version < "2.13.10")
+            or (self.kdriver == "i40e" and not self.default_stats)
+            or (self.kdriver == "ice" and not self.default_stats)
+        ):
             self.verify(len(receive_pkt) == 2, "Failed to received vlan packet!!!")
         else:
             self.verify(len(receive_pkt) == 1, "Failed to received vlan packet!!!")
@@ -853,7 +875,11 @@  class TestKernelpfIavf(TestCase):
         self.scapy_send_packet(self.vf_mac, self.tester_intf, vlan_flags=True, count=10)
         out = self.vm_dut.get_session_output()
         packets = len(re.findall("received 1 packets", out))
-        if self.kdriver == "i40e" and self.driver_version < "2.13.10":
+        if (
+            (self.kdriver == "i40e" and self.driver_version < "2.13.10")
+            or (self.kdriver == "i40e" and not self.default_stats)
+            or (self.kdriver == "ice" and not self.default_stats)
+        ):
             self.verify(packets == 10, "Not receive expected packet")
         else:
             self.verify(packets == 0, "Receive expected packet")