test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH V2 0/2] pmdrss_hash: replace legacy filter with rte_flow
@ 2021-09-02 11:35 Yu Jiang
  2021-09-02 11:35 ` [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow Yu Jiang
  2021-09-02 11:35 ` [dts] [PATCH V2 2/2] test_plans/pmdrss_hash: " Yu Jiang
  0 siblings, 2 replies; 4+ messages in thread
From: Yu Jiang @ 2021-09-02 11:35 UTC (permalink / raw)
  To: dts; +Cc: Yu Jiang

According to dpdk commit 81db321da("ethdev: remove legacy HASH filter type support"),
Modify pmdrss_hash test plan and script:
1, remove cases dynamic_rss_bond_config&simple_symmetric which are not support.
2, pmdrss_hash: replace legacy HASH filter with rte_flow.

Yu Jiang (2):
  tests/pmdrss_hash: replace legacy filter with rte flow
  test_plans/pmdrss_hash: replace legacy filter with rte flow

 conf/test_case_checklist.json        |  53 ------------------
 test_plans/pmdrss_hash_test_plan.rst |  82 +++++++++++++--------------
 tests/TestSuite_pmdrss_hash.py       | 105 +++++++----------------------------
 3 files changed, 58 insertions(+), 182 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow
  2021-09-02 11:35 [dts] [PATCH V2 0/2] pmdrss_hash: replace legacy filter with rte_flow Yu Jiang
