]> git.droids-corp.org - dpdk.git/commitdiff
net/mlx5: remove useless arguments in hrxq API
authorNelio Laranjeiro <nelio.laranjeiro@6wind.com>
Thu, 12 Jul 2018 09:31:01 +0000 (11:31 +0200)
committerShahaf Shuler <shahafs@mellanox.com>
Thu, 12 Jul 2018 10:10:04 +0000 (12:10 +0200)
RSS level is necessary to had a bit in the hash_fields which is already
provided in this API, for the tunnel, it is necessary to request such
queue to compute the checksum on the inner most, this last one should
always be activated.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_flow.c
drivers/net/mlx5/mlx5_rxq.c
drivers/net/mlx5/mlx5_rxtx.h

index 758c611a618815f5d78d39af0037d76a509f1c56..730360b229fdd8f07cdd546ed32d6d9daa6505ee 100644 (file)
@@ -1875,13 +1875,13 @@ mlx5_flow_apply(struct rte_eth_dev *dev, struct rte_flow *flow,
                                             MLX5_RSS_HASH_KEY_LEN,
                                             verbs->hash_fields,
                                             (*flow->queue),
-                                            flow->rss.queue_num, 0, 0);
+                                            flow->rss.queue_num);
                        if (!hrxq)
                                hrxq = mlx5_hrxq_new(dev, flow->key,
                                                     MLX5_RSS_HASH_KEY_LEN,
                                                     verbs->hash_fields,
                                                     (*flow->queue),
-                                                    flow->rss.queue_num, 0, 0);
+                                                    flow->rss.queue_num);
                        if (!hrxq) {
                                rte_flow_error_set
                                        (error, rte_errno,
index d50b82c69da6fe394e0cdcce173796597c5f551b..071740b6d6145ddb794e983d53410957f57e1f9f 100644 (file)
@@ -1740,10 +1740,6 @@ mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev)
  *   first queue index will be taken for the indirection table.
  * @param queues_n
  *   Number of queues.
- * @param tunnel
- *   Tunnel type, implies tunnel offloading like inner checksum if available.
- * @param rss_level
- *   RSS hash on tunnel level.
  *
  * @return
  *   The Verbs object initialised, NULL otherwise and rte_errno is set.
@@ -1752,17 +1748,13 @@ struct mlx5_hrxq *
 mlx5_hrxq_new(struct rte_eth_dev *dev,
              const uint8_t *rss_key, uint32_t rss_key_len,
              uint64_t hash_fields,
-             const uint16_t *queues, uint32_t queues_n,
-             uint32_t tunnel, uint32_t rss_level)
+             const uint16_t *queues, uint32_t queues_n)
 {
        struct priv *priv = dev->data->dev_private;
        struct mlx5_hrxq *hrxq;
        struct mlx5_ind_table_ibv *ind_tbl;
        struct ibv_qp *qp;
        int err;
-#ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT
-       struct mlx5dv_qp_init_attr qp_init_attr = {0};
-#endif
 
        queues_n = hash_fields ? queues_n : 1;
        ind_tbl = mlx5_ind_table_ibv_get(dev, queues, queues_n);
@@ -1777,11 +1769,6 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
                rss_key = rss_hash_default_key;
        }
 #ifdef HAVE_IBV_DEVICE_TUNNEL_SUPPORT
-       if (tunnel) {
-               qp_init_attr.comp_mask =
-                               MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS;
-               qp_init_attr.create_flags = MLX5DV_QP_CREATE_TUNNEL_OFFLOADS;
-       }
        qp = mlx5_glue->dv_create_qp
                (priv->ctx,
                 &(struct ibv_qp_init_attr_ex){
@@ -1797,14 +1784,17 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
                                .rx_hash_key = rss_key ?
                                               (void *)(uintptr_t)rss_key :
                                               rss_hash_default_key,
-                               .rx_hash_fields_mask = hash_fields |
-                                       (tunnel && rss_level > 1 ?
-                                       (uint32_t)IBV_RX_HASH_INNER : 0),
+                               .rx_hash_fields_mask = hash_fields,
                        },
                        .rwq_ind_tbl = ind_tbl->ind_table,
                        .pd = priv->pd,
                 },
