[dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding

2015-06-25 Thread Kulasek, TomaszX

There's a bug in bonding itself, which prevents the bonding, made of Fortville 
NICs, start and is not related to Dynamic RSS Configuration.

This problem solves separate patch "bond: fix check initial link status of 
slave".

-Original Message-
From: Xu, HuilongX 
Sent: Friday, June 12, 2015 07:36
To: Kulasek, TomaszX; dev at dpdk.org
Subject: RE: [dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding

Tested-by: huilong xu 
- Tested Commit: 1a1109404e702d3ad1ccc1033df55c59bec1f89a + PATCH
- OS: Linux dpdk-fedora20 3.11.10-301.fc20.x86_64
- GCC: gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC)
- CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
- NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection 
[8086:10fb]
- NIC: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ [8086:1583]
- Default x86_64-native-linuxapp-gcc configuration
- Total 4 cases, 2 passed, 2 failed. Niantic NIC case all passed, but Fortville 
NIC case all failed.


   First case:
   This is a unit test case, not need NIC
   1. build dpdk driver and insmod driver
   2. set 1024*2M hugepage
   3. compile test app in app/test
   4. run test
   ./test -c f -n 4 
   5. exec dynamic rss confif unit test
  link_bonding_rssconf_autotest
   6. print "test ok"
   7. this case passed
Second case:
   This is a function test case, used Fortville NIC(8086:1583)
1. build dpdk driver and insmod driver
2. bind dpdk driver to Fortville nic
3. set 1024*2M hugepage
4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
5. exec testpmd cmd
   a) create bonded device 0 0
   b) add bonding slave 0 3
   c) add bonding slave 1 3
   d) port start 3
port can start, and link stats is down, so this case failed.
 Thirdly case:
   This is a function test case, used Fortville NIC(8086:1583)
1. build dpdk driver and insmod driver
2. bind dpdk driver to Fortville nic
3. set 1024*2M hugepage
4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
5. exec testpmd cmd
   a) create bonded device 0 0
   b) add bonding slave 0 3
   c) add bonding slave 1 3
   d) port config all rss ip
   e) show port 3 rss-hash
  printf: 
  RSS functions:
  ipv4-frag ipv4-other ipv6-frag ipv6-other
   f) show port 0 rss-hash
  printf:
 RSS disabled
  Slave rss not enable, so this case failed
   Fourthly case:
  This is a function test case, used Niantic NIC(8086:10fb)
  1. build dpdk driver and insmod driver
  2. bind dpdk driver to Fortville nic
  3. set 1024*2M hugepage
  4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
  5. exec testpmd cmd
a) create bonded device 0 0
b) add bonding slave 0 3
c) add bonding slave 1 3
d) port start 3
e) port stop all
f) set verbose 8
g) set fwd rxonly
h) set stat_qmap 3 0 0
i) set stat_qmap 3 1 1 
j) set stat_qmap 3 1 1
k) set stat_qmap 3 1 1
l) port config all rss ip
m) port start all
n)start
   6. send 50 ip packages to salve 0 by ixia, the package config as 
below
  a) dst mac: bond device (port 3) mac address.
  b) src mac: 00:00:00:12:34:56
  c) package type:0800
  e) dst ip: 192.168.1.1 
  f) src ip: from 192.168.1.2 to 192.168.1.51, one package, 
this ip add 1
7. stop 
Port 3 queue 0 received 9 packages
Port 3 queue 1 received 9 packages
Port 3 queue 2 received 16 packages
Port 3 queue 3 received 16 packages
8. send 50 ip packages to slave 1 by ixia, the package config 
as same
9. stop and check port 3 received packages again
   Form slave 0 and slave 1 the rss are some, the test passed

> -Original Message-
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Tomasz Kulasek
> Sent

[dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding

2015-06-12 Thread Xu, HuilongX
Tested-by: huilong xu 
- Tested Commit: 1a1109404e702d3ad1ccc1033df55c59bec1f89a + PATCH
- OS: Linux dpdk-fedora20 3.11.10-301.fc20.x86_64
- GCC: gcc version 4.8.3 20140624 (Red Hat 4.8.3-1) (GCC)
- CPU: Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
- NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection 
[8086:10fb]
- NIC: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ [8086:1583]
- Default x86_64-native-linuxapp-gcc configuration
- Total 4 cases, 2 passed, 2 failed. Niantic NIC case all passed, but Fortville 
NIC case all failed.


   First case:
   This is a unit test case, not need NIC
   1. build dpdk driver and insmod driver
   2. set 1024*2M hugepage
   3. compile test app in app/test
   4. run test
   ./test -c f -n 4 
   5. exec dynamic rss confif unit test
  link_bonding_rssconf_autotest
   6. print "test ok"
   7. this case passed
Second case:
   This is a function test case, used Fortville NIC(8086:1583)
1. build dpdk driver and insmod driver
2. bind dpdk driver to Fortville nic
3. set 1024*2M hugepage
4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
5. exec testpmd cmd
   a) create bonded device 0 0
   b) add bonding slave 0 3
   c) add bonding slave 1 3
   d) port start 3
