]> git.droids-corp.org - dpdk.git/commitdiff
net/nfp: fix reporting of RSS capabilities
authorHeinrich Kuhn <heinrich.kuhn@netronome.com>
Mon, 10 May 2021 16:45:50 +0000 (18:45 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 11 May 2021 13:31:32 +0000 (15:31 +0200)
Before this change the dev_infos callback always reported RSS
capabilities regardless of whether the capability is supported by the
device or not. First check the capabilities field in the BAR of the
device and advertise RSS functionality accordingly.

Fixes: 8b945a7f7dcb ("drivers/net: update Rx RSS hash offload capabilities")
Cc: stable@dpdk.org
Signed-off-by: Heinrich Kuhn <heinrich.kuhn@netronome.com>
Signed-off-by: Simon Horman <simon.horman@netronome.com>
drivers/net/nfp/nfp_net.c

index ad2c2b55f64ed17cf8737b2574704af277762ff5..90206a16850f6c565d77bcf137046320c0934e60 100644 (file)
@@ -1257,9 +1257,6 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
                                             DEV_RX_OFFLOAD_UDP_CKSUM |
                                             DEV_RX_OFFLOAD_TCP_CKSUM;
 
-       dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_JUMBO_FRAME |
-                                    DEV_RX_OFFLOAD_RSS_HASH;
-
        if (hw->cap & NFP_NET_CFG_CTRL_TXVLAN)
                dev_info->tx_offload_capa = DEV_TX_OFFLOAD_VLAN_INSERT;
 
@@ -1308,15 +1305,22 @@ nfp_net_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
                .nb_mtu_seg_max = NFP_TX_MAX_MTU_SEG,
        };
 
-       dev_info->flow_type_rss_offloads = ETH_RSS_IPV4 |
-                                          ETH_RSS_NONFRAG_IPV4_TCP |
-                                          ETH_RSS_NONFRAG_IPV4_UDP |
-                                          ETH_RSS_IPV6 |
-                                          ETH_RSS_NONFRAG_IPV6_TCP |
-                                          ETH_RSS_NONFRAG_IPV6_UDP;
+       /* All NFP devices support jumbo frames */
+       dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_JUMBO_FRAME;
+
+       if (hw->cap & NFP_NET_CFG_CTRL_RSS) {
+               dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_RSS_HASH;
 
-       dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ;
-       dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ;
+               dev_info->flow_type_rss_offloads = ETH_RSS_IPV4 |
+                                                  ETH_RSS_NONFRAG_IPV4_TCP |
+                                                  ETH_RSS_NONFRAG_IPV4_UDP |
+                                                  ETH_RSS_IPV6 |
+                                                  ETH_RSS_NONFRAG_IPV6_TCP |
+                                                  ETH_RSS_NONFRAG_IPV6_UDP;
+
+               dev_info->reta_size = NFP_NET_CFG_RSS_ITBL_SZ;
+               dev_info->hash_key_size = NFP_NET_CFG_RSS_KEY_SZ;
+       }
 
        dev_info->speed_capa = ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G |
                               ETH_LINK_SPEED_25G | ETH_LINK_SPEED_40G |