net/mlx5: add Tx/Rx burst function selection wrapper
authorNélio Laranjeiro <nelio.laranjeiro@6wind.com>
Fri, 24 Jun 2016 13:17:51 +0000 (15:17 +0200)
committerBruce Richardson <bruce.richardson@intel.com>
Mon, 27 Jun 2016 14:17:52 +0000 (16:17 +0200)
These wrappers are meant to prevent code duplication later.

Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro@6wind.com>
Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_ethdev.c
drivers/net/mlx5/mlx5_txq.c

index 935e1b0..3dca03d 100644 (file)
@@ -196,6 +196,8 @@ void priv_dev_interrupt_handler_install(struct priv *, struct rte_eth_dev *);
 int mlx5_set_link_down(struct rte_eth_dev *dev);
 int mlx5_set_link_up(struct rte_eth_dev *dev);
 struct priv *mlx5_secondary_data_setup(struct priv *priv);
+void priv_select_tx_function(struct priv *);
+void priv_select_rx_function(struct priv *);
 
 /* mlx5_mac.c */
 
index 4095a06..759434e 100644 (file)
@@ -1099,8 +1099,8 @@ priv_set_link(struct priv *priv, int up)
                err = priv_set_flags(priv, ~IFF_UP, IFF_UP);
                if (err)
                        return err;
-               dev->rx_pkt_burst = mlx5_rx_burst;
-               dev->tx_pkt_burst = mlx5_tx_burst;
+               priv_select_tx_function(priv);
+               priv_select_rx_function(priv);
        } else {
                err = priv_set_flags(priv, ~IFF_UP, ~IFF_UP);
                if (err)
@@ -1290,13 +1290,11 @@ mlx5_secondary_data_setup(struct priv *priv)
        rte_mb();
        priv->dev->data = &sd->data;
        rte_mb();
-       priv->dev->tx_pkt_burst = mlx5_tx_burst;
-       priv->dev->rx_pkt_burst = removed_rx_burst;
+       priv_select_tx_function(priv);
+       priv_select_rx_function(priv);
        priv_unlock(priv);
 end:
        /* More sanity checks. */
-       assert(priv->dev->tx_pkt_burst == mlx5_tx_burst);
-       assert(priv->dev->rx_pkt_burst == removed_rx_burst);
        assert(priv->dev->data == &sd->data);
        rte_spinlock_unlock(&sd->lock);
        return priv;
@@ -1307,3 +1305,27 @@ error:
        rte_spinlock_unlock(&sd->lock);
        return NULL;
 }
+
+/**
+ * Configure the TX function to use.
+ *
+ * @param priv
+ *   Pointer to private structure.
+ */
+void
+priv_select_tx_function(struct priv *priv)
+{
+       priv->dev->tx_pkt_burst = mlx5_tx_burst;
+}
+
+/**
+ * Configure the RX function to use.
+ *
+ * @param priv
+ *   Pointer to private structure.
+ */
+void
+priv_select_rx_function(struct priv *priv)
+{
+       priv->dev->rx_pkt_burst = mlx5_rx_burst;
+}
index 51210f2..ec4488a 100644 (file)
@@ -478,7 +478,7 @@ mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
                      (void *)dev, (void *)txq_ctrl);
                (*priv->txqs)[idx] = &txq_ctrl->txq;
                /* Update send callback. */
-               dev->tx_pkt_burst = mlx5_tx_burst;
+               priv_select_tx_function(priv);
        }
        priv_unlock(priv);
        return -ret;