@@ -1046,9 +1046,9 @@ ICE DCF enable device reset API
Description
===========
-DCF PMD need to support rte_eth_dev_reset.The reason is that when a DCF instance be killed, all the flow rules still exist in hardware. when DCF gets to reconnect,
-It has already lost the flow context, and if the application wants to create new rules, they may fail because FW reports that the rules already exist.The current
-workaround assumes that the user can turn off / turn on VF trust mode, so kernel PF will reset DCF by removing all old rules.The rte_eth_dev_reset API provides
+DCF PMD need to support rte_eth_dev_reset.The reason is that when a DCF instance be killed, all the flow rules still exist in hardware. when DCF gets to reconnect,
+It has already lost the flow context, and if the application wants to create new rules, they may fail because FW reports that the rules already exist.The current
+workaround assumes that the user can turn off / turn on VF trust mode, so kernel PF will reset DCF by removing all old rules.The rte_eth_dev_reset API provides
a more elegant way for the application to reset DCF through the command "port reset all" when reconnecting.
Prerequisites
@@ -1070,7 +1070,7 @@ General Set Up
# CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static <dpdk build dir>
# ninja -C <dpdk build dir> -j 110
-2. Get the pci device id and interface of DUT and tester.
+2. Get the pci device id and interface of DUT and tester.
For example, 0000:3b:00.0 and 0000:af:00.0 is pci device id,
ens785f0 and ens260f0 is interface::
@@ -1097,7 +1097,7 @@ General Set Up
6. Bind the DUT port to dpdk::
<dpdk dir># ./usertools/dpdk-devbind.py -b vfio-pci <DUT port pci device id>
-
+
Test case
=========
@@ -1107,26 +1107,26 @@ The common steps launch two testpmds and kill DCF process, then relaunch two tes
1. Launch the userland ``testpmd`` application on DUT as follows::
- <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
+ <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
-..note::
+..note::
For <EAL options>, you can use "-c 0x6 -n 4", you can also refer to testpmd doc for other setings.
For <DUT port pci device id>, you can use "0000:3b:01.0,cap=dcf,representor=vf[1] --file-prefix=dcf" for this test plan.
-
+
2. Launch another ``testpmd`` application on the VF1 of DUT as follows::
- <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
+ <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
-..note::
+..note::
For <EAL options>, you can use "-c 0x18 -n 4", you can also refer to testpmd doc for other setings.
- For this test plan, you can use "0000:3b:01.1 --file-prefix=vf" for this test plan.
+ For this test plan, you can use "0000:3b:01.1 --file-prefix=vf" for this test plan.
3. Set verbose in VF testpmd::
-
+
testpmd> set verbose 1
-
+
4. Set fwd engine and start in VF testpmd::
testpmd> set fwd mac
@@ -1151,7 +1151,7 @@ The common steps launch two testpmds and kill DCF process, then relaunch two tes
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1181,14 +1181,14 @@ Test Steps
~~~~~~~~~~
1. Check the process ID and kill DCF process::
- # ps -ef |grep testpmd
+ # ps -ef |grep testpmd
# kill -9 #####
2. Relaunch the userland ``testpmd`` application on DUT as follows::
- <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
+ <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
-..note::
+..note::
For <EAL options>, you can use "-c 0x6 -n 4", you can also refer to testpmd doc for other setings.
For <DUT port pci device id>, you can use "0000:3b:01.0,cap=dcf,representor=vf[1] --file-prefix=dcf" for this test plan.
@@ -1233,7 +1233,7 @@ the VF1 of DUT::
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1260,7 +1260,7 @@ Test Steps
# echo 1 > /sys/bus/pci/devices/0000:3b:01.0/reset
2. Reset port in DCF testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
@@ -1287,7 +1287,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1314,8 +1314,8 @@ Test Steps
# echo 1 > /sys/bus/pci/devices/0000:3b:01.0/reset
2. Detach and reset port in DCF testpmd::
-
- testpmd> stop
+
+ testpmd> stop
testpmd> port stop 0
testpmd> port detach 0
testpmd> port attach 3b:01.0,cap=dcf
@@ -1343,7 +1343,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1357,7 +1357,7 @@ the VF1 of DUT::
testpmd> port 0/queue 0: received 1 packets
src=00:11:22:33:44:55 - dst=C6:44:32:0A:EC:E1 - type=0x0800 - length=98 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0
- ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+ ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
Test Case 4: two_testpmd_dcf_reset_mtu
--------------------------------------
@@ -1370,14 +1370,14 @@ Test Steps
# ifconfig ens785f0 mtu 3000
2. Reset port in DCF testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
testpmd> port start all
testpmd> start
testpmd> flow list 0
-
+
3. Validate a switch rule to VF1 in DCF testpmd::
testpmd> flow validate 0 priority 0 ingress pattern eth / ipv4 src is <ipv4 src> dst is <ipv4 dst> / end actions represented_port ethdev_port_id 1 / end
@@ -1397,7 +1397,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1412,7 +1412,7 @@ the VF1 of DUT::
testpmd> port 0/queue 0: received 1 packets
src=00:11:22:33:44:55 - dst=C6:44:32:0A:EC:E1 - type=0x0800 - length=98 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0
ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-
+
Test Case 5: two_testpmd_dcf_reset_mac
--------------------------------------
The test case resets DCF by resetting mac addr, and DCF should clean up all old rules.
@@ -1424,7 +1424,7 @@ Test Steps
# ip link set ens785f0 vf 0 mac 00:01:02:03:04:05
2. Reset port in DCF testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
@@ -1451,7 +1451,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1473,17 +1473,17 @@ The common steps launch one testpmd and kill DCF process, then relaunch one test
1. Launch the userland ``testpmd`` application on DUT as follows::
- <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
+ <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
-..note::
+..note::
For <EAL options>, you can use "-c 0x6 -n 4", you can also refer to testpmd doc for other setings.
For <DUT port pci device id>, you can use"-a 3b:01.0,cap=dcf,representor=vf[1] -a 3b:01.1 --file-prefix=dcf" for this test plan.
2. Set verbose::
-
+
testpmd> set verbose 1
-
+
3. Set fwd engine and start::
testpmd> set fwd mac
@@ -1508,7 +1508,7 @@ The common steps launch one testpmd and kill DCF process, then relaunch one test
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1532,22 +1532,22 @@ Test Steps
~~~~~~~~~~
1. Check the process ID and kill DCF process::
- # ps -ef |grep testpmd
+ # ps -ef |grep testpmd
# kill -9 #####
2. Relaunch the userland ``testpmd`` application on DUT as follows::
- <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
+ <dpdk build dir>/app/dpdk-testpmd <EAL options> -a <DUT port pci device id> -- -i
-..note::
+..note::
For <EAL options>, you can use "-c 0x6 -n 4", you can also refer to testpmd doc for other setings.
For <DUT port pci device id>, you can use"-a 3b:01.0,cap=dcf,representor=vf[1] -a 3b:01.1 --file-prefix=dcf" for this test plan.
3. Set verbose::
-
+
testpmd> set verbose 1
-
+
4. Set fwd engine and start::
testpmd> set fwd mac
@@ -1562,10 +1562,10 @@ Tester::
DUT::
- testpmd>
+ testpmd>
6. Reset port in testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
@@ -1591,7 +1591,7 @@ DUT::
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1605,7 +1605,7 @@ DUT::
testpmd> port 1/queue 0: received 1 packets
src=00:11:22:33:44:55 - dst=C6:44:32:0A:EC:E1 - type=0x0800 - length=98 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0
- ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+ ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
Test Case 7: one_testpmd_dcf_reset_device
-----------------------------------------
@@ -1618,7 +1618,7 @@ Test Steps
# echo 1 > /sys/bus/pci/devices/0000:3b:01.0/reset
2. Reset port in testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
@@ -1645,7 +1645,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1672,8 +1672,8 @@ Test Steps
# echo 1 > /sys/bus/pci/devices/0000:3b:01.0/reset
2. Detach and reset port in DCF testpmd::
-
- testpmd> stop
+
+ testpmd> stop
testpmd> port stop 0
testpmd> port detach 0
testpmd> port attach 3b:01.0,cap=dcf,representor=vf[1]
@@ -1701,7 +1701,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1715,7 +1715,7 @@ DUT::
testpmd> port 1/queue 0: received 1 packets
src=00:11:22:33:44:55 - dst=C6:44:32:0A:EC:E1 - type=0x0800 - length=98 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0
- ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
+ ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
Test Case 9: one_testpmd_dcf_reset_mtu
--------------------------------------
@@ -1728,13 +1728,13 @@ Test Steps
# ifconfig ens785f0 mtu 3000
2. Reset port in DCF testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
testpmd> port start all
testpmd> start
- testpmd> flow list 0
+ testpmd> flow list 0
3. Validate a switch rule to VF1::
@@ -1755,7 +1755,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1782,7 +1782,7 @@ Test Steps
# ip link set ens785f0 vf 0 mac 00:01:02:03:04:05
2. Reset port in DCF testpmd::
-
+
testpmd> stop
testpmd> port stop all
testpmd> port reset all
@@ -1809,7 +1809,7 @@ Test Steps
Check the flow list::
testpmd> flow list 0
-
+
ID Group Prio Attr Rule
0 0 0 i-- ETH IPV4 => VF
@@ -1824,5 +1824,3 @@ DUT::
testpmd> port 1/queue 0: received 1 packets
src=00:11:22:33:44:55 - dst=C6:44:32:0A:EC:E1 - type=0x0800 - length=98 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_NONFRAG - sw ptype: L2_ETHER L3_IPV4 - l2_len=14 - l3_len=20 - Receive queue=0x0
ol_flags: RTE_MBUF_F_RX_L4_CKSUM_GOOD RTE_MBUF_F_RX_IP_CKSUM_GOOD RTE_MBUF_F_RX_OUTER_L4_CKSUM_UNKNOWN
-
-