[V1,2/3] test_plans/mev_cpfl_hairpin_queue: mev cpfl support hairpin queue

Message ID 20230716134416.3220611-3-yaqi.tang@intel.com (mailing list archive)
State New
Headers
Series MEV CPFL support hairpin queue |

Commit Message

Yaqi Tang July 16, 2023, 1:44 p.m. UTC
  Enabling Port2Port forwarding as hairpin queue implementation in dpdk cpfl PMD.

Signed-off-by: Yaqi Tang <yaqi.tang@intel.com>
---
 .../mev_cpfl_hairpin_queue_test_plan.rst      | 84 +++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 test_plans/mev_cpfl_hairpin_queue_test_plan.rst
  

Patch

diff --git a/test_plans/mev_cpfl_hairpin_queue_test_plan.rst b/test_plans/mev_cpfl_hairpin_queue_test_plan.rst
new file mode 100644
index 00000000..62044776
--- /dev/null
+++ b/test_plans/mev_cpfl_hairpin_queue_test_plan.rst
@@ -0,0 +1,84 @@ 
+==============================
+MEV CPFL Support Hairpin Queue
+==============================
+
+Description
+===========
+Enabling Port2Port forwarding as hairpin queue implementation in dpdk cpfl PMD.
+launch testpmd not start forwarding, multi hairpin queues receive and transmit packet;
+start forwarding, multi data queues receive and transmit packet;
+
+Prerequisites
+=============
+1. CI release >= MEV 0.81(3921)
+
+2. During IMC boot, press 'N' when you see 'start init app and auxiliary script [Y/N]'.
+   cd /etc/dpcp
+   cp cfg/cp_init_use_case_2.cfg ./cp_init.cfg
+   cp cp_init.cfg cp_init.cfg.bak
+   sed -i 's/pf_allowed_to_create_p2p = 5;/pf_allowed_to_create_p2p = 8;/g' cp_init.cfg 
+   sed -i 's/cpf_host = 4;/cpf_host = 0;/g' cp_init.cfg
+
+3. Update customized package
+   Copy package to /etc/dpcp/package/ and rename with default_pkg.pkg.
+   cd /etc/dpcp/package/
+   rm default_pkg.pkg
+   ssh-keygen -f "/root/.ssh/known_hosts" -R "100.0.0.100"
+   scp default_pkg.pkg root@100.0.0.100:/etc/dpcp/package/
+
+4. Run /etc/init.d/run_default_init_app
+
+Test Case
+=========
+Common Steps
+------------
+1. Launch testpmd but not start forwarding.
+
+2. Configure port to receive packets on IMC::
+    cli_client --query --config --verbose
+    devmem 0x202920C100 64 0x804
+
+3. Create rule on IMC::
+    vi rule_1.txt
+    opcode=0x1303 prof_id=0x34 sub_prof_id=0x0 cookie=0xa2b87 key=0x18,0x0,00,00,00,00,0xde,0xad,0xbe,0xef,0x20,0x24,0x0,0x0,0x0,0x0,00,00,00,00,00,00,0xa,0x2,0x1d,0x64,00,00,00,00,00,00,00,00,00,00,00,00,
+    0xa,0x2,0x1d,0x2,00,00,00,00,00,00,00,00,00,00,00,00 act=set_vsi{act_val=0 val_type=2 dst_pe=0 slot=0x0} act=set_q{qnum=0x151 no_implicit_vsi=1 prec=5} act=count{counter_id=0x10 slot=0x0 prec=0x3}
+
+    cli_client -x -f rule_1.txt
+
+4. Send match packet from tester and check tester can receive the transmit packet::
+    sendp([Ether(dst="de:ad:be:ef:20:24")/IP(src="10.2.29.100", dst="10.2.29.2")/UDP()],iface="ens21f0",count=1)
+
+    tcpdump -i ens21f0 -env 
+
+5. Start testpmd and send mismatch packets, check testpmd can receive and transmit packets::
+    testpmd>start
+    testpmd>set verbose 1
+    testpmd>show port stats all
+    testpmd>stop
+    testpmd>quit
+
+    Mismatch pkts::
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IP(src="192.168.0.2",dst="192.168.0.3")/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IPv6(src="2001::2",dst="2001::3")/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IP(src="10.2.28.12", dst="10.2.28.22")/UDP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IP(src="10.2.28.12", dst="10.2.28.22")/TCP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IP(src="10.2.28.12", dst="10.2.28.22")/SCTP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IPv6(src="2001::2",dst="2001::3")/UDP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IPv6(src="2001::2",dst="2001::3")/TCP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+    sendp([Ether(src="00:11:22:33:44:55", dst="02:70:80:C6:67:CE")/IPv6(src="2001::2",dst="2001::3")/SCTP(sport=1026, dport=1027)/("X"*480)], iface="enp24s0f0")
+
+Test case 1: single_data_hairpin_queue
+--------------------------------------
+./dpdk-testpmd -l 1-2 -n 4 -a af:00.6,vport=0 -- -i --rxq=1 --txq=1 --hairpinq=1 --hairpin-mode=0
+
+Test case 2: multi_data_queues_single_hairpin_queue
+---------------------------------------------------
+./dpdk-testpmd -l 1-2 -n 4 -a ca:00.6,vport=0 -- -i --rxq=16 --txq=16 --hairpinq=1 --hairpin-mode=0
+
+Test case 3: single_data_queue_multi_hairpin_queues
+---------------------------------------------------
+./dpdk-testpmd -l 1-2 -n 4 -a ca:00.6,vport=0 -- -i --rxq=1 --txq=1 --hairpinq=16 --hairpin-mode=0
+
+Test case 4: multi_data_hairpin_queues
+--------------------------------------
+./dpdk-testpmd -l 1-2 -n 4 -a ca:00.6,vport=0 -- -i --rxq=16 --txq=16 --hairpinq=16 --hairpin-mode=0