port can start, and link stats is down, so this case failed.
 Thirdly case:
   This is a function test case, used Fortville NIC(8086:1583)
1. build dpdk driver and insmod driver
2. bind dpdk driver to Fortville nic
3. set 1024*2M hugepage
4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
5. exec testpmd cmd
   a) create bonded device 0 0
   b) add bonding slave 0 3
   c) add bonding slave 1 3
   d) port config all rss ip
   e) show port 3 rss-hash
  printf: 
  RSS functions:
  ipv4-frag ipv4-other ipv6-frag ipv6-other
   f) show port 0 rss-hash
  printf:
 RSS disabled
  Slave rss not enable, so this case failed
   Fourthly case:
  This is a function test case, used Niantic NIC(8086:10fb)
  1. build dpdk driver and insmod driver
  2. bind dpdk driver to Fortville nic
  3. set 1024*2M hugepage
  4. run test pmd
  ./x86_64-native-linuxapp-gcc/app/testpmd -c 0xff -n 4  -- -i 
--txqflags=0x2 --mbcache=128 --burst=32 --txfreet=32 --rxfreet=64 --rxq=4 
--txq=4
  5. exec testpmd cmd
a) create bonded device 0 0
b) add bonding slave 0 3
c) add bonding slave 1 3
d) port start 3
e) port stop all
f) set verbose 8
g) set fwd rxonly
h) set stat_qmap 3 0 0
i) set stat_qmap 3 1 1 
j) set stat_qmap 3 1 1
k) set stat_qmap 3 1 1
l) port config all rss ip
m) port start all
n)start
   6. send 50 ip packages to salve 0 by ixia, the package config as 
below
  a) dst mac: bond device (port 3) mac address.
  b) src mac: 00:00:00:12:34:56
  c) package type:0800
  e) dst ip: 192.168.1.1 
  f) src ip: from 192.168.1.2 to 192.168.1.51, one package, 
this ip add 1
7. stop 
Port 3 queue 0 received 9 packages
Port 3 queue 1 received 9 packages
Port 3 queue 2 received 16 packages
Port 3 queue 3 received 16 packages
8. send 50 ip packages to slave 1 by ixia, the package config 
as same
9. stop and check port 3 received packages again
   Form slave 0 and slave 1 the rss are some, the test passed

> -Original Message-
> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of Tomasz Kulasek
> Sent: Wednesday, June 03, 2015 6:59 PM
> To: dev at dpdk.org
> Subject: [dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding
> 
> OVERVIEW
> 
> 1) Setting .rxmode.mq_mode for bonding device to ETH_MQ_RX_RSS makes
> bonding
> device fully RSS-capable, so all slaves are synchronized with its
> configuration.
> This mode is intended to provide RSS configuration as known from "dynamic
> RSS

[dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding

2015-06-03 Thread Tomasz Kulasek
OVERVIEW

1) Setting .rxmode.mq_mode for bonding device to ETH_MQ_RX_RSS makes bonding
device fully RSS-capable, so all slaves are synchronized with its configuration.
This mode is intended to provide RSS configuration as known from "dynamic RSS
configuration for one port" and made slaves transparent for client application
implementation.

2) If .rxmode.mq_mode for bonding device isn't ETH_MQ_RX_RSS, slaves are not
synchronized. That provides an ability to configure them manually. This mode may
be useful when application wants to manage RSS in an unusual way and the
consistency of RSS configuration for slaves isn't required.

Turning on/off RSS mode for slaves when bonding is started is not possible.
Other RSS configuration is propagated over slaves, when bonding device API is
used to do it. 

Tomasz Kulasek (8):
  bond: dynamic rss configuration
  ring: dynamic rss configuration
  test: dynamic rss configuration
  bond: queue stats mapping
  ring: queue stats mapping set dummy implementation
  examples: dynamic rss configuration for bonding
  doc: fixed spellings and typos
  doc: dynamic rss configuration for bonding

 app/test/Makefile  |1 +
 app/test/test_link_bonding_rssconf.c   |  674 ++
 .../prog_guide/link_bonding_poll_mode_drv_lib.rst  |   40 +-
 drivers/net/bonding/rte_eth_bond_api.c |   22 +
 drivers/net/bonding/rte_eth_bond_pmd.c |  222 -
 drivers/net/bonding/rte_eth_bond_private.h |   11 +
 drivers/net/ring/rte_eth_ring.c|  133 ++-
 examples/bond_rss/Makefile |   59 ++
 examples/bond_rss/bondrss.c|  293 +++
 examples/bond_rss/bondrss.h|  163 
 examples/bond_rss/config.c |  251 ++
 examples/bond_rss/ui.c |  915 
 12 files changed, 2759 insertions(+), 25 deletions(-)
 create mode 100644 app/test/test_link_bonding_rssconf.c
 create mode 100644 examples/bond_rss/Makefile
 create mode 100644 examples/bond_rss/bondrss.c
 create mode 100644 examples/bond_rss/bondrss.h
 create mode 100644 examples/bond_rss/config.c
 create mode 100644 examples/bond_rss/ui.c

-- 
1.7.9.5