net/mlx5: support descriptor LWM for Rx queue
[dpdk.git] / drivers / net / mlx5 / mlx5_rss.c
index a4f6900..e2b478b 100644 (file)
@@ -65,9 +65,11 @@ 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 &&
+               rxq->ctrl->rxq.rss_hash = !!rss_conf->rss_hf &&
                        !!(dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS);
                ++idx;
        }
@@ -211,17 +213,11 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev,
        for (idx = 0, i = 0; (i != reta_size); ++i) {
                idx = i / RTE_ETH_RETA_GROUP_SIZE;
                pos = i % RTE_ETH_RETA_GROUP_SIZE;
-               if (((reta_conf[idx].mask >> i) & 0x1) == 0)
+               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);
 }