event/dpaa2: add queue parameter in processing callback
authorNipun Gupta <nipun.gupta@nxp.com>
Mon, 23 Oct 2017 12:37:02 +0000 (18:07 +0530)
committerJerin Jacob <jerin.jacob@caviumnetworks.com>
Wed, 25 Oct 2017 12:03:43 +0000 (14:03 +0200)
For event dequeues for ethernet queues, a dpaa2_queue structure is
required to get the configuration for that ethernet queue. Based on
this configuration the rte_event is to be filled at the ingress side.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
drivers/event/dpaa2/dpaa2_eventdev.c

index 8f39cfb..e14a9a9 100644 (file)
@@ -125,9 +125,12 @@ struct queue_storage_info_t {
        int toggle;
 };
 
+struct dpaa2_queue;
+
 typedef void (dpaa2_queue_cb_dqrr_t)(struct qbman_swp *swp,
                const struct qbman_fd *fd,
                const struct qbman_result *dq,
+               struct dpaa2_queue *rxq,
                struct rte_event *ev);
 
 struct dpaa2_queue {
@@ -144,6 +147,7 @@ struct dpaa2_queue {
                struct queue_storage_info_t *q_storage;
                struct qbman_result *cscn;
        };
+       struct rte_event ev;
        dpaa2_queue_cb_dqrr_t *cb;
 };
 
index 81286a8..8a6a3e3 100644 (file)
@@ -189,10 +189,14 @@ RETRY:
 static void dpaa2_eventdev_process_parallel(struct qbman_swp *swp,
                                            const struct qbman_fd *fd,
                                            const struct qbman_result *dq,
+                                           struct dpaa2_queue *rxq,
                                            struct rte_event *ev)
 {
        struct rte_event *ev_temp =
                (struct rte_event *)DPAA2_GET_FD_ADDR(fd);
+
+       RTE_SET_USED(rxq);
+
        rte_memcpy(ev, ev_temp, sizeof(struct rte_event));
        rte_free(ev_temp);
 
@@ -202,6 +206,7 @@ static void dpaa2_eventdev_process_parallel(struct qbman_swp *swp,
 static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
                                          const struct qbman_fd *fd,
                                          const struct qbman_result *dq,
+                                         struct dpaa2_queue *rxq,
                                          struct rte_event *ev)
 {
        struct rte_event *ev_temp =
@@ -209,6 +214,7 @@ static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
        uint8_t dqrr_index = qbman_get_dqrr_idx(dq);
 
        RTE_SET_USED(swp);
+       RTE_SET_USED(rxq);
 
        rte_memcpy(ev, ev_temp, sizeof(struct rte_event));
        rte_free(ev_temp);
@@ -265,7 +271,7 @@ dpaa2_eventdev_dequeue_burst(void *port, struct rte_event ev[],
 
                rxq = (struct dpaa2_queue *)qbman_result_DQ_fqd_ctx(dq);
                if (rxq) {
-                       rxq->cb(swp, fd, dq, &ev[num_pkts]);
+                       rxq->cb(swp, fd, dq, rxq, &ev[num_pkts]);
                } else {
                        qbman_swp_dqrr_consume(swp, dq);
                        PMD_DRV_LOG(ERR, "Null Return VQ received\n");