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

Xu, HuilongX huilongx.xu at intel.com
Fri Jun 12 07:36:00 CEST 2015


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