Priority is wrongly configured when the action is queue, using the Ethernet
layer priority instead of the most specific layer found.

Fixes: 8086cf08b2f0 ("net/mlx5: handle RSS hash configuration in RSS flow")

Signed-off-by: Nelio Laranjeiro <nelio.laranje...@6wind.com>
Acked-by: Yongseok Koh <ys...@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 2b6380fb9..440bda9a1 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -1172,8 +1172,18 @@ priv_flow_convert(struct priv *priv,
         * Last step. Complete missing specification to reach the RSS
         * configuration.
         */
-       if (parser->queues_n > 1)
+       if (parser->queues_n > 1) {
                priv_flow_convert_finalise(priv, parser);
+       } else if (!parser->drop) {
+               /*
+                * Action queue have their priority overridden with
+                * Ethernet priority, this priority needs to be adjusted to
+                * their most specific layer priority.
+                */
+               parser->queue[HASH_RXQ_ETH].ibv_attr->priority =
+                       attr->priority +
+                       hash_rxq_init[parser->layer].flow_priority;
+       }
 exit_free:
        /* Only verification is expected, all resources should be released. */
        if (!parser->create) {
-- 
2.11.0

Reply via email to