net/enic: support UDP RSS on 1400 series adapters
[dpdk.git] / drivers / net / enic / enic_main.c
index aaada88..d15d236 100644 (file)
@@ -1174,10 +1174,22 @@ int enic_set_rss_conf(struct enic *enic, struct rte_eth_rss_conf *rss_conf)
                        rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_IPV4;
                if (rss_hf & ETH_RSS_NONFRAG_IPV4_TCP)
                        rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_TCP_IPV4;
+               if (rss_hf & ETH_RSS_NONFRAG_IPV4_UDP) {
+                       /*
+                        * 'TCP' is not a typo. HW does not have a separate
+                        * enable bit for UDP RSS. The TCP bit enables both TCP
+                        * and UDP RSS..
+                        */
+                       rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_TCP_IPV4;
+               }
                if (rss_hf & ETH_RSS_IPV6)
                        rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_IPV6;
                if (rss_hf & ETH_RSS_NONFRAG_IPV6_TCP)
                        rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_TCP_IPV6;
+               if (rss_hf & ETH_RSS_NONFRAG_IPV6_UDP) {
+                       /* Again, 'TCP' is not a typo. */
+                       rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_TCP_IPV6;
+               }
                if (rss_hf & ETH_RSS_IPV6_EX)
                        rss_hash_type |= NIC_CFG_RSS_HASH_TYPE_IPV6_EX;
                if (rss_hf & ETH_RSS_IPV6_TCP_EX)