[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