net/hns3: optimize default RSS algorithm
authorHao Chen <chenhao164@huawei.com>
Sat, 21 Dec 2019 10:32:49 +0000 (18:32 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 17 Jan 2020 18:46:01 +0000 (19:46 +0100)
This patch changed the default algorithm of RSS from simle_xor to
toeplitz because toeplitz is used more frequently by upper applications
such as ceph.

Signed-off-by: Hao Chen <chenhao164@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
drivers/net/hns3/hns3_rss.c

index b8c20e6..dfc42f8 100644 (file)
@@ -211,7 +211,11 @@ hns3_set_rss_tuple_by_rss_hf(struct hns3_hw *hw,
                        req->ipv6_fragment_en |= HNS3_IP_OTHER_BIT_MASK;
                        break;
                default:
-                       /* Other unsupported flow types won't change tuples */
+                       /*
+                        * rss_hf doesn't include unsupported flow types
+                        * because the API framework has checked it, and
+                        * this branch will never go unless rss_hf is zero.
+                        */
                        break;
                }
        }
@@ -251,8 +255,8 @@ hns3_dev_rss_hash_update(struct rte_eth_dev *dev,
        struct hns3_hw *hw = &hns->hw;
        struct hns3_rss_tuple_cfg *tuple = &hw->rss_info.rss_tuple_sets;
        struct hns3_rss_conf *rss_cfg = &hw->rss_info;
-       uint8_t algo = rss_cfg->conf.func;
        uint8_t key_len = rss_conf->rss_key_len;
+       uint8_t algo;
        uint64_t rss_hf = rss_conf->rss_hf;
        uint8_t *key = rss_conf->rss_key;
        int ret;
@@ -285,6 +289,8 @@ hns3_dev_rss_hash_update(struct rte_eth_dev *dev,
                        ret = -EINVAL;
                        goto conf_err;
                }
+               algo = rss_cfg->conf.func == RTE_ETH_HASH_FUNCTION_SIMPLE_XOR ?
+                       HNS3_RSS_HASH_ALGO_SIMPLE : HNS3_RSS_HASH_ALGO_TOEPLITZ;
                ret = hns3_set_rss_algo_key(hw, algo, key);
                if (ret)
                        goto conf_err;
@@ -500,7 +506,9 @@ hns3_set_default_rss_args(struct hns3_hw *hw)
        int i;
 
        /* Default hash algorithm */
-       rss_cfg->conf.func = RTE_ETH_HASH_FUNCTION_SIMPLE_XOR;
+       rss_cfg->conf.func = RTE_ETH_HASH_FUNCTION_TOEPLITZ;
+
+       /* Default RSS key */
        memcpy(rss_cfg->key, hns3_hash_key, HNS3_RSS_KEY_SIZE);
 
        /* Initialize RSS indirection table */