From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 55635A0577; Tue, 7 Apr 2020 07:32:40 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4A6141BE80; Tue, 7 Apr 2020 07:32:40 +0200 (CEST) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 154142BE9 for ; Tue, 7 Apr 2020 07:32:38 +0200 (CEST) IronPort-SDR: YyJOvy/fLmo2E0Sli/f9OYgSekvJjKJuARbGHCBHH45W4/eIe8wBbNtHSjpQq6YnXbKVLlRc3q 00fOqz9TyOSg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2020 22:32:38 -0700 IronPort-SDR: 13xFBdQeXBK30d1ZtEjkhpphQbPImJjbigP8O9aFcZW7Z1mTMGvb64WbczdDpIkcA9dF3/n1pq 7HeqsEy5kUTA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,353,1580803200"; d="scan'208";a="361439637" Received: from intel.sh.intel.com ([10.239.255.136]) by fmsmga001.fm.intel.com with ESMTP; 06 Apr 2020 22:32:37 -0700 From: Lunyuan Cui To: dts@dpdk.org Cc: Lunyuan Cui Date: Tue, 7 Apr 2020 05:25:43 +0000 Message-Id: <20200407052544.28572-2-lunyuanx.cui@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200407052544.28572-1-lunyuanx.cui@intel.com> References: <20200407052544.28572-1-lunyuanx.cui@intel.com> Subject: [dts] [PATCH V2 1/2] test_plans/generic_flow_api: add l2 mac addr fdir filter test plan X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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" FVL enable src MAC address and dst MAC address as FDIR's input set for ipv4-other, ipv4-udp and ipv4-tcp. Add test plan for it. Signed-off-by: Lunyuan Cui --- test_plans/generic_flow_api_test_plan.rst | 506 ++++++++++++++++++++++ 1 file changed, 506 insertions(+) diff --git a/test_plans/generic_flow_api_test_plan.rst b/test_plans/generic_flow_api_test_plan.rst index 380d9e8..6e9691a 100644 --- a/test_plans/generic_flow_api_test_plan.rst +++ b/test_plans/generic_flow_api_test_plan.rst @@ -1423,3 +1423,509 @@ Test case: igb flexbytes testpmd> flow list 0 testpmd> flow flush 0 testpmd> flow list 0 + +Test case: Fortville fdir for l2 mac +==================================== + Prerequisites: + + bind the PF to dpdk driver:: + ./usertools/dpdk-devbind.py -b igb_uio 0000:81:00.0 + + launch testpmd:: + ./x86_64-native-linuxapp-gcc/app/testpmd -l 0-3 -n 4 -w 0000:81:00.0 -- -i --rxq=4 --txq=4 + +1. basic test for ipv4-other + + 1) validate a rule:: + testpmd> flow validate 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 2) create a rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 3) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 4) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 5) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 6) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 7) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 8) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 9) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 10) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 11) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 12) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 13) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 14) destory the rule:: + testpmd> flow destroy 0 rule 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 15) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + +2. basic test for ipv4-udp + + 1) validate a rule:: + testpmd> flow validate 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / udp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 2) create a rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / udp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 3) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 4) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 5) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 6) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / udp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 7) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / udp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 8) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 9) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 10) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 11) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / udp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 12) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / udp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 13) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 14) destory the rule:: + testpmd> flow destroy 0 rule 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/UDP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 15) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + +3. basic test for ipv4-tcp + + 1) validate a rule:: + testpmd> flow validate 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / tcp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 2) create a rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / tcp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 3) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 4) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 5) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 6) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / tcp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 7) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / tcp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 8) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 9) flush the rule:: + testpmd> flow flush 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 10) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + + 11) validate a rule:: + testpmd> flow validate 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / tcp / end actions mark id 1 / rss / end + + Verify the commend can validete:: + Flow rule validated + + 12) create a rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / tcp / end actions mark id 1 / rss / end + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + send packets not match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + sendp(Ether(src='88:88:88:88:88:88',dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 13) list the rule:: + testpmd> flow list 0 + + Verify there are one rule. + + 14) destory the rule:: + testpmd> flow destroy 0 rule 0 + + send packets match rule 0:: + sendp(Ether(src='99:99:99:99:99:99',dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/TCP()/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 15) list the rule:: + testpmd> flow list 0 + + Verify there are no rule. + +4. complex test + + 1) create rules and destory the first:: + create three rules:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 22:22:22:22:22:22 / ipv4 / end actions mark id 2 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 33:33:33:33:33:33 / ipv4 / end actions mark id 3 / rss / end + + list the rules:: + testpmd> flow list 0 + + Verify there are three rules. + + send packets:: + sendp(Ether(dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='33:33:33:33:33:33')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + destory the first rule:: + testpmd> flow destroy 0 rule 0 + + list the rules:: + testpmd> flow list 0 + + Verify there are rule 1 and rule 2. + + send packets match rule 0:: + sendp(Ether(dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + send packets match rule 1 and rule 2:: + sendp(Ether(dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='33:33:33:33:33:33')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + flush rules:: + testpmd> flow flush 0 + + send packets match rule 0, rule 1 and rule 2:: + sendp(Ether(dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='33:33:33:33:33:33')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + 2) create rules and destory the second:: + create three rules:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 22:22:22:22:22:22 / ipv4 / end actions mark id 2 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 33:33:33:33:33:33 / ipv4 / end actions mark id 3 / rss / end + + list the rules:: + testpmd> flow list 0 + + Verify there are three rules. + + destory the second rule:: + testpmd> flow destroy 0 rule 1 + + list the rules:: + testpmd> flow list 0 + + Verify there are rule 0 and rule 2. + + send packets match rule 1:: + sendp(Ether(dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + send packets match rule 0 and rule 2:: + sendp(Ether(dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='33:33:33:33:33:33')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + + flush rules:: + testpmd> flow flush 0 + + 3) create rules and destory the third:: + create three rules:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 22:22:22:22:22:22 / ipv4 / end actions mark id 2 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 33:33:33:33:33:33 / ipv4 / end actions mark id 3 / rss / end + + list the rules:: + testpmd> flow list 0 + + Verify there are three rules. + + destory the second rule:: + testpmd> flow destroy 0 rule 2 + + list the rules:: + testpmd> flow list 0 + + Verify there are rule 0 and rule 1. + + send packets match rule 2:: + sendp(Ether(dst='33:33:33:33:33:33')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can not mark. + + send packets match rule 0 and rule 1:: + sendp(Ether(dst='11:11:11:11:11:11')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + sendp(Ether(dst='22:22:22:22:22:22')/IP(src=RandIP(),dst='2.2.2.5')/"Hello!0",iface="enp129s0f1") + + Verify all packets can rss and mark. + +5. negative test + + 1) ip in command:: + creat rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 dst is 1.1.1.1 / end actions mark id 2 / rss / end + Verify rule can not be created. + + 2) udp in command:: + creat rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / udp dst is 111 / end actions mark id 2 / rss / end + Verify rule can not be created. + + 3) tcp in command:: + creat rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / tcp dst is 111 / end actions mark id 2 / rss / end + Verify rule can not be created. + + 4) kinds rule conflict:: + creat rule:: + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 3 / rss / end + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / end actions mark id 1 / rss / end + Verify second rule can not be created. + + flush rules:: + testpmd> flow flush 0 + + creat rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 / ipv4 / end actions mark id 1 / rss / end + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + Verify second rule can not be created. + + flush rules:: + testpmd> flow flush 0 + + creat rule:: + testpmd> flow create 0 ingress pattern eth src is 99:99:99:99:99:99 dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 1 / rss / end + testpmd> flow create 0 ingress pattern eth dst is 11:11:11:11:11:11 / ipv4 / end actions mark id 3 / rss / end + Verify second rule can not be created. -- 2.17.1