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:
parent
a9b3568e73
commit
e21bdfaa2c
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user