net/mlx4: fix targetless internal rule creation

The corrupted code allowed to create internal rule with no any target
queue in case the rule creation occurred before queues creation.

For example, when user calls rte_eth_dev_default_mac_addr_set after
probe and before dev_configure, mlx4 fails because the RSS queue number
was 0.

The fix prevents internal rules creation before queues creation based on
future creation before traffic start.

Fixes: 7d8675956f ("net/mlx4: add RSS support outside flow API")
Fixes: bdcad2f484 ("net/mlx4: refactor internal flow rules")

Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
This commit is contained in:
Matan Azrad 2017-10-24 10:05:59 +00:00 committed by Ferruh Yigit
parent 412f60a0e1
commit a76bec521a

View File

@ -1290,6 +1290,9 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error)
unsigned int i;
int err = 0;
/* Nothing to be done if there are no Rx queues. */
if (!queues)
goto error;
/* Prepare default RSS configuration. */
*rss_conf = (struct rte_flow_action_rss){
.rss_conf = NULL, /* Rely on default fallback settings. */