[dpdk-dev] [PATCH 0/8] Dynamic RSS Configuration for Bonding
Kulasek, TomaszX
tomaszx.kulasek at intel.com
Thu Jun 25 11:20:21 CEST 2015
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
More information about the dev
mailing list