[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