From: Jun Yang <[email protected]> The array tracking Rx queues attached to an event queue used a separate DPAA2_EVENTQ_DPNI_RXQ_ATTACH_MAX (128) bound, which was unrelated to the event queue flow limit. Reuse the existing DPAA2_EVENT_MAX_QUEUE_FLOWS limit instead so a single value governs how many flows can target one event queue.
Reduce DPAA2_EVENT_MAX_QUEUE_FLOWS from 2048 to 1024, size the dpni_rxqs[] array by that limit, and drop the now unused DPAA2_EVENTQ_DPNI_RXQ_ATTACH_MAX define. Widen dpni_rxq_num and the local attach index to uint16_t so they can hold the larger count, and update the attach error message to report the offending event queue. Signed-off-by: Jun Yang <[email protected]> --- drivers/event/dpaa2/dpaa2_eventdev.c | 6 +++--- drivers/event/dpaa2/dpaa2_eventdev.h | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c index be6d8bc3da..cd2b00c3c9 100644 --- a/drivers/event/dpaa2/dpaa2_eventdev.c +++ b/drivers/event/dpaa2/dpaa2_eventdev.c @@ -48,11 +48,11 @@ dpaa2_eventdev_attach_eth_rxq(const struct rte_eth_dev *dev, { int ret; uint8_t ev_qid = queue_conf->ev.queue_id; - uint8_t idx = priv->evq_info[ev_qid].dpni_rxq_num; + uint16_t idx = priv->evq_info[ev_qid].dpni_rxq_num; struct dpaa2_dpcon_dev *dpcon = priv->evq_info[ev_qid].dpcon; - if (idx >= DPAA2_EVENTQ_DPNI_RXQ_ATTACH_MAX) { - DPAA2_EVENTDEV_ERR("Too many queues to attach."); + if (idx >= DPAA2_EVENT_MAX_QUEUE_FLOWS) { + DPAA2_EVENTDEV_ERR("Too many flows to attach eventq%d", ev_qid); return -ENOMEM; } ret = dpaa2_eth_eventq_attach(dev, rxq_id, dpcon, queue_conf); diff --git a/drivers/event/dpaa2/dpaa2_eventdev.h b/drivers/event/dpaa2/dpaa2_eventdev.h index 0a98088fe1..adeb22bda6 100644 --- a/drivers/event/dpaa2/dpaa2_eventdev.h +++ b/drivers/event/dpaa2/dpaa2_eventdev.h @@ -19,7 +19,7 @@ #define DPAA2_EVENT_MIN_DEQUEUE_TIMEOUT 1 #define DPAA2_EVENT_MAX_DEQUEUE_TIMEOUT (UINT32_MAX - 1) #define DPAA2_EVENT_PORT_DEQUEUE_TIMEOUT_NS 100UL -#define DPAA2_EVENT_MAX_QUEUE_FLOWS 2048 +#define DPAA2_EVENT_MAX_QUEUE_FLOWS 1024 #define DPAA2_EVENT_MAX_QUEUE_PRIORITY_LEVELS 8 #define DPAA2_EVENT_MAX_EVENT_PRIORITY_LEVELS 0 #define DPAA2_EVENT_MAX_NUM_EVENTS (INT32_MAX - 1) @@ -52,7 +52,6 @@ enum { */ #define DPAA2_EVENTQ_LINK_CONF_MAX 4 /** Max schedule type + 1.*/ -#define DPAA2_EVENTQ_DPNI_RXQ_ATTACH_MAX 128 struct dpaa2_eventq { int valid; void *event_port; @@ -64,8 +63,8 @@ struct dpaa2_eventq { uint32_t event_queue_cfg; uint32_t event_queue_id; struct dpaa2_queue *dpci_txqs[DPAA2_EVENTQ_LINK_CONF_MAX]; - uint8_t dpni_rxq_num; - struct dpaa2_queue *dpni_rxqs[DPAA2_EVENTQ_DPNI_RXQ_ATTACH_MAX]; + uint16_t dpni_rxq_num; + struct dpaa2_queue *dpni_rxqs[DPAA2_EVENT_MAX_QUEUE_FLOWS]; }; struct dpaa2_port { -- 2.43.0

