test suite reviews and discussions
 help / color / mirror / Atom feed
From: Jiale Song <songx.jiale@intel.com>
To: dts@dpdk.org
Cc: Jiale Song <songx.jiale@intel.com>
Subject: [dts] [PATCH V2 2/2] tests/iavf_fdir: create rules with less consumption of TCAM rule in suite
Date: Mon, 11 Oct 2021 18:03:46 +0800
Message-ID: <1633946626-169097-2-git-send-email-songx.jiale@intel.com> (raw)
In-Reply-To: <1633946626-169097-1-git-send-email-songx.jiale@intel.com>

modify the suite according to the testplan

Signed-off-by: Jiale Song <songx.jiale@intel.com>
---
 tests/TestSuite_iavf_fdir.py | 66 +++++++++++++++++++++++-------------
 1 file changed, 42 insertions(+), 24 deletions(-)

diff --git a/tests/TestSuite_iavf_fdir.py b/tests/TestSuite_iavf_fdir.py
index 7f8dace..44fcb95 100755
--- a/tests/TestSuite_iavf_fdir.py
+++ b/tests/TestSuite_iavf_fdir.py
@@ -8349,6 +8349,9 @@ class TestIAVFFdir(TestCase):
         create same rules on pf and vf, no conflict
         """
         self.dut.kill_all()
+        self.dut.send_expect("rmmod ice", "# ", 15)
+        self.dut.send_expect("modprobe ice", "# ", 15)
+        self.setup_2pf_4vf_env()
         self.session_secondary = self.dut.new_session()
         self.session_third = self.dut.new_session()
 
@@ -8500,6 +8503,9 @@ class TestIAVFFdir(TestCase):
         create same input set but different action rules on pf and vf, no conflict.
         """
         self.dut.kill_all()
+        self.dut.send_expect("rmmod ice", "# ", 15)
+        self.dut.send_expect("modprobe ice", "# ", 15)
+        self.setup_2pf_4vf_env()
         self.session_secondary = self.dut.new_session()
         self.session_third = self.dut.new_session()
 
@@ -8819,6 +8825,15 @@ class TestIAVFFdir(TestCase):
             nex_cnt = 94 // 8
         elif len(self.dut_ports) == 2:
             nex_cnt = 110 // 8
+            # check the card is chapman beach 100g*2 or not
+            pf_pci = self.dut.ports_info[0]['pci']
+            out = self.dut.send_expect('lspci -s {} -vvv |grep "Product Name"'.format(pf_pci), '#')
+            res = re.search(r"Network Adapter\s+(?P<product_name>E810-.*)", out)
+            self.verify(res, "product name not found'")
+            # if card is chapman beach 100g*2, one pf port equals a general 100g*2 card,so 118 profiles can be used for vf
+            if 'E810-2CQDA2' in res.group('product_name'):
+                nex_cnt = 118 // 8
+
         else:
             self.verify(False, 'The number of ports is not supported')
 
@@ -8828,43 +8843,46 @@ class TestIAVFFdir(TestCase):
         self.config_testpmd()
 
         for port_id in range(nex_cnt):
