net/mlx5: support ESP SPI match and RSS hash
[dpdk.git] / drivers / net / mlx5 / mlx5_rss.c
index c32129c..e2b478b 100644 (file)
@@ -65,10 +65,12 @@ mlx5_rss_hash_update(struct rte_eth_dev *dev,
        priv->rss_conf.rss_hf = rss_conf->rss_hf;
        /* Enable the RSS hash in all Rx queues. */
        for (i = 0, idx = 0; idx != priv->rxqs_n; ++i) {
-               if (!(*priv->rxqs)[i])
+               struct mlx5_rxq_priv *rxq = mlx5_rxq_get(dev, i);
+
+               if (rxq == NULL || rxq->ctrl == NULL)
                        continue;
-               (*priv->rxqs)[i]->rss_hash = !!rss_conf->rss_hf &&
-                       !!(dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS);
+               rxq->ctrl->rxq.rss_hash = !!rss_conf->rss_hf &&
+                       !!(dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS);
                ++idx;
        }
        return 0;
@@ -170,8 +172,8 @@ mlx5_dev_rss_reta_query(struct rte_eth_dev *dev,
        }
        /* Fill each entry of the table even if its bit is not set. */
        for (idx = 0, i = 0; (i != reta_size); ++i) {
-               idx = i / RTE_RETA_GROUP_SIZE;
-               reta_conf[idx].reta[i % RTE_RETA_GROUP_SIZE] =
+               idx = i / RTE_ETH_RETA_GROUP_SIZE;
+               reta_conf[idx].reta[i % RTE_ETH_RETA_GROUP_SIZE] =
                        (*priv->reta_idx)[i];
        }
        return 0;
@@ -209,19 +211,13 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev,
        if (ret)
                return ret;
        for (idx = 0, i = 0; (i != reta_size); ++i) {
-               idx = i / RTE_RETA_GROUP_SIZE;
-               pos = i % RTE_RETA_GROUP_SIZE;
-               if (((reta_conf[idx].mask >> i) & 0x1) == 0)
+               idx = i / RTE_ETH_RETA_GROUP_SIZE;
+               pos = i % RTE_ETH_RETA_GROUP_SIZE;
+               if (((reta_conf[idx].mask >> pos) & 0x1) == 0)
                        continue;
                MLX5_ASSERT(reta_conf[idx].reta[pos] < priv->rxqs_n);
                (*priv->reta_idx)[i] = reta_conf[idx].reta[pos];
        }
-
        priv->skip_default_rss_reta = 1;
-
-       if (dev->data->dev_started) {
-               mlx5_dev_stop(dev);
-               return mlx5_dev_start(dev);
-       }
-       return 0;
+       return mlx5_traffic_restart(dev);
 }