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 [thread overview]
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
next prev parent 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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).