net/nfp: remove unnecessary forward function declaration
[dpdk.git] / drivers / net / nfp / nfp_rxtx.c
index 1402c5f..cd7faa2 100644 (file)
 #include "nfp_logs.h"
 #include "nfp_ctrl.h"
 
-/* Prototypes */
-static int nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq);
-static inline void nfp_net_mbuf_alloc_failed(struct nfp_net_rxq *rxq);
-static inline void nfp_net_set_hash(struct nfp_net_rxq *rxq,
-                                   struct nfp_net_rx_desc *rxd,
-                                   struct rte_mbuf *mbuf);
-static inline void nfp_net_rx_cksum(struct nfp_net_rxq *rxq,
-                                   struct nfp_net_rx_desc *rxd,
-                                   struct rte_mbuf *mb);
-static void nfp_net_rx_queue_release_mbufs(struct nfp_net_rxq *rxq);
-static int nfp_net_tx_free_bufs(struct nfp_net_txq *txq);
-static void nfp_net_tx_queue_release_mbufs(struct nfp_net_txq *txq);
-static inline uint32_t nfp_free_tx_desc(struct nfp_net_txq *txq);
-static inline uint32_t nfp_net_txq_full(struct nfp_net_txq *txq);
-static inline void nfp_net_tx_tso(struct nfp_net_txq *txq,
-                                 struct nfp_net_tx_desc *txd,
-                                 struct rte_mbuf *mb);
-static inline void nfp_net_tx_cksum(struct nfp_net_txq *txq,
-                                   struct nfp_net_tx_desc *txd,
-                                   struct rte_mbuf *mb);
-
 static int
 nfp_net_rx_fill_freelist(struct nfp_net_rxq *rxq)
 {
@@ -97,14 +76,14 @@ nfp_net_rx_freelist_setup(struct rte_eth_dev *dev)
 }
 
 uint32_t
