net/dpaa2: stop using software annotation
[dpdk.git] / drivers / net / dpaa2 / dpaa2_ethdev.c
index 157a2d0..007eda7 100644 (file)
@@ -49,6 +49,7 @@
 #include <fslmc_vfio.h>
 #include <dpaa2_hw_pvt.h>
 #include <dpaa2_hw_mempool.h>
+#include <dpaa2_hw_dpio.h>
 
 #include "dpaa2_ethdev.h"
 
@@ -169,9 +170,8 @@ dpaa2_alloc_rx_tx_queues(struct rte_eth_dev *dev)
 
                memset(dpaa2_q->q_storage, 0,
                       sizeof(struct queue_storage_info_t));
-               dpaa2_q->q_storage->dq_storage[0] = rte_malloc(NULL,
-                       DPAA2_DQRR_RING_SIZE * sizeof(struct qbman_result),
-                       RTE_CACHE_LINE_SIZE);
+               if (dpaa2_alloc_dq_storage(dpaa2_q->q_storage))
+                       goto fail;
        }
 
        for (i = 0; i < priv->nb_tx_queues; i++) {
@@ -195,7 +195,7 @@ fail:
        mc_q = priv->rx_vq[0];
        while (i >= 0) {
                dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[i];
-               rte_free(dpaa2_q->q_storage->dq_storage[0]);
+               dpaa2_free_dq_storage(dpaa2_q->q_storage);
                rte_free(dpaa2_q->q_storage);
                priv->rx_vq[i--] = NULL;
        }
@@ -277,6 +277,17 @@ dpaa2_dev_rx_queue_setup(struct rte_eth_dev *dev,
        options = options | DPNI_QUEUE_OPT_USER_CTX;
        cfg.user_context = (uint64_t)(dpaa2_q);
 
+       /*if ls2088 or rev2 device, enable the stashing */
+       if ((qbman_get_version() & 0xFFFF0000) > QMAN_REV_4000) {
+               options |= DPNI_QUEUE_OPT_FLC;
+               cfg.flc.stash_control = true;
+               cfg.flc.value &= 0xFFFFFFFFFFFFFFC0;
+               /* 00 00 00 - last 6 bit represent annotation, context stashing,
+                * data stashing setting 01 01 00 (0x14) to enable
+                * 1 line data, 1 line annotation
+                */
+               cfg.flc.value |= 0x14;
+       }
        ret = dpni_set_queue(dpni, CMD_PRI_LOW, priv->token, DPNI_QUEUE_RX,
                             dpaa2_q->tc_index, flow_id, options, &cfg);
        if (ret) {
@@ -750,7 +761,6 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
        struct dpaa2_dev_priv *priv = eth_dev->data->dev_private;
        struct dpni_buffer_layout layout;
        int i, ret, hw_id;
-       int tot_size;
 
        PMD_INIT_FUNC_TRACE();
 
@@ -843,30 +853,6 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
                return -ret;
        }
 
-       /* ... rx buffer layout ... */
-       tot_size = DPAA2_HW_BUF_RESERVE + RTE_PKTMBUF_HEADROOM;
-       tot_size = RTE_ALIGN_CEIL(tot_size,
-                                 DPAA2_PACKET_LAYOUT_ALIGN);
-
-       memset(&layout, 0, sizeof(struct dpni_buffer_layout));
-       layout.options = DPNI_BUF_LAYOUT_OPT_FRAME_STATUS |
-                               DPNI_BUF_LAYOUT_OPT_PARSER_RESULT |
-                               DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM |
-                               DPNI_BUF_LAYOUT_OPT_PRIVATE_DATA_SIZE;
-
-       layout.pass_frame_status = 1;
-       layout.data_head_room = tot_size
-               - DPAA2_FD_PTA_SIZE - DPAA2_MBUF_HW_ANNOTATION;
-       layout.private_data_size = DPAA2_FD_PTA_SIZE;
-       layout.pass_parser_result = 1;
-       PMD_INIT_LOG(DEBUG, "Tot_size = %d, head room = %d, private = %d",
-                    tot_size, layout.data_head_room, layout.private_data_size);
-       ret = dpni_set_buffer_layout(dpni_dev, CMD_PRI_LOW, priv->token,
-                                    DPNI_QUEUE_RX, &layout);
-       if (ret) {
-               PMD_INIT_LOG(ERR, "Err(%d) in setting rx buffer layout", ret);
-               return -1;
-       }
 
        /* ... tx buffer layout ... */
        memset(&layout, 0, sizeof(struct dpni_buffer_layout));
@@ -897,6 +883,8 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev)
 
        eth_dev->rx_pkt_burst = dpaa2_dev_rx;
        eth_dev->tx_pkt_burst = dpaa2_dev_tx;
+       rte_fslmc_vfio_dmamap();
+
        return 0;
 }