diff --git a/drivers/event/dlb/dlb.c b/drivers/event/dlb/dlb.c index afef56cdcb..bda696a6c5 100644 --- a/drivers/event/dlb/dlb.c +++ b/drivers/event/dlb/dlb.c @@ -159,6 +159,9 @@ dlb_free_qe_mem(struct dlb_port *qm_port) rte_free(qm_port->consume_qe); qm_port->consume_qe = NULL; + + rte_memzone_free(dlb_port[qm_port->id][PORT_TYPE(qm_port)].mz); + dlb_port[qm_port->id][PORT_TYPE(qm_port)].mz = NULL; } static int @@ -3804,6 +3807,28 @@ dlb_eventdev_close(struct rte_eventdev *dev) return 0; } +static void +dlb_eventdev_port_release(void *port) +{ + struct dlb_eventdev_port *ev_port = port; + + if (ev_port) { + struct dlb_port *qm_port = &ev_port->qm_port; + + if (qm_port->config_state == DLB_CONFIGURED) + dlb_free_qe_mem(qm_port); + } +} + +static void +dlb_eventdev_queue_release(struct rte_eventdev *dev, uint8_t id) +{ + RTE_SET_USED(dev); + RTE_SET_USED(id); + + /* This function intentionally left blank. */ +} + void dlb_entry_points_init(struct rte_eventdev *dev) { @@ -3818,7 +3843,9 @@ dlb_entry_points_init(struct rte_eventdev *dev) .queue_def_conf = dlb_eventdev_queue_default_conf_get, .port_def_conf = dlb_eventdev_port_default_conf_get, .queue_setup = dlb_eventdev_queue_setup, + .queue_release = dlb_eventdev_queue_release, .port_setup = dlb_eventdev_port_setup, + .port_release = dlb_eventdev_port_release, .port_link = dlb_eventdev_port_link, .port_unlink = dlb_eventdev_port_unlink, .port_unlinks_in_progress =