From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 539BFA0C43; Mon, 11 Oct 2021 11:50:15 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4AAED410E6; Mon, 11 Oct 2021 11:50:15 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mails.dpdk.org (Postfix) with ESMTP id D1BCD40E01 for ; Mon, 11 Oct 2021 11:50:13 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10133"; a="313039396" X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="313039396" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 02:50:13 -0700 X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="490403754" Received: from unknown (HELO dpdk-zhaohy-t.sh.intel.com) ([10.240.183.68]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Oct 2021 02:50:12 -0700 From: Jiale Song To: dts@dpdk.org Cc: Jiale Song Date: Mon, 11 Oct 2021 18:03:46 +0800 Message-Id: <1633946626-169097-2-git-send-email-songx.jiale@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1633946626-169097-1-git-send-email-songx.jiale@intel.com> References: <1633946626-169097-1-git-send-email-songx.jiale@intel.com> Subject: [dts] [PATCH V2 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 | 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+(?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') @@ -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