ConnectX 4-5 support only 40 bytes of RSS key, using a compiled size
hash key is not necessary.

Signed-off-by: Nelio Laranjeiro <nelio.laranje...@6wind.com>
Acked-by: Yongseok Koh <ys...@mellanox.com>
---
 drivers/net/mlx5/mlx5_ethdev.c | 14 +++++++-------
 drivers/net/mlx5/mlx5_flow.c   |  4 ++--
 drivers/net/mlx5/mlx5_prm.h    |  3 +++
 drivers/net/mlx5/mlx5_rss.c    |  7 ++++---
 drivers/net/mlx5/mlx5_rxq.c    | 12 +++++++-----
 drivers/net/mlx5/mlx5_rxtx.h   |  1 -
 6 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c
index 05f66f7b6..6e44d5ff0 100644
--- a/drivers/net/mlx5/mlx5_ethdev.c
+++ b/drivers/net/mlx5/mlx5_ethdev.c
@@ -377,15 +377,15 @@ mlx5_dev_configure(struct rte_eth_dev *dev)
 
        if (use_app_rss_key &&
            (dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key_len !=
-            rss_hash_default_key_len)) {
-               DRV_LOG(ERR, "port %u RSS key len must be %zu Bytes long",
-                       dev->data->port_id, rss_hash_default_key_len);
+            MLX5_RSS_HASH_KEY_LEN)) {
+               DRV_LOG(ERR, "port %u RSS key len must be %s Bytes long",
+                       dev->data->port_id, RTE_STR(MLX5_RSS_HASH_KEY_LEN));
                rte_errno = EINVAL;
                return -rte_errno;
        }
        priv->rss_conf.rss_key =
                rte_realloc(priv->rss_conf.rss_key,
-                           rss_hash_default_key_len, 0);
+                           MLX5_RSS_HASH_KEY_LEN, 0);
        if (!priv->rss_conf.rss_key) {
                DRV_LOG(ERR, "port %u cannot allocate RSS hash key memory (%u)",
                        dev->data->port_id, rxqs_n);
@@ -396,8 +396,8 @@ mlx5_dev_configure(struct rte_eth_dev *dev)
               use_app_rss_key ?
               dev->data->dev_conf.rx_adv_conf.rss_conf.rss_key :
               rss_hash_default_key,
-              rss_hash_default_key_len);
-       priv->rss_conf.rss_key_len = rss_hash_default_key_len;
+              MLX5_RSS_HASH_KEY_LEN);
+       priv->rss_conf.rss_key_len = MLX5_RSS_HASH_KEY_LEN;
        priv->rss_conf.rss_hf = dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf;
        priv->rxqs = (void *)dev->data->rx_queues;
        priv->txqs = (void *)dev->data->tx_queues;
@@ -515,7 +515,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct 
rte_eth_dev_info *info)
                info->if_index = if_nametoindex(ifname);
        info->reta_size = priv->reta_idx_n ?
                priv->reta_idx_n : config->ind_table_max_size;
-       info->hash_key_size = rss_hash_default_key_len;
+       info->hash_key_size = MLX5_RSS_HASH_KEY_LEN;
        info->speed_capa = priv->link_speed_capa;
        info->flow_type_rss_offloads = ~MLX5_RSS_HF_MASK;
        mlx5_set_default_params(dev, info);
diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 1280db486..77483bd1f 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1493,11 +1493,11 @@ mlx5_flow_apply(struct rte_eth_dev *dev, struct 
rte_flow *flow,
                struct mlx5_hrxq *hrxq;
 
                hrxq = mlx5_hrxq_get(dev, rss_hash_default_key,
-                                    rss_hash_default_key_len, 0,
+                                    MLX5_RSS_HASH_KEY_LEN, 0,
                                     &flow->queue, 1, 0, 0);
                if (!hrxq)
                        hrxq = mlx5_hrxq_new(dev, rss_hash_default_key,
-                                            rss_hash_default_key_len, 0,
+                                            MLX5_RSS_HASH_KEY_LEN, 0,
                                             &flow->queue, 1, 0, 0);
                if (!hrxq)
                        return rte_flow_error_set(error, rte_errno,
diff --git a/drivers/net/mlx5/mlx5_prm.h b/drivers/net/mlx5/mlx5_prm.h
index f9fae1e50..0870d32fd 100644
--- a/drivers/net/mlx5/mlx5_prm.h
+++ b/drivers/net/mlx5/mlx5_prm.h
@@ -21,6 +21,9 @@
 #include <rte_vect.h>
 #include "mlx5_autoconf.h"
 
+/* RSS hash key size. */
+#define MLX5_RSS_HASH_KEY_LEN 40
+
 /* Get CQE owner bit. */
 #define MLX5_CQE_OWNER(op_own) ((op_own) & MLX5_CQE_OWNER_MASK)
 
diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c
index d69b4c09e..b95778a8c 100644
--- a/drivers/net/mlx5/mlx5_rss.c
+++ b/drivers/net/mlx5/mlx5_rss.c
@@ -50,10 +50,11 @@ mlx5_rss_hash_update(struct rte_eth_dev *dev,
                return -rte_errno;
        }
        if (rss_conf->rss_key && rss_conf->rss_key_len) {
-               if (rss_conf->rss_key_len != rss_hash_default_key_len) {
+               if (rss_conf->rss_key_len != MLX5_RSS_HASH_KEY_LEN) {
                        DRV_LOG(ERR,
-                               "port %u RSS key len must be %zu Bytes long",
-                               dev->data->port_id, rss_hash_default_key_len);
+                               "port %u RSS key len must be %s Bytes long",
+                               dev->data->port_id,
+                               RTE_STR(MLX5_RSS_HASH_KEY_LEN));
                        rte_errno = EINVAL;
                        return -rte_errno;
                }
diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index d960daa43..d50b82c69 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -52,7 +52,9 @@ uint8_t rss_hash_default_key[] = {
 };
 
 /* Length of the default RSS hash key. */
-const size_t rss_hash_default_key_len = sizeof(rss_hash_default_key);
+static_assert(MLX5_RSS_HASH_KEY_LEN ==
+             (unsigned int)sizeof(rss_hash_default_key),
+             "wrong RSS default key size.");
 
 /**
  * Check whether Multi-Packet RQ can be enabled for the device.
@@ -1771,7 +1773,7 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
                return NULL;
        }
        if (!rss_key_len) {
-               rss_key_len = rss_hash_default_key_len;
+               rss_key_len = MLX5_RSS_HASH_KEY_LEN;
                rss_key = rss_hash_default_key;
        }
 #ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT
@@ -1791,7 +1793,7 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
                        .rx_hash_conf = (struct ibv_rx_hash_conf){
                                .rx_hash_function = IBV_RX_HASH_FUNC_TOEPLITZ,
                                .rx_hash_key_len = rss_key_len ? rss_key_len :
-                                                  rss_hash_default_key_len,
+                                                  MLX5_RSS_HASH_KEY_LEN,
                                .rx_hash_key = rss_key ?
                                               (void *)(uintptr_t)rss_key :
                                               rss_hash_default_key,
@@ -1815,7 +1817,7 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
                        .rx_hash_conf = (struct ibv_rx_hash_conf){
                                .rx_hash_function = IBV_RX_HASH_FUNC_TOEPLITZ,
                                .rx_hash_key_len = rss_key_len ? rss_key_len :
-                                                  rss_hash_default_key_len,
+                                                  MLX5_RSS_HASH_KEY_LEN,
                                .rx_hash_key = rss_key ?
                                               (void *)(uintptr_t)rss_key :
                                               rss_hash_default_key,
@@ -2138,7 +2140,7 @@ mlx5_hrxq_drop_new(struct rte_eth_dev *dev)
                        .rx_hash_conf = (struct ibv_rx_hash_conf){
                                .rx_hash_function =
                                        IBV_RX_HASH_FUNC_TOEPLITZ,
-                               .rx_hash_key_len = rss_hash_default_key_len,
+                               .rx_hash_key_len = MLX5_RSS_HASH_KEY_LEN,
                                .rx_hash_key = rss_hash_default_key,
                                .rx_hash_fields_mask = 0,
                                },
diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h
index 99b769d8a..59e374d8d 100644
--- a/drivers/net/mlx5/mlx5_rxtx.h
+++ b/drivers/net/mlx5/mlx5_rxtx.h
@@ -225,7 +225,6 @@ struct mlx5_txq_ctrl {
 /* mlx5_rxq.c */
 
 extern uint8_t rss_hash_default_key[];
-extern const size_t rss_hash_default_key_len;
 
 int mlx5_check_mprq_support(struct rte_eth_dev *dev);
 int mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq);
-- 
2.18.0

Reply via email to