event/dpaa2: add retry break in packet enqueue

The patch adds the break in the TX function, if it is failing
to send the packets out. Previously the system was trying
infinitely to send packet out.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
This commit is contained in:
Nipun Gupta 2019-09-30 14:02:13 +05:30 committed by Jerin Jacob
parent febcd5a5b3
commit 68bc970461

View File

@ -49,6 +49,7 @@
/* Dynamic logging identified for mempool */
int dpaa2_logtype_event;
#define DPAA2_EV_TX_RETRY_COUNT 10000
static uint16_t
dpaa2_eventdev_enqueue_burst(void *port, const struct rte_event ev[],
@ -59,7 +60,7 @@ dpaa2_eventdev_enqueue_burst(void *port, const struct rte_event ev[],
struct dpaa2_dpio_dev *dpio_dev;
uint32_t queue_id = ev[0].queue_id;
struct dpaa2_eventq *evq_info;
uint32_t fqid;
uint32_t fqid, retry_count;
struct qbman_swp *swp;
struct qbman_fd fd_arr[MAX_TX_RING_SLOTS];
uint32_t loop, frames_to_send;
@ -162,13 +163,25 @@ dpaa2_eventdev_enqueue_burst(void *port, const struct rte_event ev[],
}
send_partial:
loop = 0;
retry_count = 0;
while (loop < frames_to_send) {
loop += qbman_swp_enqueue_multiple_desc(swp,
ret = qbman_swp_enqueue_multiple_desc(swp,
&eqdesc[loop], &fd_arr[loop],
frames_to_send - loop);
if (unlikely(ret < 0)) {
retry_count++;
if (retry_count > DPAA2_EV_TX_RETRY_COUNT) {
num_tx += loop;
nb_events -= loop;
return num_tx + loop;
}
} else {
loop += ret;
retry_count = 0;
}
}
num_tx += frames_to_send;
nb_events -= frames_to_send;
num_tx += loop;
nb_events -= loop;
}
return num_tx;