summaryrefslogtreecommitdiff
path: root/test_plans
diff options
context:
space:
mode:
authorJohn McNamara <john.mcnamara@intel.com>2017-06-14 19:07:25 +0100
committerMarvin Liu <yong.liu@intel.com>2017-07-26 21:40:55 +0800
commit940cd96abef87915099c30c6ecb9e02be8096ffc (patch)
tree99b1a763476cdc62008160494b81e0427f913a18 /test_plans
parent1413f9a3ba21ed1ceaa87f208d502530edcd15d4 (diff)
fix sphinx docs for some of the test plans
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Diffstat (limited to 'test_plans')
-rw-r--r--test_plans/index.rst1
-rw-r--r--test_plans/interrupt_pmd_test_plan.rst78
-rw-r--r--test_plans/vf_interrupt_pmd_test_plan.rst160
3 files changed, 142 insertions, 97 deletions
diff --git a/test_plans/index.rst b/test_plans/index.rst
index 73edba8..d3d28a8 100644
--- a/test_plans/index.rst
+++ b/test_plans/index.rst
@@ -92,6 +92,7 @@ The following are the test plans for the DPDK DTS automated test system.
veb_switch_test_plan
vf_daemon_test_plan
vf_jumboframe_test_plan
+ vf_interrupt_pmd_test_plan
vf_macfilter_test_plan
vf_offload_test_plan
vf_packet_rxtx_test_plan
diff --git a/test_plans/interrupt_pmd_test_plan.rst b/test_plans/interrupt_pmd_test_plan.rst
index 7503283..8834e5f 100644
--- a/test_plans/interrupt_pmd_test_plan.rst
+++ b/test_plans/interrupt_pmd_test_plan.rst
@@ -29,54 +29,64 @@
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF TH
-=====================
-One-shot Rx Interrupt
-=====================
-One-shot Rx interrupt feature will split rx interrupt handling from other
-interrupts like LSC interrupt. It implemented one handling mechanism to
+===========================
+One-shot Rx Interrupt Tests
+===========================
+
+One-shot Rx interrupt feature will split rx interrupt handling from other
+interrupts like LSC interrupt. It implemented one handling mechanism to
eliminate non-deterministic DPDK polling thread wakeup latency.
VFIO' multiple interrupt vectors support mechanism to enable multiple event fds
serving per Rx queue interrupt handling.
-UIO has limited interrupt support, specifically it only support a single
-interrupt vector, which is not suitable for enabling multi queues Rx/Tx
+UIO has limited interrupt support, specifically it only support a single
+interrupt vector, which is not suitable for enabling multi queues Rx/Tx
interrupt.
Prerequisites
=============
+
Each of the 10Gb Ethernet* ports of the DUT is directly connected in
full-duplex to a different port of the peer traffic generator.
Assume PF port PCI addresses are 0000:08:00.0 and 0000:08:00.1,
- their Interfaces name are p786p1 and p786p2.
+their Interfaces name are p786p1 and p786p2.
Assume generated VF PCI address will be 0000:08:10.0, 0000:08:10.1.
-Iommu pass through feature has been enabled in kernel.
- intel_iommu=on iommu=pt
+Iommu pass through feature has been enabled in kernel::
+
+ intel_iommu=on iommu=pt
Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d
in bios. When used vfio, requested to insmod two drivers vfio and vfio-pci.
-
+
Test Case1: PF interrupt pmd with different queue
=================================================
+
Run l3fwd-power with one queue per port::
- l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
-Send one packet to Port0 and Port1, check that thread on core1 and core2
-waked up:
- L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
- L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
-
+ l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
+
+Send one packet to Port0 and Port1, check that thread on core1 and core2
+waked up::
+
+
+ L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
+ L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
+
Check the packet has been normally forwarded.
-After the packet forwarded, thread on core1 and core 2 will return to sleep.
- L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
- L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
+After the packet forwarded, thread on core1 and core 2 will return to sleep::
+
+
+ L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
+ L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
Send packet flows to Port0 and Port1, check that thread on core1 and core2 will
-keep up awake.
+keep up awake.
Run l3fwd-power with random number queue per port, if is 4::
+
l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="0,0,0),(0,1,1),\
(0,2,2),(0,3,3),(0,4,4)"
@@ -86,6 +96,7 @@ Send packet flows to Port0 and Port1, check that thread on core1 and core2 will
keep up awake.
Run l3fwd-power with 32 queues per port::
+
l3fwd-power -c ffffffff -n 4 -- -p 0x3 -P --config="(0,0,0),(0,1,1),\
(0,2,2),(0,3,3),(0,4,4),(0,5,5),(0,6,6),(0,7,7),(0,8,8),
(0,9,9),(0,10,10),(0,11,11),(0,12,12),(0,13,13),(0,14,14),\
@@ -93,38 +104,41 @@ Run l3fwd-power with 32 queues per port::
(1,0,16),(1,1,17),(1,2,18),(1,3,19),(1,4,20),(1,5,21),(1,6,22),\
(1,7,23),(1,8,24),(1,9,25),(1,10,26),(1,11,27),(1,12,28),\
(1,13,29),(1,14,30),\(1,15,31)"
+
Send packet with increased dest IP to Port0, check that all threads waked up
-igb_uio driver only ues one queue 0
+igb_uio driver only uses one queue 0
Test Case2: PF lsc interrupt with vfio
======================================
+
Run l3fwd-power with one queue per port::
- l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
-Plug out Port0 cable, check that link down interrtup captured and handled by
+ l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
+
+Plug out Port0 cable, check that link down interrupt captured and handled by
pmd driver.
-Plug out Port1 cable, check that link down interrtup captured and handled by
+Plug out Port1 cable, check that link down interrupt captured and handled by
pmd driver.
-Plug in Port0 cable, check that link up interrtup captured and handled by pmd
+Plug in Port0 cable, check that link up interrupt captured and handled by pmd
driver.
-Plug in Port1 cable, check that link up interrtup captured and handled by pmd
+Plug in Port1 cable, check that link up interrupt captured and handled by pmd
driver.
Test Case3: PF interrupt pmd latency test
=========================================
+
Setup validation scenario the case as test1
-Send burst packet flow to Port0 and Port1, use IXIA capture the maxmium
-latecny.
+Send burst packet flow to Port0 and Port1, use IXIA capture the maximum
+latency.
Compare latency(l3fwd-power PF interrupt pmd with uio) with l3fwd latency.
Setup validation scenario the case as test2
-Send burst packet flow to Port0 and Port1, use IXIA capture the maxmium
-latecny.
-
+Send burst packet flow to Port0 and Port1, use IXIA capture the maximum
+latency.
diff --git a/test_plans/vf_interrupt_pmd_test_plan.rst b/test_plans/vf_interrupt_pmd_test_plan.rst
index 5098463..1c4bb7d 100644
--- a/test_plans/vf_interrupt_pmd_test_plan.rst
+++ b/test_plans/vf_interrupt_pmd_test_plan.rst
@@ -29,113 +29,143 @@
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF TH
-=====================
-One-shot Rx Interrupt
-=====================
-One-shot Rx interrupt feature will split rx interrupt handling from other
-interrupts like LSC interrupt. It implemented one handling mechanism to
+==============================
+VF One-shot Rx Interrupt Tests
+==============================
+
+One-shot Rx interrupt feature will split rx interrupt handling from other
+interrupts like LSC interrupt. It implemented one handling mechanism to
eliminate non-deterministic DPDK polling thread wakeup latency.
VFIO' multiple interrupt vectors support mechanism to enable multiple event fds
serving per Rx queue interrupt handling.
-UIO has limited interrupt support, specifically it only support a single
-interrupt vector, which is not suitable for enabling multi queues Rx/Tx
+UIO has limited interrupt support, specifically it only support a single
+interrupt vector, which is not suitable for enabling multi queues Rx/Tx
interrupt.
Prerequisites
=============
+
Each of the 10Gb Ethernet* ports of the DUT is directly connected in
full-duplex to a different port of the peer traffic generator.
-Assume PF port PCI addresses are 0000:04:00.0 and 0000:04:00.1, their Interfaces name are p786p1 and p786p2.
-Assume generated VF PCI address will be 0000:04:10.0, 0000:04:10.1.
+Assume PF port PCI addresses are 0000:04:00.0 and 0000:04:00.1, their
+Interfaces name are p786p1 and p786p2. Assume generated VF PCI address will
+be 0000:04:10.0, 0000:04:10.1.
+
+Iommu pass through feature has been enabled in kernel::
-Iommu pass through feature has been enabled in kernel.
- intel_iommu=on iommu=pt
+ intel_iommu=on iommu=pt
Support igb_uio and vfio driver, if used vfio, kernel need 3.6+ and enable vt-d
in bios. When used vfio, requested to insmod two drivers vfio and vfio-pci.
-
+
Test Case1: VF interrupt pmd in VM with uio
===========================================
-Create one VF per Port in host and add these two VFs into VM:
- usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:04:00.0 0000:04:00.1
+
+Create one VF per Port in host and add these two VFs into VM::
+
+
+ usertools/dpdk-devbind.py --force --bind=vfio-pci 0000:04:00.0 0000:04:00.1
echo 1 >/sys/bus/pci/devices/0000\:04\:00.0/max_vfs
echo 1 >/sys/bus/pci/devices/0000\:04\:00.1/max_vfs
- usertools/dpdk-devbind.py --force --bind=pci-stub 0000:04:10.0 0000:04:10.1
-
-Start VM and start l3fwd-power with one queue per port in VM:
- l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
-
-Send one packet to VF0 and VF1, check that thread on core1 and core2 waked up:
- L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
- L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
-
+ usertools/dpdk-devbind.py --force --bind=pci-stub 0000:04:10.0 0000:04:10.1
+
+Start VM and start l3fwd-power with one queue per port in VM::
+
+
+ l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
+
+Send one packet to VF0 and VF1, check that thread on core1 and core2 waked up::
+
+
+ L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
+ L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
+
Check the packet has been normally forwarded.
-After the packet forwarded, thread on core1 and core 2 will return to sleep.
- L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
- L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
+After the packet forwarded, thread on core1 and core 2 will return to sleep::
-Send packet flows to VF0 and VF1, check that thread on core1 and core2 will
+ L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
+ L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
+
+Send packet flows to VF0 and VF1, check that thread on core1 and core2 will
keep up awake.
Test Case2: VF interrupt pmd in Host with uio
=============================================
+
Create one VF per Port in host and make sure PF interface up
-ues kernel driver to create vf:
+uses kernel driver to create vf::
+
+
echo 1 >/sys/bus/pci/devices/0000\:04\:00.1/sriov_numvf
echo 1 >/sys/bus/pci/devices/0000\:04\:00.1/sriov_numvf
-
-Bind VF device to igb_uio:
- ./usertools/dpdk-devbind.py --bind=igb_uio 0000:04:10.0 0000:04:10.1
-
-Start host and start l3fwd-power with one queue per port in host:
- l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
-
-Send one packet to VF0 and VF1, check that thread on core1 and core2 waked up:
- L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
- L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
-
+
+Bind VF device to igb_uio::
+
+
+ ./usertools/dpdk-devbind.py --bind=igb_uio 0000:04:10.0 0000:04:10.1
+
+Start host and start l3fwd-power with one queue per port in host::
+
+
+ l3fwd-power -c 7 -n 4 -- -p 0x3 -P --config="(0,0,1),(1,0,2)"
+
+Send one packet to VF0 and VF1, check that thread on core1 and core2 waked up::
+
+
+ L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
+ L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq0
+
Check the packet has been normally forwarded.
-After the packet forwarded, thread on core1 and core 2 will return to sleep.
- L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
- L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
+After the packet forwarded, thread on core1 and core 2 will return to sleep::
+
+ L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
+ L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq0 triggers
-Send packet flows to VF0 and VF1, check that thread on core1 and core2 will
+Send packet flows to VF0 and VF1, check that thread on core1 and core2 will
keep up awake.
Test Case3: VF interrupt pmd in Host with vfio
==============================================
+
Create one VF per Port in host and make sure PF interface up
-ues kernel driver to create vf:
+uses kernel driver to create vf::
+
+
echo 1 >/sys/bus/pci/devices/0000\:04\:00.1/sriov_numvf
echo 1 >/sys/bus/pci/devices/0000\:04\:00.1/sriov_numvf
-Bind VF device to host igb_uio:
- ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:04:10.0 0000:04:10.1
-
-Start VM and start l3fwd-power with two queues per port in VM:
- l3fwd-power -c 1f -n 4 -- -p 0x3 -P \
- --config="(0,0,1),(0,1,2)(1,0,3),(1,1,4)"
-
-Send packets with increased dest IP to Port0 and Port1, check that thread on
-core1,core2,core3,core4 waked up:
- L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
- L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq1
- L3FWD_POWER: lcore 3 is waked up from rx interrupt on port1,rxq0
- L3FWD_POWER: lcore 4 is waked up from rx interrupt on port1,rxq1
-
+Bind VF device to host igb_uio::
+
+
+ ./usertools/dpdk-devbind.py --bind=vfio-pci 0000:04:10.0 0000:04:10.1
+
+Start VM and start l3fwd-power with two queues per port in VM::
+
+
+ l3fwd-power -c 1f -n 4 -- -p 0x3 -P \
+ --config="(0,0,1),(0,1,2)(1,0,3),(1,1,4)"
+
+Send packets with increased dest IP to Port0 and Port1, check that thread on
+core1,core2,core3,core4 waked up::
+
+ L3FWD_POWER: lcore 1 is waked up from rx interrupt on port1,rxq0
+ L3FWD_POWER: lcore 2 is waked up from rx interrupt on port1,rxq1
+ L3FWD_POWER: lcore 3 is waked up from rx interrupt on port1,rxq0
+ L3FWD_POWER: lcore 4 is waked up from rx interrupt on port1,rxq1
+
Check the packet has been normally forwarded.
-After the packet forwarded, thread on core1,core2,core3,core4 will return to
-sleep.
- L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
- L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq1 triggers
- L3FWD_POWER: lcore 3 sleeps until interrupt on port1,rxq0 triggers
- L3FWD_POWER: lcore 4 sleeps until interrupt on port1,rxq1 triggers
+After the packet forwarded, thread on core1,core2,core3,core4 will return to
+sleep::
+
+ L3FWD_POWER: lcore 1 sleeps until interrupt on port0,rxq0 triggers
+ L3FWD_POWER: lcore 2 sleeps until interrupt on port0,rxq1 triggers
+ L3FWD_POWER: lcore 3 sleeps until interrupt on port1,rxq0 triggers
+ L3FWD_POWER: lcore 4 sleeps until interrupt on port1,rxq1 triggers
Send packet flows to Port0 and Port1, check that thread on core1,core2,core3,
core4 will keep up awake.
-