[dpdk-stable] [PATCH 3/3] net/mlx5: fix flow priority on queue action

Nelio Laranjeiro nelio.laranjeiro at 6wind.com
Wed Feb 14 09:58:31 CET 2018


From: Nélio Laranjeiro <nelio.laranjeiro at 6wind.com>

[ backported from upstream commit c3299d76867f23e595d8e1b3e6b9ad4d6aa87155 ]

A single queue should have the same verbs priority as an RSS one.

Fixes: 8086cf08b2f0 ("net/mlx5: handle RSS hash configuration in RSS flow")
Cc: stable at dpdk.org

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro at 6wind.com>
Acked-by: Yongseok Koh <yskoh at mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c | 30 +-----------------------------
 1 file changed, 1 insertion(+), 29 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index c18c77d48..82efddc5a 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -882,8 +882,6 @@ priv_flow_convert_items_validate(struct priv *priv,
 		}
 		if (parser->drop) {
 			parser->drop_q.offset += cur_item->dst_sz;
-		} else if (parser->queues_n == 1) {
-			parser->queue[HASH_RXQ_ETH].offset += cur_item->dst_sz;
 		} else {
 			for (n = 0; n != hash_rxq_init_n; ++n)
 				parser->queue[n].offset += cur_item->dst_sz;
@@ -1126,19 +1124,6 @@ priv_flow_convert(struct priv *priv,
 		if (!parser->drop_q.ibv_attr)
 			return ENOMEM;
 		parser->drop_q.offset = sizeof(struct ibv_flow_attr);
-	} else if (parser->queues_n == 1) {
-		unsigned int priority =
-			attr->priority +
-			hash_rxq_init[HASH_RXQ_ETH].flow_priority;
-		unsigned int offset = parser->queue[HASH_RXQ_ETH].offset;
-
-		parser->queue[HASH_RXQ_ETH].ibv_attr =
-			priv_flow_convert_allocate(priv, priority,
-						   offset, error);
-		if (!parser->queue[HASH_RXQ_ETH].ibv_attr)
-			return ENOMEM;
-		parser->queue[HASH_RXQ_ETH].offset =
-			sizeof(struct ibv_flow_attr);
 	} else {
 		for (i = 0; i != hash_rxq_init_n; ++i) {
 			unsigned int priority =
@@ -1188,22 +1173,9 @@ priv_flow_convert(struct priv *priv,
 	 * Last step. Complete missing specification to reach the RSS
 	 * configuration.
 	 */
-	if (parser->drop) {
-		/*
-		 * Drop queue priority needs to be adjusted to
-		 * their most specific layer priority.
-		 */
-		parser->drop_q.ibv_attr->priority =
-			attr->priority +
-			hash_rxq_init[parser->layer].flow_priority;
-	} else if (parser->queues_n > 1) {
+	if (!parser->drop) {
 		priv_flow_convert_finalise(priv, parser);
 	} else {
-		/*
-		 * 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;
-- 
2.11.0



More information about the stable mailing list