net/mlx4: fix queue index check on flow rules

Users are not prevented from creating flow rules targeting nonexistent
queues, which silently makes such rules drop-like.

While it can be thought as a feature, reporting an error instead is
actually far more useful in order to catch common mistakes.

Fixes: 078b8b452e ("net/mlx4: add RSS flow rule action support")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
Adrien Mazarguil 2017-10-31 11:31:07 +01:00 committed by Ferruh Yigit
parent a9b3568e73
commit e21bdfaa2c

View File

@ -734,6 +734,11 @@ mlx4_flow_prepare(struct priv *priv,
if (flow->rss)
break;
queue = action->conf;
if (queue->index >= priv->dev->data->nb_rx_queues) {
msg = "queue target index beyond number of"
" configured Rx queues";
goto exit_action_not_supported;
}
flow->rss = mlx4_rss_get
(priv, 0, mlx4_rss_hash_key_default, 1,
&queue->index);
@ -760,6 +765,15 @@ mlx4_flow_prepare(struct priv *priv,
ETH_RSS_NONFRAG_IPV6_TCP),
};
/* Sanity checks. */
for (i = 0; i < rss->num; ++i)
if (rss->queue[i] >=
priv->dev->data->nb_rx_queues)
break;
if (i != rss->num) {
msg = "queue index target beyond number of"
" configured Rx queues";
goto exit_action_not_supported;
}
if (!rte_is_power_of_2(rss->num)) {
msg = "for RSS, mlx4 requires the number of"
" queues to be a power of two";