diff --git a/test_plans/pvp_share_lib_test_plan.rst b/test_plans/pvp_share_lib_test_plan.rst
index c5a3c9b8..53d85c03 100644
--- a/test_plans/pvp_share_lib_test_plan.rst
+++ b/test_plans/pvp_share_lib_test_plan.rst
@@ -37,46 +37,103 @@ Vhost/virtio-user pvp share lib test plan
 Description
 ===========
 
-The feature need compile dpdk as shared libraries, then application should use option ``-d`` to load the dynamic pmd that are built as shared libraries.
+The feature need compile dpdk as shared libraries, then application should use option ``-d``
+to load the dynamic pmd that are built as shared libraries.
+
+For more about dpdk-testpmd sample, please refer to the DPDK docments:
+https://doc.dpdk.org/guides/testpmd_app_ug/run_app.html
+
+For virtio-user vdev parameter, you can refer to the DPDK docments:
+https://doc.dpdk.org/guides/nics/virtio.html#virtio-paths-selection-and-usage.
+
+Prerequisites
+=============
+
+Topology
+--------
+Test flow: TG-->Vhost-user-->Virtio-user-->Vhost-user-->TG
+
+Hardware
+--------
+Supportted NICs: ALL
+
+Software
+--------
+Trex:http://trex-tgn.cisco.com/trex/release/v2.26.tar.gz
+
+General set up
+--------------
+1. Compile DPDK::
+
+	# CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dexamples=all --default-library=<dpdk build dir>
+	# ninja -C <dpdk build dir> -j 110
+
+2. Get the PCI device ID and DMA device ID of DUT, for example, 0000:18:00.0 is PCI device ID, 0000:00:04.0, 0000:00:04.1 is DMA device ID::
+
+	<dpdk dir># ./usertools/dpdk-devbind.py -s
+
+	Network devices using kernel driver
+	===================================
+	0000:18:00.0 'Device 159b' if=ens785f0 drv=ice unused=vfio-pci
+
+	DMA devices using kernel driver
+	===============================
+	0000:00:04.0 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
+	0000:00:04.1 'Sky Lake-E CBDMA Registers 2021' drv=ioatdma unused=vfio-pci
+
+Test case
+=========
+
+Common steps
+------------
+1. Bind 1 NIC port and CBDMA channels to vfio-pci::
+
+	<dpdk dir># ./usertools/dpdk-devbind.py -b vfio-pci <DUT port pci device id>
+	<dpdk dir># ./usertools/dpdk-devbind.py -b vfio-pci <DUT port DMA device id>
+
+	For example, bind 1 NIC port to vfio-pci::
+	<dpdk dir># ./usertools/dpdk-devbind.py -b vfio-pci 0000:00:04.0
 
 Test Case1: Vhost/virtio-user pvp share lib test with niantic
-=============================================================
+-------------------------------------------------------------
+This case use testpmd with ``-d librte_net_ixgbe.so`` option to load the dynamic pmd when launch vhost-user to test with niantic.
 
 1. Enable the shared lib in DPDK configure file::
 
-    CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dc_args='-DRTE_BUILD_SHARED_LIB=1' --default-library=shared x86_64-native-linuxapp-gcc
+	<dpdk dir># CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib -Dc_args='-DRTE_BUILD_SHARED_LIB=1' --default-library=shared x86_64-native-linuxapp-gcc
 
 2. Recompile dpdk code::
 
-    ninja -C x86_64-native-linuxapp-gcc -j 55
+	<dpdk dir># ninja -C x86_64-native-linuxapp-gcc -j 55
 
 3. Export shared lib files into host environment::
 
-    export LD_LIBRARY_PATH=/root/dpdk/x86_64-native-linuxapp-gcc/drivers:$LD_LIBRARY_PATH
+	export LD_LIBRARY_PATH=/root/dpdk/x86_64-native-linuxapp-gcc/drivers:$LD_LIBRARY_PATH
 
 4. Bind niantic port with vfio-pci, use option ``-d`` to load the dynamic pmd when launch vhost::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0x03 -n 4 -d librte_net_vhost.so.21.0 -d librte_net_i40e.so.21.0 -d librte_mempool_ring.so.21.0 \
-    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1' -- -i
-    testpmd>start
+	<dpdk dir># ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0x03 -n 4 -d librte_net_vhost.so.21.0 -d librte_net_ixgbe.so.21.0 -d librte_mempool_ring.so.21.0 \
+	--file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1' -- -i
+	testpmd> start
 
 5. Launch virtio-user::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x0c -n 4 -d librte_net_virtio.so.21.0 -d librte_mempool_ring.so.21.0 \
-    --no-pci --file-prefix=virtio  --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net -- -i
-    testpmd>start
+	<dpdk dir># ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0x0c -n 4 -d librte_net_virtio.so.21.0 -d librte_mempool_ring.so.21.0 \
+	--no-pci --file-prefix=virtio  --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net -- -i
+	testpmd> start
 
 6. Send traffic by packet generator, check the throughput with below command::
 
-    testpmd>show port stats all
+	testpmd> show port stats all
 
 Test Case2: Vhost/virtio-user pvp share lib test with fortville
-===============================================================
+---------------------------------------------------------------
+This case use testpmd with ``-d librte_net_i40e.so`` option to load the dynamic pmd when launch vhost-user to test with fortville_eagle|fortville_spirit|fortville_25g.
 
 Similar as Test Case1, all steps are similar except step 4:
 
 4. Bind fortville port with vfio-pci, use option ``-d`` to load the dynamic pmd when launch vhost::
 
-    ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0x03 -n 4 -d librte_net_vhost.so -d librte_net_i40e.so -d librte_mempool_ring.so \
-    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1' -- -i
-    testpmd>start
+	<dpdk dir># ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd  -c 0x03 -n 4 -d librte_net_vhost.so -d librte_net_i40e.so -d librte_mempool_ring.so \
+	--file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1' -- -i
+	testpmd> start
