From patchwork Mon Oct 11 10:03:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiale, SongX" X-Patchwork-Id: 101003 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 2A8EAA034F; 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 2452640E0F; 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 37CF240E01 for ; Mon, 11 Oct 2021 11:50:13 +0200 (CEST) X-IronPort-AV: E=McAfee;i="6200,9189,10133"; a="313039390" X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="313039390" 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:12 -0700 X-IronPort-AV: E=Sophos;i="5.85,364,1624345200"; d="scan'208";a="490403728" 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:10 -0700 From: Jiale Song To: dts@dpdk.org Cc: Jiale Song Date: Mon, 11 Oct 2021 18:03:45 +0800 Message-Id: <1633946626-169097-1-git-send-email-songx.jiale@intel.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dts] [PATCH V2 1/2] tests_plan/iavf_fdir: replace rules with less consumption TCAM rule 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" 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 Signed-off-by: Jiale Song --- test_plans/iavf_fdir_test_plan.rst | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) mode change 100644 => 100755 test_plans/iavf_fdir_test_plan.rst diff --git a/test_plans/iavf_fdir_test_plan.rst b/test_plans/iavf_fdir_test_plan.rst old mode 100644 new mode 100755 index 62d0ad1..0c0ce16 --- a/test_plans/iavf_fdir_test_plan.rst +++ b/test_plans/iavf_fdir_test_plan.rst @@ -4697,20 +4697,20 @@ Subcase 1: 128 profiles 2. create 8 rules with different patterns on each port:: - flow create 0 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 - flow create 0 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 - flow create 0 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 - flow create 0 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 - flow create 0 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 - flow create 0 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 - flow create 0 ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end - flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 2 / end + flow create 0 ingress pattern eth / ipv4 / l2tpv3oip session_id is 1 / end actions queue index 1 / mark / end + flow create 0 ingress pattern eth / ipv6 / l2tpv3oip session_id is 2 / end actions queue index 1 / mark / end + flow create 0 ingress pattern eth / ipv4 / tcp / end actions queue index 2 / mark / end + flow create 0 ingress pattern eth / ipv6 / tcp / end actions queue index 2 / mark / end + flow create 0 ingress pattern eth / ipv4 / esp spi is 1 / end actions queue index 3 / mark / end + flow create 0 ingress pattern eth / ipv6 / esp spi is 2 / end actions queue index 3 / mark / end + flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end + flow create 0 ingress pattern eth / ipv6 / udp / pfcp s_field is 1 / end actions queue index 4 / end + created successfully on port 0-12, failed from rule 6 on port 13:: - testpmd> flow create 13 ingress pattern eth type is 0x8863 / end actions queue index 1 / mark id 1 / end - eth + testpmd> flow create 0 ingress pattern eth / ipv4 / udp / pfcp s_field is 0 / end actions queue index 4 / mark id 1 / end iavf_execute_vf_cmd(): No response or return failure (-5) for cmd 47 iavf_fdir_add(): fail to execute command OP_ADD_FDIR_FILTER iavf_flow_create(): Failed to create flow @@ -4739,6 +4739,7 @@ Subcase 1: 128 profiles profile 0 and profile 1 are default profile for specific packet. we design case with 2*100G card, so 110 profiles can be used for vf. if we use 4*25G card, only 94 profiles can be used for vf. + if card is chapman beach 100g*2, one pf port equals a general 100g*2 card,so 118 profiles can be used for vf 4. send matched packets to vf 12, the packets are redirected to the expected queue. From patchwork Mon Oct 11 10:03:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiale, SongX" X-Patchwork-Id: 101004 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 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): """