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 <huilongx.xu at intel.com> - 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 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