[dpdk-dev] [PATCH v4 16/22] event/dlb: add dequeue and its burst variants

Eads, Gage gage.eads at intel.com
Thu Oct 8 23:48:10 CEST 2020



> -----Original Message-----
> From: McDaniel, Timothy <timothy.mcdaniel at intel.com>
> Sent: Friday, September 11, 2020 2:19 PM
> Cc: dev at dpdk.org; Carrillo, Erik G <erik.g.carrillo at intel.com>; Eads, Gage
> <gage.eads at intel.com>; Van Haaren, Harry <harry.van.haaren at intel.com>;
> jerinj at marvell.com
> Subject: [PATCH v4 16/22] event/dlb: add dequeue and its burst variants
> 
> Add support for dequeue, dequeue_burst, ...

This message could use some more detail.

[...]

> +static inline int
> +dlb_process_dequeue_qes(struct dlb_eventdev_port *ev_port,
> +			struct dlb_port *qm_port,
> +			struct rte_event *events,
> +			struct dlb_dequeue_qe *qes,
> +			int cnt)
> +{
> +	uint8_t *qid_mappings = qm_port->qid_mappings;
> +	int i, num;
> +
> +	RTE_SET_USED(ev_port);  /* avoids unused variable error */
> +
> +	for (i = 0, num = 0; i < cnt; i++) {
> +		struct dlb_dequeue_qe *qe = &qes[i];
> +		int sched_type_map[4] = {
> +			[DLB_SCHED_ATOMIC] = RTE_SCHED_TYPE_ATOMIC,
> +			[DLB_SCHED_UNORDERED] =
> RTE_SCHED_TYPE_PARALLEL,
> +			[DLB_SCHED_ORDERED] = RTE_SCHED_TYPE_ORDERED,
> +			[DLB_SCHED_DIRECTED] = RTE_SCHED_TYPE_ATOMIC,
> +		};
> +
> +		DLB_LOG_DBG("dequeue success, data = 0x%llx, qid=%d,
> event_type=%d, subevent=%d\npp_id = %d, sched_type = %d, qid = %d,
> err=%d\n",
> +			    (long long)qe->data, qe->qid,
> +			    qe->u.event_type.major,
> +			    qe->u.event_type.sub,
> +			    qe->pp_id, qe->sched_type, qe->qid, qe->error);
> +
> +		/* Fill in event information.
> +		 * Note that flow_id must be embedded in the data by
> +		 * the app, such as the mbuf RSS hash field if the data
> +		 * buffer is a mbuf.
> +		 */
> +		if (unlikely(qe->error)) {
> +			DLB_LOG_ERR("QE error bit ON\n");
> +			DLB_INC_STAT(ev_port->stats.traffic.rx_drop, 1);
> +			dlb_consume_qe_immediate(qm_port, 1);
> +			continue; /* Ignore */
> +		}
> +
> +		events[num].u64 = qe->data;
> +		events[num].queue_id = qid_mappings[qe->qid];
> +		events[num].priority = DLB_TO_EV_PRIO((uint8_t)qe->priority);
> +		events[num].event_type = qe->u.event_type.major;
> +		events[num].sub_event_type = qe->u.event_type.sub;
> +		events[num].sched_type = sched_type_map[qe->sched_type];
> +		DLB_INC_STAT(ev_port->stats.rx_sched_cnt[qe->sched_type],
> 1);
> +
> +		DLB_INC_STAT(ev_port->stats.traffic.rx_ok, 1);

Move this outside the loop and increment by num rather than 1?

> +
> +		num++;
> +	}
> +
> +	return num;
> +}

Thanks,
Gage


More information about the dev mailing list