From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 1946B1BBB0 for ; Wed, 4 Apr 2018 08:19:56 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Apr 2018 23:19:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,405,1517904000"; d="scan'208";a="43860748" Received: from unknown (HELO dpdk-fedora20.icx.intel.com) ([10.240.176.135]) by fmsmga001.fm.intel.com with ESMTP; 03 Apr 2018 23:19:54 -0700 From: "zhao,meijuan" To: dts@dpdk.org Cc: "zhao,meijuan" Date: Wed, 4 Apr 2018 14:21:10 +0800 Message-Id: <1522822870-110299-1-git-send-email-meijuanx.zhao@intel.com> X-Mailer: git-send-email 1.9.3 Subject: [dts] [PATCH V1] test_plan/vf macfilter : add dpdk pf + dpdk vf scenario 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: , X-List-Received-Date: Wed, 04 Apr 2018 06:19:57 -0000 add dpdk pf + dpdk vf scenario Signed-off-by: zhao,meijuan --- test_plans/vf_macfilter_test_plan.rst | 173 ++++++++++++++++++++++++++++++++++ 1 file changed, 173 insertions(+) diff --git a/test_plans/vf_macfilter_test_plan.rst b/test_plans/vf_macfilter_test_plan.rst index 221c05e..bf7bd4e 100644 --- a/test_plans/vf_macfilter_test_plan.rst +++ b/test_plans/vf_macfilter_test_plan.rst @@ -199,3 +199,176 @@ Test Case 2: test_kernel_2pf_2vf_1vm_mac_add_filter 8. Use scapy to send 100 random packets with a wrong MAC to VF0, verify the packets can't be received by one VF and can be forward to another VF correctly. + + +Test Case 3: test_dpdk_2pf_2vf_1vm_iplink_macfilter +===================================================== + +1. Get the pci device id of DUT, for example:: + + ./dpdk_nic_bind.py --st + + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=i40e unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=i40e unused= + + usertools/dpdk-devbind.py --force --bind=igb_uio 0000:81:00.0 0000:81:00.0 + +2. Create 2 VFs from 2 PFs, and set the VF MAC address at PF0:: + + echo 1 > /sys/bus/pci/devices/0000\:81\:00.0/max_vfs + echo 1 > /sys/bus/pci/devices/0000\:81\:00.1/max_vfs + + ./dpdk_nic_bind.py --st + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=igb_uio unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=igb_uio unused= + 0000:81:02.0 'XL710/X710 Virtual Function' unused= + 0000:81:0a.0 'XL710/X710 Virtual Function' unused= + + +3. Detach VFs from the host, bind them to pci-stub driver:: + + /sbin/modprobe pci-stub + + using `lspci -nn|grep -i ethernet` got VF device id, for example "8086 154c", + + echo "8086 154c" > /sys/bus/pci/drivers/pci-stub/new_id + echo 0000:81:02.0 > /sys/bus/pci/devices/0000:08:02.0/driver/unbind + echo 0000:81:02.0 > /sys/bus/pci/drivers/pci-stub/bind + + echo "8086 154c" > /sys/bus/pci/drivers/pci-stub/new_id + echo 0000:81:0a.0 > /sys/bus/pci/devices/0000:08:0a.0/driver/unbind + echo 0000:81:0a.0 > /sys/bus/pci/drivers/pci-stub/bind + + or using the following more easy way:: + + virsh nodedev-detach pci_0000_81_02_0; + virsh nodedev-detach pci_0000_81_0a_0; + + ./dpdk_nic_bind.py --st + + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=igb_uio unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=igb_uio unused= + 0000:81:02.0 'XL710/X710 Virtual Function' if= drv=pci-stub unused= + 0000:81:0a.0 'XL710/X710 Virtual Function' if= drv=pci-stub unused= + + it can be seen that VFs 81:02.0 & 81:0a.0 's driver is pci-stub. +4. on host start testpmd + + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6000000006 -n 4 -b 0000:81:02.0 -b 0000:81:0a.0 -- -i + testpmd > set vf mac addr 0 0 00:12:34:56:78:01 + +5. Passthrough VFs 81:02.0 & 81:0a.0 to vm0, and start vm0:: + + /usr/bin/qemu-system-x86_64 -name vm0 -enable-kvm \ + -cpu host -smp 4 -m 2048 -drive file=/home/image/sriov-fc20-1.img -vnc :1 \ + -device pci-assign,host=81:02.0,id=pt_0 \ + -device pci-assign,host=81:0a.0,id=pt_1 + +6. Login vm0, got VFs pci device id in vm0, assume they are 00:06.0 & 00:07.0, + bind them to igb_uio driver, and then start testpmd, enable CRC strip, + disable promisc mode,set it in mac forward mode:: + + ./tools/dpdk_nic_bind.py --bind=igb_uio 00:06.0 00:07.0 + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x0f -n 4 -w 00:06.0 -w 00:07.0 -- -i --portmask=0x3 + testpmd> set promisc all off + testpmd> set fwd mac + testpmd> start + +7. Use scapy to send 100 random packets with ip link set MAC to VF, verify the + packets can be received by one VF and can be forward to another VF + correctly. + +8. Also use scapy to send 100 random packets with a wrong MAC to VF, verify + the packets can't be received by one VF and can be forward to another VF + correctly. + +Test Case 4: test_dpdk_2pf_2vf_1vm_mac_add_filter +=================================================== + +1. Get the pci device id of DUT, for example:: + + ./dpdk_nic_bind.py --st + + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=i40e unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=i40e unused= + + usertools/dpdk-devbind.py --force --bind=igb_uio 0000:81:00.0 0000:81:00.0 + +2. Create 2 VFs from 2 PFs, and don't set the VF MAC address at PF0:: + + + echo 1 > /sys/bus/pci/devices/0000\:81\:00.0/max_vfs + echo 1 > /sys/bus/pci/devices/0000\:81\:00.1/max_vfs + + ./dpdk_nic_bind.py --st + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=igb_uio unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=igb_uio unused= + 0000:81:02.0 'XL710/X710 Virtual Function' unused= + 0000:81:0a.0 'XL710/X710 Virtual Function' unused= + +3. Detach VFs from the host, bind them to pci-stub driver:: + + /sbin/modprobe pci-stub + + using `lspci -nn|grep -i ethernet` to get VF device id, for example "8086 154c", + + echo "8086 154c" > /sys/bus/pci/drivers/pci-stub/new_id + echo 0000:81:02.0 > /sys/bus/pci/devices/0000:08:02.0/driver/unbind + echo 0000:81:02.0 > /sys/bus/pci/drivers/pci-stub/bind + + echo "8086 154c" > /sys/bus/pci/drivers/pci-stub/new_id + echo 0000:81:0a.0 > /sys/bus/pci/devices/0000:08:0a.0/driver/unbind + echo 0000:81:0a.0 > /sys/bus/pci/drivers/pci-stub/bind + + or using the following more easy way:: + + virsh nodedev-detach pci_0000_81_02_0; + virsh nodedev-detach pci_0000_81_0a_0; + + ./dpdk_nic_bind.py --st + + 0000:81:00.0 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f0 drv=igb_uio unused= + 0000:81:00.1 'Ethernet Controller X710 for 10GbE SFP+' if=ens259f1 drv=igb_uio unused= + 0000:81:02.0 'XL710/X710 Virtual Function' if= drv=pci-stub unused= + 0000:81:0a.0 'XL710/X710 Virtual Function' if= drv=pci-stub unused= + + it can be seen that VFs 81:02.0 & 81:0a.0 's driver is pci-stub. + +4. On host start testpmd + + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6000000006 -n 4 -b 0000:81:02.0 -b 0000:81:0a.0 -- -i + +5. Passthrough VFs 81:02.0 & 81:0a.0 to vm0, and start vm0:: + + /usr/bin/qemu-system-x86_64 -name vm0 -enable-kvm \ + -cpu host -smp 4 -m 2048 -drive file=/home/image/sriov-fc20-1.img -vnc :1 \ + -device pci-assign,host=81:02.0,id=pt_0 \ + -device pci-assign,host=81:0a.0,id=pt_1 + +6. login vm0, got VFs pci device id in vm0, assume they are 00:06.0 & 00:07.0, + bind them to igb_uio driver, and then start testpmd, enable CRC strip on + VF, disable promisc mode, add a new MAC to VF0 and then start:: + + ./tools/dpdk_nic_bind.py --bind=igb_uio 00:06.0 00:07.0 + ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 1 -- -i + testpmd> set promisc all off + testpmd> mac_addr add 0 00:11:22:33:44:55 + testpmd> set fwd mac + testpmd> start + + Note: In Jan, 2016, i40e doesn't support mac_addr add operation, so the + case will be failed for FVL/Fort park NICs. + +7. Use scapy to send 100 random packets with current VF0's MAC, verify the + packets can be received by one VF and can be forward to another VF + correctly. + +8. Use scapy to send 100 random packets with new added VF0's MAC, verify the + packets can be received by one VF and can be forward to another VF + correctly. + +9. Use scapy to send 100 random packets with a wrong MAC to VF0, verify the + packets can't be received by one VF and can be forward to another VF + correctly. + + -- 1.9.3