[V1] kernelpf_iavf: add driver version check to adapt to dpdk changes

Message ID 20230209183549.367681-1-zhiminx.huang@intel.com (mailing list archive)
State Accepted
Headers
Series [V1] kernelpf_iavf: add driver version check to adapt to dpdk changes |

Checks

Context Check Description
ci/Intel-dts-format-test success Testing OK
ci/Intel-dts-pylama-test success Testing OK
ci/Intel-dts-doc-test success Testing OK
ci/Intel-dts-suite-test success Testing OK

Commit Message

Huang, ZhiminX Feb. 9, 2023, 6:35 p.m. UTC
  according to dpdk commit d048a0aaae27809523969904c2f7b71fe3cc1bb6,
the ice driver version newer than 1.8.9 not support insert correct vlan
tag in avx512.
add driver version check in test script, newer than 1.8.9 will skip in test.

Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>
---
 test_plans/kernelpf_iavf_test_plan.rst |  5 ++++
 tests/TestSuite_kernelpf_iavf.py       | 34 +++++++++++++++++++++++++-
 2 files changed, 38 insertions(+), 1 deletion(-)
  

Comments

Tu, Lijuan March 7, 2023, 5:47 a.m. UTC | #1
On Thu,  9 Feb 2023 18:35:49 +0000, Zhimin Huang <zhiminx.huang@intel.com> wrote:
> according to dpdk commit d048a0aaae27809523969904c2f7b71fe3cc1bb6,
> the ice driver version newer than 1.8.9 not support insert correct vlan
> tag in avx512.
> add driver version check in test script, newer than 1.8.9 will skip in test.
> 
> Signed-off-by: Zhimin Huang <zhiminx.huang@intel.com>


Applied, thanks
  

Patch

diff --git a/test_plans/kernelpf_iavf_test_plan.rst b/test_plans/kernelpf_iavf_test_plan.rst
index 5b91d38b..df98b65f 100644
--- a/test_plans/kernelpf_iavf_test_plan.rst
+++ b/test_plans/kernelpf_iavf_test_plan.rst
@@ -522,6 +522,11 @@  Test case: IAVF DUAL VLAN header stripping
 Test case: IAVF DUAL VLAN header insertion
 ==========================================
 
+..note::
+
+   according to dpdk commit d048a0aaae27809523969904c2f7b71fe3cc1bb6,
+   when the ice driver version newer than 1.8.9, avx512 tx path not support insert correct vlag tag(outer of QinQ)
+
 1. enable vlan filtering on port VF::
 
     testpmd> vlan set filter on 0
diff --git a/tests/TestSuite_kernelpf_iavf.py b/tests/TestSuite_kernelpf_iavf.py
index 5e955feb..66c9094e 100644
--- a/tests/TestSuite_kernelpf_iavf.py
+++ b/tests/TestSuite_kernelpf_iavf.py
@@ -16,7 +16,11 @@  import time
 import framework.utils as utils
 from framework.packet import Packet
 from framework.pmd_output import PmdOutput
-from framework.settings import DPDK_DCFMODE_SETTING, load_global_setting
+from framework.settings import (
+    DPDK_DCFMODE_SETTING,
+    DPDK_RXMODE_SETTING,
+    load_global_setting,
+)
 from framework.test_case import TestCase, check_supported_nic
 from framework.utils import RED
 from framework.virt_common import VM
@@ -81,6 +85,7 @@  class TestKernelpfIavf(TestCase):
         self.flag = "vf-vlan-pruning"
         self.default_stats = self.dut.get_priv_flags_state(self.host_intf, self.flag)
         self.dcf_mode = load_global_setting(DPDK_DCFMODE_SETTING)
+        self.rx_mode = load_global_setting(DPDK_RXMODE_SETTING)
 
     def set_up(self):
 
@@ -1016,12 +1021,39 @@  class TestKernelpfIavf(TestCase):
                     "port {} should not received a packets".format(port_id),
                 )
 
+    def convert_driver_version_value(self, check_version):
+        """
+        convert the driver version to int list
+        take the first three values in the list for comparison and limit intree driver
+        for example:
+            6.0.7-060007-generic: [6, 0, 7-060007-generic]
+            1.11.0_rc59: [1, 11, 0]
+            1.11.11: [1, 11, 11]
+        """
+        try:
+            value_list = list(map(int, re.split(r"[.|_]", check_version)[:3]))
+        except ValueError as e:
+            self.logger.warning(e)
+            # the intree-driver has character, so set the return value is null list as the lowest driver version
+            return []
+        return value_list
+
     @check_supported_nic(ice_nic)
     def test_iavf_dual_vlan_insert(self):
         """
         Test case: IAVF DUAL VLAN header insertion
         """
+
+        """
+        according to dpdk commit d048a0aaae27809523969904c2f7b71fe3cc1bb6,
+        when the ice driver version newer than 1.8.9, avx512 tx path not support
+        insert correct vlag tag(outer of QinQ)
+        """
         self.skip_case(not self.dcf_mode, "the case not support this dcf mode")
+        if self.rx_mode == "avx512" and self.convert_driver_version_value(
+            self.driver_version
+        ) > self.convert_driver_version_value("1.8.9"):
+            self.skip_case(False, "avx512 tx path not support insert correct vlan tag")
         out_vlan = 1
         pkt_list = [
             'Ether(dst="%s",type=0x0800)/IP(src="196.222.232.221")/("X"*480)'