[dpdk-dev] [PATCH] examples: fix RSS hash function configuration

Pavan Nikhilesh pbhagavatula at caviumnetworks.com
Thu Jun 21 18:54:04 CEST 2018


Hi Ferruh,

On Wed, Jun 20, 2018 at 04:01:22PM +0100, Ferruh Yigit wrote:
> ethdev layer introduced checks for application requested RSS hash
> functions and returns error for ones unsupported by hardware
>
> This check breaks some sample applications which blindly configures
> RSS hash functions without checking underlying hardware support.
>
> Updated examples to mask out unsupported RSS has functions during device
> configuration.
> Prints a log if configuration values updated by this check.
>
> Fixes: aa1a6d87f15d ("ethdev: force RSS offload rules again")
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> ---
> Return error added in this release, so no need to backport the fix to
> previous versions.
>
> Cc: David Hunt <david.hunt at intel.com>
> Cc: Liang Ma <liang.j.ma at intel.com>
> Cc: Xueming Li <xuemingl at mellanox.com>
> ---
>  examples/bond/main.c                          | 12 ++++++++++
>  examples/distributor/main.c                   | 11 ++++++++++
>  examples/eventdev_pipeline/main.c             | 11 ++++++++++
>  examples/ip_pipeline/link.c                   |  8 +++++--
>  examples/ip_reassembly/main.c                 | 12 ++++++++++
>  examples/ipsec-secgw/ipsec-secgw.c            | 12 ++++++++++
>  examples/l3fwd-acl/main.c                     | 12 ++++++++++
>  examples/l3fwd-power/main.c                   | 14 ++++++++++--
>  examples/l3fwd-vf/main.c                      | 12 ++++++++++
>  examples/l3fwd/main.c                         | 12 ++++++++++
>  examples/load_balancer/init.c                 | 12 ++++++++++
>  examples/multi_process/symmetric_mp/main.c    | 12 ++++++++++
>  .../performance-thread/l3fwd-thread/main.c    | 12 ++++++++++
>  examples/qos_meter/main.c                     | 22 +++++++++++++++++++
>  examples/vmdq_dcb/main.c                      | 13 +++++++++++
>  15 files changed, 183 insertions(+), 4 deletions(-)
>

As we are fixing it for examples can we include fix for app/test-eventdev too?

diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index d00f91802..79d755b6f 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -706,6 +706,12 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
        }

        RTE_ETH_FOREACH_DEV(i) {
+               struct rte_eth_dev_info dev_info;
+
+               memset(&dev_info, 0, sizeof(struct rte_eth_dev_info));
+               rte_eth_dev_info_get(i, &dev_info);
+               port_conf.rx_adv_conf.rss_conf.rss_hf &=
+                       dev_info.flow_type_rss_offloads;

                if (rte_eth_dev_configure(i, 1, 1,
                                        &port_conf)
diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
index 719518ff3..386ba14d1 100644
--- a/app/test-eventdev/test_pipeline_common.c
+++ b/app/test-eventdev/test_pipeline_common.c
@@ -249,6 +249,9 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
                rx_conf = dev_info.default_rxconf;
                rx_conf.offloads = port_conf.rxmode.offloads;

+               port_conf.rx_adv_conf.rss_conf.rss_hf &=
+                       dev_info.flow_type_rss_offloads;
+
                if (rte_eth_dev_configure(i, nb_queues, nb_queues,
                                        &port_conf)
                                < 0) {


Thanks,
Pavan


More information about the dev mailing list