-                &qp_init_attr);
+                &(struct mlx5dv_qp_init_attr){
+                       .comp_mask = (hash_fields & IBV_RX_HASH_INNER) ?
+                                MLX5DV_QP_INIT_ATTR_MASK_QP_CREATE_FLAGS :
+                                0,
+                       .create_flags = MLX5DV_QP_CREATE_TUNNEL_OFFLOADS,
+                });
 #else
        qp = mlx5_glue->create_qp_ex
                (priv->ctx,
@@ -1838,8 +1828,6 @@ mlx5_hrxq_new(struct rte_eth_dev *dev,
        hrxq->qp = qp;
        hrxq->rss_key_len = rss_key_len;
        hrxq->hash_fields = hash_fields;
-       hrxq->tunnel = tunnel;
-       hrxq->rss_level = rss_level;
        memcpy(hrxq->rss_key, rss_key, rss_key_len);
        rte_atomic32_inc(&hrxq->refcnt);
        LIST_INSERT_HEAD(&priv->hrxqs, hrxq, next);
@@ -1865,10 +1853,6 @@ error:
  *   first queue index will be taken for the indirection table.
  * @param queues_n
  *   Number of queues.
- * @param tunnel
- *   Tunnel type, implies tunnel offloading like inner checksum if available.
- * @param rss_level
- *   RSS hash on tunnel level
  *
  * @return
  *   An hash Rx queue on success.
@@ -1877,8 +1861,7 @@ struct mlx5_hrxq *
 mlx5_hrxq_get(struct rte_eth_dev *dev,
              const uint8_t *rss_key, uint32_t rss_key_len,
              uint64_t hash_fields,
-             const uint16_t *queues, uint32_t queues_n,
-             uint32_t tunnel, uint32_t rss_level)
+             const uint16_t *queues, uint32_t queues_n)
 {
        struct priv *priv = dev->data->dev_private;
        struct mlx5_hrxq *hrxq;
@@ -1893,10 +1876,6 @@ mlx5_hrxq_get(struct rte_eth_dev *dev,
                        continue;
                if (hrxq->hash_fields != hash_fields)
                        continue;
-               if (hrxq->tunnel != tunnel)
-                       continue;
-               if (hrxq->rss_level != rss_level)
-                       continue;
                ind_tbl = mlx5_ind_table_ibv_get(dev, queues, queues_n);
                if (!ind_tbl)
                        continue;
index 59e374d8d9b465faf2acca1c40c3495282a94ca8..808118e50d145d0b1d832802fa36d78bb800cd6d 100644 (file)
@@ -157,8 +157,6 @@ struct mlx5_hrxq {
        struct mlx5_ind_table_ibv *ind_table; /* Indirection table. */
        struct ibv_qp *qp; /* Verbs queue pair. */
        uint64_t hash_fields; /* Verbs Hash fields. */
-       uint32_t tunnel; /* Tunnel type. */
-       uint32_t rss_level; /* RSS on tunnel level. */
        uint32_t rss_key_len; /* Hash key length in bytes. */
        uint8_t rss_key[]; /* Hash key. */
 };
@@ -271,13 +269,11 @@ void mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev);
 struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev,
                                const uint8_t *rss_key, uint32_t rss_key_len,
                                uint64_t hash_fields,
-                               const uint16_t *queues, uint32_t queues_n,
-                               uint32_t tunnel, uint32_t rss_level);
+                               const uint16_t *queues, uint32_t queues_n);
 struct mlx5_hrxq *mlx5_hrxq_get(struct rte_eth_dev *dev,
                                const uint8_t *rss_key, uint32_t rss_key_len,
                                uint64_t hash_fields,
-                               const uint16_t *queues, uint32_t queues_n,
-                               uint32_t tunnel, uint32_t rss_level);
+                               const uint16_t *queues, uint32_t queues_n);
 int mlx5_hrxq_release(struct rte_eth_dev *dev, struct mlx5_hrxq *hxrq);
 int mlx5_hrxq_ibv_verify(struct rte_eth_dev *dev);
 struct mlx5_hrxq *mlx5_hrxq_drop_new(struct rte_eth_dev *dev);