@ 2021-09-02 11:35 ` Yu Jiang
  2021-09-03  5:22   ` Tu, Lijuan
  2021-09-02 11:35 ` [dts] [PATCH V2 2/2] test_plans/pmdrss_hash: " Yu Jiang
  1 sibling, 1 reply; 4+ messages in thread
From: Yu Jiang @ 2021-09-02 11:35 UTC (permalink / raw)
  To: dts; +Cc: Yu Jiang

According to dpdk commit 81db321da("ethdev: remove legacy HASH filter type support"),
Modify pmdrss_hash test plan and script:
1, remove cases dynamic_rss_bond_config&simple_symmetric which are not support.
2, pmdrss_hash: replace legacy HASH filter with rte_flow.

Signed-off-by: Yu Jiang <yux.jiang@intel.com>
---
 conf/test_case_checklist.json  |  53 ---------------------
 tests/TestSuite_pmdrss_hash.py | 105 ++++++++---------------------------------
 2 files changed, 20 insertions(+), 138 deletions(-)

diff --git a/conf/test_case_checklist.json b/conf/test_case_checklist.json
index 4726aac..02a222b 100644
--- a/conf/test_case_checklist.json
+++ b/conf/test_case_checklist.json
@@ -876,31 +876,6 @@
             "Comments": "the nic not support this case"
         }
     ],
-    "dynamic_rss_bond_config": [
-        {
-            "OS": [
-                "ALL"
-            ],
-            "NIC": [
-                "powerville",
-                "kawela_4",
-                "springville",
-                "ironpond",
-                "springfountain",
-                "twinpond",
-                "niantic",
-                "fortville_spirit_single",
-                "fortpark_TLV",
-                "fortpark_BASE-T",
-		"foxville"
-            ],
-            "Target": [
-                "ALL"
-            ],
-            "Bug ID": "",
-            "Comments": "the nic not support this case,(x722 know ND issue,DPDK-15118)"
-        }
-    ],
     "pmdrss_reta": [
         {
             "OS": [
@@ -1489,34 +1464,6 @@
             "Comments": "nic not support this case"
         }
     ],
-    "simple_symmetric": [
-        {
-            "OS": [
-                "ALL"
-            ],
-            "NIC": [
-                "ALL"
-            ],
-            "Target": [
-                "ALL"
-            ],
-            "Bug ID": "DPDK-8410",
-            "Comments": "DPDK-8410, won't fix; skip this case"
-        },
-        {
-            "OS": [
-                "ALL"
-            ],
-            "NIC": [
-	        "foxville"
-            ],
-            "Target": [
-                "ALL"
-            ],
-            "Bug ID": "",
-            "Comments": "the nic not support this case"
-        }
-    ],
     "toeplitz": [
         {
             "OS": [
diff --git a/tests/TestSuite_pmdrss_hash.py b/tests/TestSuite_pmdrss_hash.py
index 9ea6f9a..8e1b79b 100644
--- a/tests/TestSuite_pmdrss_hash.py
+++ b/tests/TestSuite_pmdrss_hash.py
@@ -453,6 +453,7 @@ class TestPmdrssHash(TestCase):
         dutPorts = self.dut.get_ports(self.nic)
         localPort = self.tester.get_local_port(dutPorts[0])
         itf = self.tester.get_interface(localPort)
+        rule_action = 'func toeplitz queues end / end'
         global reta_num
         global iptypes
 
@@ -471,8 +472,14 @@ class TestPmdrssHash(TestCase):
                 "set nbcore %d" % (queue + 1), "testpmd> ")
 
             self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config  0 toeplitz %s enable" % iptype, "testpmd> ")
+            self.dut.send_expect("flow flush 0", "testpmd> ")
+            rule_cmd = f'flow create 0 ingress pattern eth / ipv4 / end actions rss types {iptype} end queues end {rule_action}'
+            if 'sctp' in iptype or 'udp' in iptype or 'tcp' in iptype:
+                rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
+            if 'ipv6' in iptype:
+                rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
+            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
+            self.verify("created" in outx, "Create flow failed")
             self.dut.send_expect("port start all", "testpmd> ")
             out = self.dut.send_expect(
                 "port config all rss %s" % rsstype, "testpmd> ")
@@ -516,7 +523,8 @@ class TestPmdrssHash(TestCase):
                 rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
             if 'ipv6' in iptype:
                 rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
-            self.dut.send_expect(rule_cmd, "testpmd> ")
+            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
+            self.verify("created" in outx, "Create flow failed")
             self.dut.send_expect("port start all", "testpmd> ")
             out = self.dut.send_expect(
                 "port config all rss %s" % rsstype, "testpmd> ")
@@ -537,6 +545,7 @@ class TestPmdrssHash(TestCase):
         dutPorts = self.dut.get_ports(self.nic)
         localPort = self.tester.get_local_port(dutPorts[0])
         itf = self.tester.get_interface(localPort)
+        rule_action = 'func simple_xor queues end / end'
         global reta_num
         global iptypes
 
@@ -557,8 +566,14 @@ class TestPmdrssHash(TestCase):
 
             self.dut.send_expect("port stop all", "testpmd> ")
             # some nic not support change hash algorithm
-            self.dut.send_expect(
-                "set_hash_global_config 0 simple_xor %s enable" % iptype, "testpmd> ")
+            self.dut.send_expect("flow flush 0", "testpmd> ")
+            rule_cmd = f'flow create 0 ingress pattern eth / ipv4 / end actions rss types {iptype} end queues end {rule_action}'
+            if 'sctp' in iptype or 'udp' in iptype or 'tcp' in iptype:
+                rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
+            if 'ipv6' in iptype:
+                rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
+            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
+            self.verify("created" in outx, "Create flow failed")
             self.dut.send_expect("port start all", "testpmd> ")
             out = self.dut.send_expect(
                 "port config all rss %s" % rsstype, "testpmd> ")
@@ -572,86 +587,6 @@ class TestPmdrssHash(TestCase):
 
         self.dut.send_expect("quit", "# ", 30)
 
-    def test_simple_symmetric(self):
-
-        dutPorts = self.dut.get_ports(self.nic)
-        localPort = self.tester.get_local_port(dutPorts[0])
-        itf = self.tester.get_interface(localPort)
-        global reta_num
-        global iptypes
-        self.dut.kill_all()
-
-        # test with different rss queues
-        self.dut.send_expect(
-            "%s %s -- -i --rxq=%d --txq=%d" %
-            (self.path, self.eal_para, queue, queue), "testpmd> ", 120)
-
-        for iptype, rsstype in list(iptypes.items()):
-            self.dut.send_expect("set verbose 8", "testpmd> ")
-            self.dut.send_expect("set fwd rxonly", "testpmd> ")
-            self.dut.send_expect("set promisc all off", "testpmd> ")
-            self.dut.send_expect(
-                "set nbcore %d" % (queue + 1), "testpmd> ")
-
-            self.dut.send_expect("port stop all", "testpmd> ")
-            self.dut.send_expect(
-                "set_hash_global_config 0 simple_xor %s enable" % iptype, "testpmd> ")
-            self.dut.send_expect(
-                "set_sym_hash_ena_per_port 0 enable", "testpmd> ")
-            self.dut.send_expect("port start all", "testpmd> ")
-
-            out = self.dut.send_expect(
-                "port config all rss %s" % rsstype, "testpmd> ")
-            self.verify("error" not in out, "Configuration of RSS hash failed: Invalid argument")
-            # configure the reta with specific mappings.
-            for i in range(reta_num):
-                reta_entries.insert(i, random.randint(0, queue - 1))
-                self.dut.send_expect(
-                    "port config 0 rss reta (%d,%d)" % (i, reta_entries[i]), "testpmd> ")
-            self.send_packet_symmetric(itf, iptype)
-
-        self.dut.send_expect("quit", "# ", 30)
-
-    def test_dynamic_rss_bond_config(self):
-        
-        # setup testpmd and finish bond config
-        self.verify(self.nic in ["columbiaville_25g", "columbiaville_100g","fortville_eagle", "fortville_spirit",
-                    "fortpark_TLV","fortpark_BASE-T", "fortville_25g", "carlsville", "foxville"],
-                    "NIC Unsupported: " + str(self.nic))
-
-        self.dut.send_expect("%s %s -- -i" % (self.path, self.eal_para), "testpmd> ", 120)
-        self.dut.send_expect("set promisc all off", "testpmd> ")
-        out = self.dut.send_expect("create bonded device 3 0", "testpmd> ", 30)
-        bond_device_id = int(re.search("port \d+", out).group().split(" ")[-1].strip())
-
-        self.dut.send_expect("add bonding slave 0 %d" % bond_device_id, "testpmd>", 30)
-        self.dut.send_expect("add bonding slave 1 %d" % bond_device_id, "testpmd>", 30)
-
-        # get slave device default rss hash algorithm
-        out = self.dut.send_expect("get_hash_global_config 0", "testpmd>")
-        slave0_hash_function = re.search("Hash function is .+", out).group().split(" ")[-1].strip()
-        out = self.dut.send_expect("get_hash_global_config 1", "testpmd>")
-        slave1_hash_function = re.search("Hash function is .+", out).group().split(" ")[-1].strip()
-        self.verify(slave0_hash_function == slave1_hash_function, "default hash function not match")
-
-        new_hash_function = ""
-        for hash_function in ["toeplitz", "simple_xor"]:
-            if slave0_hash_function[-3:].lower() != hash_function[-3:]:
-                new_hash_function = hash_function
-        # update slave 0 rss hash algorithm and get slave 0 and slave 1 rss new hash algorithm
-        self.dut.send_expect("set_hash_global_config 0 %s ipv4-other enable" % new_hash_function, "testpmd>")
-        out = self.dut.send_expect("get_hash_global_config 0", "testpmd>")
-        slave0_new_hash_function = re.search("Hash function is .+", out).group().split(" ")[-1].strip()
-        out = self.dut.send_expect("get_hash_global_config 1", "testpmd>")
-        slave1_new_hash_function = re.search("Hash function is .+", out).group().split(" ")[-1].strip()
-
-        self.verify(slave0_new_hash_function == slave1_new_hash_function, "bond slave auto sync hash function failed")
-        self.verify(slave0_new_hash_function[-3:].lower() == new_hash_function[-3:], "changed slave hash function failed")
-
-        self.dut.send_expect("remove bonding slave 0 %d" % bond_device_id, "testpmd>", 30)
-        self.dut.send_expect("remove bonding slave 1 %d" % bond_device_id, "testpmd>", 30)
-        self.dut.send_expect("quit","# ", 30)
-
     def tear_down(self):
         """
         Run after each test case.
-- 
2.7.4


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [dts] [PATCH V2 2/2] test_plans/pmdrss_hash: replace legacy filter with rte flow
  2021-09-02 11:35 [dts] [PATCH V2 0/2] pmdrss_hash: replace legacy filter with rte_flow Yu Jiang
  2021-09-02 11:35 ` [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow Yu Jiang
@ 2021-09-02 11:35 ` Yu Jiang
  1 sibling, 0 replies; 4+ messages in thread
From: Yu Jiang @ 2021-09-02 11:35 UTC (permalink / raw)
  To: dts; +Cc: Yu Jiang

According to dpdk commit 81db321da("ethdev: remove legacy HASH filter type support"),
Modify pmdrss_hash test plan and script:
1, remove cases dynamic_rss_bond_config&simple_symmetric which are not support.
2, pmdrss_hash: replace legacy HASH filter with rte_flow.

Signed-off-by: Yu Jiang <yux.jiang@intel.com>
---
 test_plans/pmdrss_hash_test_plan.rst | 82 +++++++++++++++++-------------------
 1 file changed, 38 insertions(+), 44 deletions(-)

diff --git a/test_plans/pmdrss_hash_test_plan.rst b/test_plans/pmdrss_hash_test_plan.rst
index c0430a0..8675ce3 100644
--- a/test_plans/pmdrss_hash_test_plan.rst
+++ b/test_plans/pmdrss_hash_test_plan.rst
@@ -95,9 +95,19 @@ Testpmd configuration - 16 RX/TX queues per port
 
        testpmd command: set verbose 8
 
-#. set hash functions, can choose symmetric or not, choose port and packet type::
-
-       testpmd command: set_hash_global_config 0 toeplitz ipv4-other enable
+#. set hash functions, can choose symmetric or not, choose port, rss type and packet type::
+       Toeplitz hash function: toeplitz
+       testpmd command:
+       flow create <port_id> ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-other end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-frag end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-other end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end queues end func toeplitz queues end / end
+       flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-frag end queues end func toeplitz queues end / end
 
 #. start packet receive::
 
@@ -128,9 +138,18 @@ Test Case:  test_toeplitz_symmetric
 ===================================
 
 The same with the above steps, pay attention to "set hash function", should use::
-
-  set_hash_global_config 0 toeplitz ipv4-other enable
-  set_sym_hash_ena_per_port 0 enable
+  Symmetric Toeplitz hash function: symmetric_toeplitz
+  testpmd command:
+  flow create <port_id> ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-other end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-frag end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-other end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end queues end func symmetric_toeplitz queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-frag end queues end func symmetric_toeplitz queues end / end
 
 And send packets with the same flow in different direction::
 
@@ -142,42 +161,17 @@ And the hash value and queue should be the same for these two flow .
 Test Case:  test_simple
 =======================
 
-The same as the above test case "test_toeplitz". Just pay attention to set the hash function to "simple xor"
-
-Test Case:  test_simple_symmetric
-=================================
-
-The same as the above test case "test_toeplitz_symmetric". Just pay attention to set the hash function to "simple xor"
-
-Test Case:  test_dynamic_rss_bond_config
-========================================
-This case test bond slaves will auto sync rss hash config, it only support by fortville.
-
-#. set up testpmd with fortville NICs::
-
-      ./testpmd -c f -n 4 -- -i
-
-#. create bond device with mode 3::
-
-      create bonded device 3 0
-
-#. add slave to bond device::
-
-      add bonding slave 0 2
-      add bonding slave 1 2
-
-#. get default hash algorithm on slave::
-
-      get_hash_global_config 0
-      get_hash_global_config 1
-
-#. set hash algorithm on slave 0::
-
-      set_hash_global_config 0 simple_xor ipv4-other enable
-
-#. get hash algorithm on slave 0 and 1::
-
-      get_hash_global_config 0
-      get_hash_global_config 1
+The same as the above test case "test_toeplitz". Just pay attention to set the hash function to "simple xor"::
+  simple XOR hash function: simple_xor
+  testpmd command:
+  flow create <port_id> ingress pattern eth / ipv4 / sctp / end actions rss types ipv4-sctp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-other end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / end actions rss types ipv4-frag end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / udp / end actions rss types ipv4-udp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv4 / tcp / end actions rss types ipv4-tcp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-other end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / sctp / end actions rss types ipv6-sctp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / udp / end actions rss types ipv6-udp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-tcp end queues end func simple_xor queues end / end
+  flow create <port_id> ingress pattern eth / ipv6 / end actions rss types ipv6-frag end queues end func simple_xor queues end / end
 
-#. check slave 0 and 1 use same hash algorithm
-- 
2.7.4


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow
  2021-09-02 11:35 ` [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow Yu Jiang
@ 2021-09-03  5:22   ` Tu, Lijuan
  0 siblings, 0 replies; 4+ messages in thread
From: Tu, Lijuan @ 2021-09-03  5:22 UTC (permalink / raw)
  To: Jiang, YuX, dts; +Cc: Jiang, YuX, Lin, Xueqin

dynamic_rss_bond_config  and pmdrss, they don't have any relatives, please split them, thanks.

Does simple_symmetric support all nics?
Does pmdrss_hash support all nics? If yes, could you please update test plan too
 The test plan says, it is Fortville specific. Test plan description should all also be updated, it is align with the fact.



> -----Original Message-----
> From: dts <dts-bounces@dpdk.org> On Behalf Of Yu Jiang
> Sent: 2021年9月2日 19:35
> To: dts@dpdk.org
> Cc: Jiang, YuX <yux.jiang@intel.com>
> Subject: [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte
> flow
> 
> According to dpdk commit 81db321da("ethdev: remove legacy HASH filter type
> support"), Modify pmdrss_hash test plan and script:
> 1, remove cases dynamic_rss_bond_config&simple_symmetric which are not
> support.
> 2, pmdrss_hash: replace legacy HASH filter with rte_flow.
> 
> Signed-off-by: Yu Jiang <yux.jiang@intel.com>
> ---
>  conf/test_case_checklist.json  |  53 ---------------------
> tests/TestSuite_pmdrss_hash.py | 105 ++++++++---------------------------------
>  2 files changed, 20 insertions(+), 138 deletions(-)
> 
> diff --git a/conf/test_case_checklist.json b/conf/test_case_checklist.json index
> 4726aac..02a222b 100644
> --- a/conf/test_case_checklist.json
> +++ b/conf/test_case_checklist.json
> @@ -876,31 +876,6 @@
>              "Comments": "the nic not support this case"
>          }
>      ],
> -    "dynamic_rss_bond_config": [
> -        {
> -            "OS": [
> -                "ALL"
> -            ],
> -            "NIC": [
> -                "powerville",
> -                "kawela_4",
> -                "springville",
> -                "ironpond",
> -                "springfountain",
> -                "twinpond",
> -                "niantic",
> -                "fortville_spirit_single",
> -                "fortpark_TLV",
> -                "fortpark_BASE-T",
> -		"foxville"
> -            ],
> -            "Target": [
> -                "ALL"
> -            ],
> -            "Bug ID": "",
> -            "Comments": "the nic not support this case,(x722 know ND issue,DPDK-
> 15118)"
> -        }
> -    ],
>      "pmdrss_reta": [
>          {
>              "OS": [
> @@ -1489,34 +1464,6 @@
>              "Comments": "nic not support this case"
>          }
>      ],
> -    "simple_symmetric": [
> -        {
> -            "OS": [
> -                "ALL"
> -            ],
> -            "NIC": [
> -                "ALL"
> -            ],
> -            "Target": [
> -                "ALL"
> -            ],
> -            "Bug ID": "DPDK-8410",
> -            "Comments": "DPDK-8410, won't fix; skip this case"
> -        },
> -        {
> -            "OS": [
> -                "ALL"
> -            ],
> -            "NIC": [
> -	        "foxville"
> -            ],
> -            "Target": [
> -                "ALL"
> -            ],
> -            "Bug ID": "",
> -            "Comments": "the nic not support this case"
> -        }
> -    ],
>      "toeplitz": [
>          {
>              "OS": [
> diff --git a/tests/TestSuite_pmdrss_hash.py b/tests/TestSuite_pmdrss_hash.py
> index 9ea6f9a..8e1b79b 100644
> --- a/tests/TestSuite_pmdrss_hash.py
> +++ b/tests/TestSuite_pmdrss_hash.py
> @@ -453,6 +453,7 @@ class TestPmdrssHash(TestCase):
>          dutPorts = self.dut.get_ports(self.nic)
>          localPort = self.tester.get_local_port(dutPorts[0])
>          itf = self.tester.get_interface(localPort)
> +        rule_action = 'func toeplitz queues end / end'
>          global reta_num
>          global iptypes
> 
> @@ -471,8 +472,14 @@ class TestPmdrssHash(TestCase):
>                  "set nbcore %d" % (queue + 1), "testpmd> ")
> 
>              self.dut.send_expect("port stop all", "testpmd> ")
> -            self.dut.send_expect(
> -                "set_hash_global_config  0 toeplitz %s enable" % iptype, "testpmd> ")
> +            self.dut.send_expect("flow flush 0", "testpmd> ")
> +            rule_cmd = f'flow create 0 ingress pattern eth / ipv4 / end actions rss
> types {iptype} end queues end {rule_action}'
> +            if 'sctp' in iptype or 'udp' in iptype or 'tcp' in iptype:
> +                rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
> +            if 'ipv6' in iptype:
> +                rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
> +            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
> +            self.verify("created" in outx, "Create flow failed")
>              self.dut.send_expect("port start all", "testpmd> ")
>              out = self.dut.send_expect(
>                  "port config all rss %s" % rsstype, "testpmd> ") @@ -516,7 +523,8 @@
> class TestPmdrssHash(TestCase):
>                  rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
>              if 'ipv6' in iptype:
>                  rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
> -            self.dut.send_expect(rule_cmd, "testpmd> ")
> +            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
> +            self.verify("created" in outx, "Create flow failed")
>              self.dut.send_expect("port start all", "testpmd> ")
>              out = self.dut.send_expect(
>                  "port config all rss %s" % rsstype, "testpmd> ") @@ -537,6 +545,7 @@
> class TestPmdrssHash(TestCase):
>          dutPorts = self.dut.get_ports(self.nic)
>          localPort = self.tester.get_local_port(dutPorts[0])
>          itf = self.tester.get_interface(localPort)
> +        rule_action = 'func simple_xor queues end / end'
>          global reta_num
>          global iptypes
> 
> @@ -557,8 +566,14 @@ class TestPmdrssHash(TestCase):
> 
>              self.dut.send_expect("port stop all", "testpmd> ")
>              # some nic not support change hash algorithm
> -            self.dut.send_expect(
> -                "set_hash_global_config 0 simple_xor %s enable" % iptype, "testpmd>
> ")
> +            self.dut.send_expect("flow flush 0", "testpmd> ")
> +            rule_cmd = f'flow create 0 ingress pattern eth / ipv4 / end actions rss
> types {iptype} end queues end {rule_action}'
> +            if 'sctp' in iptype or 'udp' in iptype or 'tcp' in iptype:
> +                rule_cmd = rule_cmd.replace('/ ipv4 /', f'/ ipv4 / {rsstype} /')
> +            if 'ipv6' in iptype:
> +                rule_cmd = rule_cmd.replace('ipv4', 'ipv6')
> +            outx = self.dut.send_expect(rule_cmd, "testpmd> ")
> +            self.verify("created" in outx, "Create flow failed")
>              self.dut.send_expect("port start all", "testpmd> ")
>              out = self.dut.send_expect(
>                  "port config all rss %s" % rsstype, "testpmd> ") @@ -572,86 +587,6
> @@ class TestPmdrssHash(TestCase):
> 
>          self.dut.send_expect("quit", "# ", 30)
> 
> -    def test_simple_symmetric(self):
> -
> -        dutPorts = self.dut.get_ports(self.nic)
> -        localPort = self.tester.get_local_port(dutPorts[0])
> -        itf = self.tester.get_interface(localPort)
> -        global reta_num
> -        global iptypes
> -        self.dut.kill_all()
> -
> -        # test with different rss queues
> -        self.dut.send_expect(
> -            "%s %s -- -i --rxq=%d --txq=%d" %
> -            (self.path, self.eal_para, queue, queue), "testpmd> ", 120)
> -
> -        for iptype, rsstype in list(iptypes.items()):
> -            self.dut.send_expect("set verbose 8", "testpmd> ")
> -            self.dut.send_expect("set fwd rxonly", "testpmd> ")
> -            self.dut.send_expect("set promisc all off", "testpmd> ")
> -            self.dut.send_expect(
> -                "set nbcore %d" % (queue + 1), "testpmd> ")
> -
> -            self.dut.send_expect("port stop all", "testpmd> ")
> -            self.dut.send_expect(
> -                "set_hash_global_config 0 simple_xor %s enable" % iptype, "testpmd>
> ")
> -            self.dut.send_expect(
> -                "set_sym_hash_ena_per_port 0 enable", "testpmd> ")
> -            self.dut.send_expect("port start all", "testpmd> ")
> -
> -            out = self.dut.send_expect(
> -                "port config all rss %s" % rsstype, "testpmd> ")
> -            self.verify("error" not in out, "Configuration of RSS hash failed: Invalid
> argument")
> -            # configure the reta with specific mappings.
> -            for i in range(reta_num):
> -                reta_entries.insert(i, random.randint(0, queue - 1))
> -                self.dut.send_expect(
> -                    "port config 0 rss reta (%d,%d)" % (i, reta_entries[i]), "testpmd> ")
> -            self.send_packet_symmetric(itf, iptype)
> -
> -        self.dut.send_expect("quit", "# ", 30)
> -
> -    def test_dynamic_rss_bond_config(self):
> -
> -        # setup testpmd and finish bond config
> -        self.verify(self.nic in ["columbiaville_25g",
> "columbiaville_100g","fortville_eagle", "fortville_spirit",
> -                    "fortpark_TLV","fortpark_BASE-T", "fortville_25g", "carlsville",
> "foxville"],
> -                    "NIC Unsupported: " + str(self.nic))
> -
> -        self.dut.send_expect("%s %s -- -i" % (self.path, self.eal_para), "testpmd> ",
> 120)
> -        self.dut.send_expect("set promisc all off", "testpmd> ")
> -        out = self.dut.send_expect("create bonded device 3 0", "testpmd> ", 30)
> -        bond_device_id = int(re.search("port \d+", out).group().split(" ")[-1].strip())
> -
> -        self.dut.send_expect("add bonding slave 0 %d" % bond_device_id,
> "testpmd>", 30)
> -        self.dut.send_expect("add bonding slave 1 %d" % bond_device_id,
> "testpmd>", 30)
> -
> -        # get slave device default rss hash algorithm
> -        out = self.dut.send_expect("get_hash_global_config 0", "testpmd>")
> -        slave0_hash_function = re.search("Hash function is .+", out).group().split("
> ")[-1].strip()
> -        out = self.dut.send_expect("get_hash_global_config 1", "testpmd>")
> -        slave1_hash_function = re.search("Hash function is .+", out).group().split("
> ")[-1].strip()
> -        self.verify(slave0_hash_function == slave1_hash_function, "default hash
> function not match")
> -
> -        new_hash_function = ""
> -        for hash_function in ["toeplitz", "simple_xor"]:
> -            if slave0_hash_function[-3:].lower() != hash_function[-3:]:
> -                new_hash_function = hash_function
> -        # update slave 0 rss hash algorithm and get slave 0 and slave 1 rss new hash
> algorithm
> -        self.dut.send_expect("set_hash_global_config 0 %s ipv4-other enable" %
> new_hash_function, "testpmd>")
> -        out = self.dut.send_expect("get_hash_global_config 0", "testpmd>")
> -        slave0_new_hash_function = re.search("Hash function is .+",
> out).group().split(" ")[-1].strip()
> -        out = self.dut.send_expect("get_hash_global_config 1", "testpmd>")
> -        slave1_new_hash_function = re.search("Hash function is .+",
> out).group().split(" ")[-1].strip()
> -
> -        self.verify(slave0_new_hash_function == slave1_new_hash_function,
> "bond slave auto sync hash function failed")
> -        self.verify(slave0_new_hash_function[-3:].lower() == new_hash_function[-
> 3:], "changed slave hash function failed")
> -
> -        self.dut.send_expect("remove bonding slave 0 %d" % bond_device_id,
> "testpmd>", 30)
> -        self.dut.send_expect("remove bonding slave 1 %d" % bond_device_id,
> "testpmd>", 30)
> -        self.dut.send_expect("quit","# ", 30)
> -
>      def tear_down(self):
>          """
>          Run after each test case.
> --
> 2.7.4


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-09-03  5:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-02 11:35 [dts] [PATCH V2 0/2] pmdrss_hash: replace legacy filter with rte_flow Yu Jiang
2021-09-02 11:35 ` [dts] [PATCH V2 1/2] tests/pmdrss_hash: replace legacy filter with rte flow Yu Jiang
2021-09-03  5:22   ` Tu, Lijuan
2021-09-02 11:35 ` [dts] [PATCH V2 2/2] test_plans/pmdrss_hash: " Yu Jiang

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).