examples/ip_pipeline: fix RSS
authorCristian Dumitrescu <cristian.dumitrescu@intel.com>
Mon, 6 Aug 2018 15:24:16 +0000 (16:24 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Tue, 7 Aug 2018 21:19:02 +0000 (23:19 +0200)
After adding RSS hash offload checks, flags that are not supported by
the current device result in RSS configuration failing as opposed to
unsupported flags being silently discarded. This fix is making sure
that only device supported flags are passed to RSS configuration.

Fixes: aa1a6d87f15d ("ethdev: force RSS offload rules again")

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Tested-by: Yuan Peng <yuan.peng@intel.com>
examples/ip_pipeline/link.c

index 2ccfea4..392a890 100644 (file)
@@ -158,12 +158,9 @@ link_create(const char *name, struct link_params *params)
        memcpy(&port_conf, &port_conf_default, sizeof(port_conf));
        if (rss) {
                port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
-               if (port_info.flow_type_rss_offloads & ETH_RSS_IPV4)
-                       port_conf.rx_adv_conf.rss_conf.rss_hf |=
-                               ETH_RSS_IPV4;
-               if (port_info.flow_type_rss_offloads & ETH_RSS_IPV6)
-                       port_conf.rx_adv_conf.rss_conf.rss_hf |=
-                               ETH_RSS_IPV6;
+               port_conf.rx_adv_conf.rss_conf.rss_hf =
+                       (ETH_RSS_IP | ETH_RSS_TCP | ETH_RSS_UDP) &
+                       port_info.flow_type_rss_offloads;
        }
 
        cpu_id = (uint32_t) rte_eth_dev_socket_id(port_id);