From patchwork Tue Oct 26 02:03:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiale, SongX" X-Patchwork-Id: 102804 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 19DDBA0C4B; Tue, 26 Oct 2021 04:04:04 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 11250410DB; Tue, 26 Oct 2021 04:04:04 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id BA1CE4003E for ; Tue, 26 Oct 2021 04:04:01 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10148"; a="216715776" X-IronPort-AV: E=Sophos;i="5.87,181,1631602800"; d="scan'208";a="216715776" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Oct 2021 19:04:01 -0700 X-IronPort-AV: E=Sophos;i="5.87,181,1631602800"; d="scan'208";a="485944760" Received: from unknown (HELO dpdk-zhaohy-t.sh.intel.com) ([10.240.183.68]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Oct 2021 19:04:00 -0700 From: Jiale Song To: dts@dpdk.org Cc: Jiale Song Date: Tue, 26 Oct 2021 10:03:52 +0800 Message-Id: <1635213832-9072-2-git-send-email-songx.jiale@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1635213832-9072-1-git-send-email-songx.jiale@intel.com> References: <1635213832-9072-1-git-send-email-songx.jiale@intel.com> Subject: [dts] [PATCH V3 2/2] tests/iavf_fdir: create rules with less consumption of TCAM rule in suite X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org Sender: "dts" modify the suite according to the testplan Signed-off-by: Jiale Song --- tests/TestSuite_iavf_fdir.py | 62 ++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/tests/TestSuite_iavf_fdir.py b/tests/TestSuite_iavf_fdir.py index 27ceb14b..e2b7af6b 100755 --- a/tests/TestSuite_iavf_fdir.py +++ b/tests/TestSuite_iavf_fdir.py @@ -8348,6 +8348,7 @@ class TestIAVFFdir(TestCase): create same rules on pf and vf, no conflict """ self.dut.kill_all() + self.setup_2pf_4vf_env() self.session_secondary = self.dut.new_session() self.session_third = self.dut.new_session() @@ -8499,6 +8500,7 @@ class TestIAVFFdir(TestCase): create same input set but different action rules on pf and vf, no conflict. """ self.dut.kill_all() + self.setup_2pf_4vf_env() self.session_secondary = self.dut.new_session() self.session_third = self.dut.new_session() @@ -8818,6 +8820,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+(?PE810-.*)", 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') @@ -8827,43 +8838,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): """