diff options
author | John McNamara <john.mcnamara@intel.com> | 2017-06-14 19:07:25 +0100 |
---|---|---|
committer | Marvin Liu <yong.liu@intel.com> | 2017-07-26 21:40:55 +0800 |
commit | 940cd96abef87915099c30c6ecb9e02be8096ffc (patch) | |
tree | 99b1a763476cdc62008160494b81e0427f913a18 /test_plans | |
parent | 1413f9a3ba21ed1ceaa87f208d502530edcd15d4 (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.rst | 1 | ||||
-rw-r--r-- | test_plans/interrupt_pmd_test_plan.rst | 78 | ||||
-rw-r--r-- | test_plans/vf_interrupt_pmd_test_plan.rst | 160 |
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. - |