-nfp_net_rx_queue_count(struct rte_eth_dev *dev, uint16_t queue_idx)
+nfp_net_rx_queue_count(void *rx_queue)
 {
        struct nfp_net_rxq *rxq;
        struct nfp_net_rx_desc *rxds;
        uint32_t idx;
        uint32_t count;
 
-       rxq = (struct nfp_net_rxq *)dev->data->rx_queues[queue_idx];
+       rxq = rx_queue;
 
        idx = rxq->rd_p;
 
@@ -203,7 +182,7 @@ nfp_net_set_hash(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
        }
 
        mbuf->hash.rss = hash;
-       mbuf->ol_flags |= PKT_RX_RSS_HASH;
+       mbuf->ol_flags |= RTE_MBUF_F_RX_RSS_HASH;
 
        switch (hash_type) {
        case NFP_NET_RSS_IPV4:
@@ -245,9 +224,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
        /* If IPv4 and IP checksum error, fail */
        if (unlikely((rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM) &&
            !(rxd->rxd.flags & PCIE_DESC_RX_IP4_CSUM_OK)))
-               mb->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+               mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_BAD;
        else
-               mb->ol_flags |= PKT_RX_IP_CKSUM_GOOD;
+               mb->ol_flags |= RTE_MBUF_F_RX_IP_CKSUM_GOOD;
 
        /* If neither UDP nor TCP return */
        if (!(rxd->rxd.flags & PCIE_DESC_RX_TCP_CSUM) &&
@@ -255,9 +234,9 @@ nfp_net_rx_cksum(struct nfp_net_rxq *rxq, struct nfp_net_rx_desc *rxd,
                return;
 
        if (likely(rxd->rxd.flags & PCIE_DESC_RX_L4_CSUM_OK))
-               mb->ol_flags |= PKT_RX_L4_CKSUM_GOOD;
+               mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_GOOD;
        else
-               mb->ol_flags |= PKT_RX_L4_CKSUM_BAD;
+               mb->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_BAD;
 }
 
 /*
@@ -403,7 +382,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts)
                if ((rxds->rxd.flags & PCIE_DESC_RX_VLAN) &&
                    (hw->ctrl & NFP_NET_CFG_CTRL_RXVLAN)) {
                        mb->vlan_tci = rte_cpu_to_le_32(rxds->rxd.vlan);
-                       mb->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;
+                       mb->ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
                }
 
                /* Adding the mbuf to the mbuf array passed by the app */
@@ -464,12 +443,13 @@ nfp_net_rx_queue_release_mbufs(struct nfp_net_rxq *rxq)
 }
 
 void
-nfp_net_rx_queue_release(void *rx_queue)
+nfp_net_rx_queue_release(struct rte_eth_dev *dev, uint16_t queue_idx)
 {
-       struct nfp_net_rxq *rxq = rx_queue;
+       struct nfp_net_rxq *rxq = dev->data->rx_queues[queue_idx];
 
        if (rxq) {
                nfp_net_rx_queue_release_mbufs(rxq);
+               rte_eth_dma_zone_free(dev, "rx_ring", queue_idx);
                rte_free(rxq->rxbufs);
                rte_free(rxq);
        }
@@ -513,7 +493,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
         * calling nfp_net_stop
         */
        if (dev->data->rx_queues[queue_idx]) {
-               nfp_net_rx_queue_release(dev->data->rx_queues[queue_idx]);
+               nfp_net_rx_queue_release(dev, queue_idx);
                dev->data->rx_queues[queue_idx] = NULL;
        }
 
@@ -523,6 +503,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
        if (rxq == NULL)
                return -ENOMEM;
 
+       dev->data->rx_queues[queue_idx] = rxq;
+
        /* Hw queues mapping based on firmware configuration */
        rxq->qidx = queue_idx;
        rxq->fl_qcidx = queue_idx * hw->stride_rx;
@@ -556,7 +538,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 
        if (tz == NULL) {
                PMD_DRV_LOG(ERR, "Error allocating rx dma");
-               nfp_net_rx_queue_release(rxq);
+               nfp_net_rx_queue_release(dev, queue_idx);
+               dev->data->rx_queues[queue_idx] = NULL;
                return -ENOMEM;
        }
 
@@ -569,7 +552,8 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
                                         sizeof(*rxq->rxbufs) * nb_desc,
                                         RTE_CACHE_LINE_SIZE, socket_id);
        if (rxq->rxbufs == NULL) {
-               nfp_net_rx_queue_release(rxq);
+               nfp_net_rx_queue_release(dev, queue_idx);
+               dev->data->rx_queues[queue_idx] = NULL;
                return -ENOMEM;
        }
 
@@ -578,7 +562,6 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev,
 
        nfp_net_reset_rx_queue(rxq);
 
-       dev->data->rx_queues[queue_idx] = rxq;
        rxq->hw = hw;
 
        /*
@@ -651,12 +634,13 @@ nfp_net_tx_queue_release_mbufs(struct nfp_net_txq *txq)
 }
 
 void
-nfp_net_tx_queue_release(void *tx_queue)
+nfp_net_tx_queue_release(struct rte_eth_dev *dev, uint16_t queue_idx)
 {
-       struct nfp_net_txq *txq = tx_queue;
+       struct nfp_net_txq *txq = dev->data->tx_queues[queue_idx];
 
        if (txq) {
                nfp_net_tx_queue_release_mbufs(txq);
+               rte_eth_dma_zone_free(dev, "tx_ring", queue_idx);
                rte_free(txq->txbufs);
                rte_free(txq);
        }
@@ -714,7 +698,7 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
        if (dev->data->tx_queues[queue_idx]) {
                PMD_TX_LOG(DEBUG, "Freeing memory prior to re-allocation %d",
                           queue_idx);
-               nfp_net_tx_queue_release(dev->data->tx_queues[queue_idx]);
+               nfp_net_tx_queue_release(dev, queue_idx);
                dev->data->tx_queues[queue_idx] = NULL;
        }
 
@@ -726,6 +710,8 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                return -ENOMEM;
        }
 
+       dev->data->tx_queues[queue_idx] = txq;
+
        /*
         * Allocate TX ring hardware descriptors. A memzone large enough to
         * handle the maximum ring size is allocated in order to allow for
@@ -737,7 +723,8 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                                   socket_id);
        if (tz == NULL) {
                PMD_DRV_LOG(ERR, "Error allocating tx dma");
-               nfp_net_tx_queue_release(txq);
+               nfp_net_tx_queue_release(dev, queue_idx);
+               dev->data->tx_queues[queue_idx] = NULL;
                return -ENOMEM;
        }
 
@@ -763,7 +750,8 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
                                         sizeof(*txq->txbufs) * nb_desc,
                                         RTE_CACHE_LINE_SIZE, socket_id);
        if (txq->txbufs == NULL) {
-               nfp_net_tx_queue_release(txq);
+               nfp_net_tx_queue_release(dev, queue_idx);
+               dev->data->tx_queues[queue_idx] = NULL;
                return -ENOMEM;
        }
        PMD_TX_LOG(DEBUG, "txbufs=%p hw_ring=%p dma_addr=0x%" PRIx64,
@@ -771,7 +759,6 @@ nfp_net_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 
        nfp_net_reset_tx_queue(txq);
 
-       dev->data->tx_queues[queue_idx] = txq;
        txq->hw = hw;
 
        /*
@@ -821,7 +808,7 @@ nfp_net_tx_tso(struct nfp_net_txq *txq, struct nfp_net_tx_desc *txd,
 
        ol_flags = mb->ol_flags;
 
-       if (!(ol_flags & PKT_TX_TCP_SEG))
+       if (!(ol_flags & RTE_MBUF_F_TX_TCP_SEG))
                goto clean_txd;
 
        txd->l3_offset = mb->l2_len;
@@ -853,19 +840,19 @@ nfp_net_tx_cksum(struct nfp_net_txq *txq, struct nfp_net_tx_desc *txd,
        ol_flags = mb->ol_flags;
 
        /* IPv6 does not need checksum */
-       if (ol_flags & PKT_TX_IP_CKSUM)
+       if (ol_flags & RTE_MBUF_F_TX_IP_CKSUM)
                txd->flags |= PCIE_DESC_TX_IP4_CSUM;
 
-       switch (ol_flags & PKT_TX_L4_MASK) {
-       case PKT_TX_UDP_CKSUM:
+       switch (ol_flags & RTE_MBUF_F_TX_L4_MASK) {
+       case RTE_MBUF_F_TX_UDP_CKSUM:
                txd->flags |= PCIE_DESC_TX_UDP_CSUM;
                break;
-       case PKT_TX_TCP_CKSUM:
+       case RTE_MBUF_F_TX_TCP_CKSUM:
                txd->flags |= PCIE_DESC_TX_TCP_CSUM;
                break;
        }
 
-       if (ol_flags & (PKT_TX_IP_CKSUM | PKT_TX_L4_MASK))
+       if (ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_L4_MASK))
                txd->flags |= PCIE_DESC_TX_CSUM;
 }
 
@@ -929,7 +916,7 @@ nfp_net_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
                nfp_net_tx_tso(txq, &txd, pkt);
                nfp_net_tx_cksum(txq, &txd, pkt);
 
-               if ((pkt->ol_flags & PKT_TX_VLAN_PKT) &&
+               if ((pkt->ol_flags & RTE_MBUF_F_TX_VLAN) &&
                    (hw->cap & NFP_NET_CFG_CTRL_TXVLAN)) {
                        txd.flags |= PCIE_DESC_TX_VLAN;
                        txd.vlan = pkt->vlan_tci;