[dpdk-dev,v2,1/4] drivers: add queue parameter in event processing callback

Message ID 1507828729-18194-1-git-send-email-nipun.gupta@nxp.com (mailing list archive)
State Superseded, archived
Delegated to: Jerin Jacob
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Nipun Gupta Oct. 12, 2017, 5:18 p.m. UTC
  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>
---
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 4 ++++
 drivers/event/dpaa2/dpaa2_eventdev.c    | 8 +++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
  

Comments

Hemant Agrawal Oct. 13, 2017, 2:48 p.m. UTC | #1
On 10/12/2017 10:48 PM, Nipun Gupta wrote:
> 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>
> ---
>  drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 4 ++++
>  drivers/event/dpaa2/dpaa2_eventdev.c    | 8 +++++++-
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
> index 8f39cfb..e14a9a9 100644
> --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
> +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
> @@ -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;
>  };
>
> diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
> index 81286a8..8a6a3e3 100644
> --- a/drivers/event/dpaa2/dpaa2_eventdev.c
> +++ b/drivers/event/dpaa2/dpaa2_eventdev.c
> @@ -189,10 +189,14 @@ static void dpaa2_eventdev_dequeue_wait(uint64_t timeout_ticks)
>  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 @@ static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
>
>  		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");
>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
  

Patch

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index 8f39cfb..e14a9a9 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -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;
 };
 
diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c
index 81286a8..8a6a3e3 100644
--- a/drivers/event/dpaa2/dpaa2_eventdev.c
+++ b/drivers/event/dpaa2/dpaa2_eventdev.c
@@ -189,10 +189,14 @@  static void dpaa2_eventdev_dequeue_wait(uint64_t timeout_ticks)
 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 @@  static void dpaa2_eventdev_process_atomic(struct qbman_swp *swp,
 
 		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");