[dpdk-dev,v2,4/5] net/mlx5: select Rx/Tx callbacks when starting device

Message ID 3ba42c1e789e2b930a07ca61517487f8374d37f5.1498850005.git.yskoh@mellanox.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Yongseok Koh June 30, 2017, 7:23 p.m. UTC
  The callbacks are global to a device but the seletion is made every queue
configuration, which is redundant.

Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxq.c     | 2 --
 drivers/net/mlx5/mlx5_trigger.c | 3 +++
 drivers/net/mlx5/mlx5_txq.c     | 2 --
 3 files changed, 3 insertions(+), 4 deletions(-)
  

Comments

Nélio Laranjeiro July 3, 2017, 1:49 p.m. UTC | #1
On Fri, Jun 30, 2017 at 12:23:32PM -0700, Yongseok Koh wrote:
> The callbacks are global to a device but the seletion is made every queue
> configuration, which is redundant.
> 
> Signed-off-by: Yongseok Koh <yskoh@mellanox.com>

Same here, already acked in v1.

Acked-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
  

Patch

diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c
index 22be999e8..98b20eb92 100644
--- a/drivers/net/mlx5/mlx5_rxq.c
+++ b/drivers/net/mlx5/mlx5_rxq.c
@@ -1226,8 +1226,6 @@  mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		DEBUG("%p: adding RX queue %p to list",
 		      (void *)dev, (void *)rxq_ctrl);
 		(*priv->rxqs)[idx] = &rxq_ctrl->rxq;
-		/* Update receive callback. */
-		priv_select_rx_function(priv);
 	}
 	priv_unlock(priv);
 	return -ret;
diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c
index 40f23da93..595a9e064 100644
--- a/drivers/net/mlx5/mlx5_trigger.c
+++ b/drivers/net/mlx5/mlx5_trigger.c
@@ -72,6 +72,9 @@  mlx5_dev_start(struct rte_eth_dev *dev)
 		priv_unlock(priv);
 		return 0;
 	}
+	/* Update Rx/Tx callback. */
+	priv_select_tx_function(priv);
+	priv_select_rx_function(priv);
 	DEBUG("%p: allocating and configuring hash RX queues", (void *)dev);
 	err = priv_create_hash_rxqs(priv);
 	if (!err)
diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c
index ac9dfc5f0..03e23f58d 100644
--- a/drivers/net/mlx5/mlx5_txq.c
+++ b/drivers/net/mlx5/mlx5_txq.c
@@ -496,8 +496,6 @@  mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
 		DEBUG("%p: adding TX queue %p to list",
 		      (void *)dev, (void *)txq_ctrl);
 		(*priv->txqs)[idx] = &txq_ctrl->txq;
-		/* Update send callback. */
-		priv_select_tx_function(priv);
 	}
 	priv_unlock(priv);
 	return -ret;