[dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding
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
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
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