Currently, vector Rx queue release mbufs function is only called from
inside the scalar variant. Decouple them to allow both to be defined
separately from each other, and provide a common function that picks
between the two when necessary.

Signed-off-by: Anatoly Burakov <anatoly.bura...@intel.com>
---

Notes:
    v5:
    - Add this commit

 drivers/net/intel/ixgbe/ixgbe_rxtx.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/drivers/net/intel/ixgbe/ixgbe_rxtx.c 
b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
index fad4a01a10..ecd1f38ac5 100644
--- a/drivers/net/intel/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/intel/ixgbe/ixgbe_rxtx.c
@@ -2970,12 +2970,6 @@ ixgbe_rx_queue_release_mbufs(struct ixgbe_rx_queue *rxq)
 {
        unsigned i;
 
-       /* SSE Vector driver has a different way of releasing mbufs. */
-       if (rxq->vector_rx) {
-               ixgbe_rx_queue_release_mbufs_vec(rxq);
-               return;
-       }
-
        if (rxq->sw_ring != NULL) {
                for (i = 0; i < rxq->nb_rx_desc; i++) {
                        if (rxq->sw_ring[i].mbuf != NULL) {
@@ -3002,11 +2996,20 @@ ixgbe_rx_queue_release_mbufs(struct ixgbe_rx_queue *rxq)
                        }
 }
 
+static void __rte_cold
+ixgbe_rx_queue_release_mbufs_common(struct ixgbe_rx_queue *rxq)
+{
+       if (rxq->vector_rx)
+               ixgbe_rx_queue_release_mbufs_vec(rxq);
+       else
+               ixgbe_rx_queue_release_mbufs(rxq);
+}
+
 static void __rte_cold
 ixgbe_rx_queue_release(struct ixgbe_rx_queue *rxq)
 {
        if (rxq != NULL) {
-               ixgbe_rx_queue_release_mbufs(rxq);
+               ixgbe_rx_queue_release_mbufs_common(rxq);
                rte_free(rxq->sw_ring);
                rte_free(rxq->sw_sc_ring);
                rte_memzone_free(rxq->mz);
@@ -3501,7 +3504,7 @@ ixgbe_dev_clear_queues(struct rte_eth_dev *dev)
                struct ixgbe_rx_queue *rxq = dev->data->rx_queues[i];
 
                if (rxq != NULL) {
-                       ixgbe_rx_queue_release_mbufs(rxq);
+                       ixgbe_rx_queue_release_mbufs_common(rxq);
                        ixgbe_reset_rx_queue(adapter, rxq);
                        dev->data->rx_queue_state[i] = 
RTE_ETH_QUEUE_STATE_STOPPED;
                }
@@ -5701,7 +5704,7 @@ ixgbe_dev_rx_queue_stop(struct rte_eth_dev *dev, uint16_t 
rx_queue_id)
 
        rte_delay_us(RTE_IXGBE_WAIT_100_US);
 
-       ixgbe_rx_queue_release_mbufs(rxq);
+       ixgbe_rx_queue_release_mbufs_common(rxq);
        ixgbe_reset_rx_queue(adapter, rxq);
        dev->data->rx_queue_state[rx_queue_id] = RTE_ETH_QUEUE_STATE_STOPPED;
 
-- 
2.47.1

Reply via email to