event/dpaa2: fix debug build
[dpdk.git] / drivers / event / dpaa2 / dpaa2_eventdev.c
index a7f8516..ff11618 100644 (file)
@@ -93,7 +93,7 @@ dpaa2_eventdev_enqueue_burst(void *port, const struct rte_event ev[],
        if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
                ret = dpaa2_affine_qbman_swp();
                if (ret) {
-                       PMD_DRV_LOG(ERR, PMD, "Failure in affining portal\n");
+                       PMD_DRV_LOG(ERR, "Failure in affining portal\n");
                        return 0;
                }
        }
@@ -162,6 +162,31 @@ dpaa2_eventdev_enqueue(void *port, const struct rte_event *ev)
        return dpaa2_eventdev_enqueue_burst(port, ev, 1);
 }
 
+static void dpaa2_eventdev_dequeue_wait(uint64_t timeout_ticks)
+{
+       struct epoll_event epoll_ev;
+       int ret, i = 0;
+
+       qbman_swp_interrupt_clear_status(DPAA2_PER_LCORE_PORTAL,
+                                        QBMAN_SWP_INTERRUPT_DQRI);
+
+RETRY:
+       ret = epoll_wait(DPAA2_PER_LCORE_DPIO->epoll_fd,
+                        &epoll_ev, 1, timeout_ticks);
+       if (ret < 1) {
+               /* sometimes due to some spurious interrupts epoll_wait fails
+                * with errno EINTR. so here we are retrying epoll_wait in such
+                * case to avoid the problem.
+                */
+               if (errno == EINTR) {
+                       PMD_DRV_LOG(DEBUG, "epoll_wait fails\n");
+                       if (i++ > 10)
+                               PMD_DRV_LOG(DEBUG, "Dequeue burst Failed\n");
+               goto RETRY;
+               }
+       }
+}
+
 static void dpaa2_eventdev_process_parallel(struct qbman_swp *swp,
                                            const struct qbman_fd *fd,
                                            const struct qbman_result *dq,
@@ -204,12 +229,11 @@ dpaa2_eventdev_dequeue_burst(void *port, struct rte_event ev[],
        int num_pkts = 0, ret, i = 0;
 
        RTE_SET_USED(port);
-       RTE_SET_USED(timeout_ticks);
 
        if (unlikely(!DPAA2_PER_LCORE_DPIO)) {
                ret = dpaa2_affine_qbman_swp();
                if (ret) {
-                       PMD_DRV_LOG(ERR, PMD, "Failure in affining portal\n");
+                       PMD_DRV_LOG(ERR, "Failure in affining portal\n");
                        return 0;
                }
        }
@@ -229,8 +253,14 @@ dpaa2_eventdev_dequeue_burst(void *port, struct rte_event ev[],
 
        do {
                dq = qbman_swp_dqrr_next(swp);
-               if (!dq)
-                       return 0;
+               if (!dq) {
+                       if (!num_pkts && timeout_ticks) {
+                               dpaa2_eventdev_dequeue_wait(timeout_ticks);
+                               timeout_ticks = 0;
+                               continue;
+                       }
+                       return num_pkts;
+               }
 
                fd = qbman_result_DQ_fd(dq);
 
@@ -239,7 +269,7 @@ dpaa2_eventdev_dequeue_burst(void *port, struct rte_event ev[],
                        rxq->cb(swp, fd, dq, &ev[num_pkts]);
                } else {
                        qbman_swp_dqrr_consume(swp, dq);
-                       PMD_DRV_LOG(ERR, PMD, "Null Return VQ received\n");
+                       PMD_DRV_LOG(ERR, "Null Return VQ received\n");
                        return 0;
                }
 
@@ -565,7 +595,7 @@ dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev,
                                        dpci_dev->token, i,
                                        &rx_queue_cfg);
                if (ret) {
-                       PMD_DRV_LOG(ERR, PMD,
+                       PMD_DRV_LOG(ERR,
                                    "set_rx_q failed with err code: %d", ret);
                        return ret;
                }
@@ -594,6 +624,8 @@ dpaa2_eventdev_create(const char *name)
        eventdev->schedule      = NULL;
        eventdev->enqueue       = dpaa2_eventdev_enqueue;
        eventdev->enqueue_burst = dpaa2_eventdev_enqueue_burst;
+       eventdev->enqueue_new_burst = dpaa2_eventdev_enqueue_burst;
+       eventdev->enqueue_forward_burst = dpaa2_eventdev_enqueue_burst;
        eventdev->dequeue       = dpaa2_eventdev_dequeue;
        eventdev->dequeue_burst = dpaa2_eventdev_dequeue_burst;
 
@@ -619,7 +651,7 @@ dpaa2_eventdev_create(const char *name)
 
                ret = dpaa2_eventdev_setup_dpci(dpci_dev, dpcon_dev);
                if (ret) {
-                       PMD_DRV_LOG(ERR, PMD,
+                       PMD_DRV_LOG(ERR,
                                    "dpci setup failed with err code: %d", ret);
                        return ret;
                }
@@ -637,7 +669,7 @@ dpaa2_eventdev_probe(struct rte_vdev_device *vdev)
        const char *name;
 
        name = rte_vdev_device_name(vdev);
-       PMD_DRV_LOG(INFO, PMD, "Initializing %s\n", name);
+       PMD_DRV_LOG(INFO, "Initializing %s", name);
        return dpaa2_eventdev_create(name);
 }