X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Focteontx2%2Fotx2_rss.c;h=7dbe5f69ae65ad0c29eb0e11dba27eb761a9a756;hb=4f74cb68b96496acce845e75b5533f019f248b1e;hp=d859937e6ef0558e75833e626af9ce9f87e35307;hpb=3b0bc725f096e833b19f812c81b2642e0c364f8b;p=dpdk.git diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c index d859937e6e..7dbe5f69ae 100644 --- a/drivers/net/octeontx2/otx2_rss.c +++ b/drivers/net/octeontx2/otx2_rss.c @@ -234,10 +234,13 @@ otx2_rss_ethdev_to_nix(struct otx2_eth_dev *dev, uint64_t ethdev_rss, dev->rss_info.nix_rss = ethdev_rss; if (ethdev_rss & ETH_RSS_L2_PAYLOAD && - dev->npc_flow.switch_header_type == OTX2_PRIV_FLAGS_LEN_90B) { + dev->npc_flow.switch_header_type == OTX2_PRIV_FLAGS_CH_LEN_90B) { flowkey_cfg |= FLOW_KEY_TYPE_CH_LEN_90B; } + if (ethdev_rss & ETH_RSS_C_VLAN) + flowkey_cfg |= FLOW_KEY_TYPE_VLAN; + if (ethdev_rss & ETH_RSS_L3_SRC_ONLY) flowkey_cfg |= FLOW_KEY_TYPE_L3_SRC; @@ -323,6 +326,7 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev, struct rte_eth_rss_conf *rss_conf) { struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev); + uint8_t rss_hash_level; uint32_t flowkey_cfg; uint8_t alg_idx; int rc; @@ -339,7 +343,11 @@ otx2_nix_rss_hash_update(struct rte_eth_dev *eth_dev, otx2_nix_rss_set_key(dev, rss_conf->rss_key, (uint32_t)rss_conf->rss_key_len); - flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, 0); + rss_hash_level = ETH_RSS_LEVEL(rss_conf->rss_hf); + if (rss_hash_level) + rss_hash_level -= 1; + flowkey_cfg = + otx2_rss_ethdev_to_nix(dev, rss_conf->rss_hf, rss_hash_level); rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx, NIX_DEFAULT_RSS_CTX_GROUP, @@ -375,6 +383,7 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev) { struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev); uint32_t idx, qcnt = eth_dev->data->nb_rx_queues; + uint8_t rss_hash_level; uint32_t flowkey_cfg; uint64_t rss_hf; uint8_t alg_idx; @@ -399,7 +408,10 @@ otx2_nix_rss_config(struct rte_eth_dev *eth_dev) } rss_hf = eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf; - flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, 0); + rss_hash_level = ETH_RSS_LEVEL(rss_hf); + if (rss_hash_level) + rss_hash_level -= 1; + flowkey_cfg = otx2_rss_ethdev_to_nix(dev, rss_hf, rss_hash_level); rc = otx2_rss_set_hf(dev, flowkey_cfg, &alg_idx, NIX_DEFAULT_RSS_CTX_GROUP,