+            # The number of rules created is affected by the profile and TCAM. The maximum profile is 128 and the maximum
+            # TCAM is 512. In order to test the maximum profile, need to create rules that consume less TCAM to ensure
+            # that the profile will reach the maximum before TCAM exhausted
             rules = [
-                "flow create %d ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / sctp src is 22 dst is 23 / end actions queue index 1 / mark / end" % port_id,
-                "flow create %d ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end" % port_id,
-                "flow create %d ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 2 / end" % port_id]
-            self.create_fdir_rule(rules, check_stats=True)
+                "flow create {} ingress pattern eth / ipv4 / l2tpv3oip session_id is 1 / end actions queue index 1 / mark / end",
+                "flow create {} ingress pattern eth / ipv6 / l2tpv3oip session_id is 2 / end actions queue index 1 / mark / end",
+                "flow create {} ingress pattern eth / ipv4 / tcp / end actions queue index 2 / mark / end",
+                "flow create {} ingress pattern eth / ipv6 / tcp / end actions queue index 2 / mark / end",
+                "flow create {} ingress pattern eth / ipv4 / esp spi is 1 / end actions queue index 3 / mark / end",
+                "flow create {} ingress pattern eth / ipv6 / esp spi is 2 / end actions queue index 3 / mark / end",
+                "flow create {} ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end",
+                "flow create {} ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / end"]
+            self.create_fdir_rule([rule.format(port_id) for rule in rules], check_stats=True)
 
         rules = [
-            "flow create {} ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt),
-            "flow create {} ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt),
-            "flow create {} ingress pattern eth / ipv4 src is 192.168.0.20 dst is 192.168.0.21 / sctp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt),
-            "flow create {} ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / udp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt),
-            "flow create {} ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / tcp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt),
-            "flow create {} ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 src is 2001::2 / sctp src is 22 dst is 23 / end actions queue index 1 / mark / end".format(nex_cnt)]
-        self.create_fdir_rule(rules, check_stats=True)
-
-        rule = "flow create {} ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end".format(nex_cnt)
+            "flow create {} ingress pattern eth / ipv4 / l2tpv3oip session_id is 1 / end actions queue index 1 / mark / end",
+            "flow create {} ingress pattern eth / ipv6 / l2tpv3oip session_id is 2 / end actions queue index 1 / mark / end",
+            "flow create {} ingress pattern eth / ipv4 / tcp / end actions queue index 2 / mark / end",
+            "flow create {} ingress pattern eth / ipv6 / tcp / end actions queue index 2 / mark / end",
+            "flow create {} ingress pattern eth / ipv4 / esp spi is 1 / end actions queue index 3 / mark / end",
+            "flow create {} ingress pattern eth / ipv6 / esp spi is 2 / end actions queue index 3 / mark / end"]
+        self.create_fdir_rule([rule.format(nex_cnt) for rule in rules], check_stats=True)
+
+        rule = "flow create {} ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end".format(nex_cnt)
         self.create_fdir_rule(rule, check_stats=False)
-        pkt1 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(sport=22, dport=23)/ Raw("x" * 80)'
+        pkt1 =  'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/TCP()/Raw("x" * 80)'
         out = self.send_pkts_getouput(pkts=pkt1)
-        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 0, "queue": 1}, stats=True)
-        pkt2 = 'Ether(dst="00:11:22:33:44:55", type=0x8863)/IP()/Raw("x" * 80)'
+        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 0, "queue": 2}, stats=True)
+        pkt2 = 'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21")/UDP(dport=8805)/PFCP(S=0)/Raw("x" * 80)'
         out = self.send_pkts_getouput(pkts=pkt2)
-        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 1, "queue": 1}, stats=False)
+        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 1, "queue": 4}, stats=False)
 
         self.dut.send_expect("flow flush {}".format(nex_cnt), "testpmd> ")
         self.check_fdir_rule(port_id=(nex_cnt), stats=False)
         out = self.send_pkts_getouput(pkts=pkt1)
-        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 0, "queue": 1}, stats=False)
+        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 0, "queue": 2}, stats=False)
 
         self.create_fdir_rule(rule, check_stats=True)
         out = self.send_pkts_getouput(pkts=pkt2)
-        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 1, "queue": 1}, stats=True)
+        rfc.check_iavf_fdir_mark(out, pkt_num=1, check_param={"port_id": nex_cnt, "mark_id": 1, "queue": 4}, stats=True)
 
     def test_stress_port_stop_start(self):
         """
-- 
2.17.1


  reply	other threads:[~2021-10-11  9:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-11 10:03 [dts] [PATCH V2 1/2] tests_plan/iavf_fdir: replace rules with less consumption TCAM rule Jiale Song
2021-10-11 10:03 ` Jiale Song [this message]
2021-10-25  7:57   ` [dts] [PATCH V2 2/2] tests/iavf_fdir: create rules with less consumption of TCAM rule in suite Tu, Lijuan

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=1633946626-169097-2-git-send-email-songx.jiale@intel.com \
    --to=songx.jiale@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

test suite reviews and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.dpdk.org/dts/0 dts/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dts dts/ http://inbox.dpdk.org/dts \
		dts@dpdk.org
	public-inbox-index dts

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dts


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git