examples/l3fwd: add graceful teardown for eventdev
Add graceful teardown that addresses both event mode and poll mode. Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
This commit is contained in:
parent
a434a02d5c
commit
af76ee5043
@ -1092,8 +1092,6 @@ l3fwd_poll_resource_setup(void)
|
||||
ret, portid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
static inline int
|
||||
@ -1191,7 +1189,7 @@ main(int argc, char **argv)
|
||||
uint16_t queueid, portid;
|
||||
unsigned int lcore_id;
|
||||
uint8_t queue;
|
||||
int ret;
|
||||
int i, ret;
|
||||
|
||||
/* init EAL */
|
||||
ret = rte_eal_init(argc, argv);
|
||||
@ -1280,21 +1278,41 @@ main(int argc, char **argv)
|
||||
ret = 0;
|
||||
/* launch per-lcore init on every lcore */
|
||||
rte_eal_mp_remote_launch(l3fwd_lkp.main_loop, NULL, CALL_MASTER);
|
||||
RTE_LCORE_FOREACH_SLAVE(lcore_id) {
|
||||
if (rte_eal_wait_lcore(lcore_id) < 0) {
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (evt_rsrc->enabled) {
|
||||
for (i = 0; i < evt_rsrc->rx_adptr.nb_rx_adptr; i++)
|
||||
rte_event_eth_rx_adapter_stop(
|
||||
evt_rsrc->rx_adptr.rx_adptr[i]);
|
||||
for (i = 0; i < evt_rsrc->tx_adptr.nb_tx_adptr; i++)
|
||||
rte_event_eth_tx_adapter_stop(
|
||||
evt_rsrc->tx_adptr.tx_adptr[i]);
|
||||
|
||||
/* stop ports */
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
printf("Closing port %d...", portid);
|
||||
rte_eth_dev_stop(portid);
|
||||
rte_eth_dev_close(portid);
|
||||
printf(" Done\n");
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
rte_eth_dev_stop(portid);
|
||||
}
|
||||
|
||||
rte_eal_mp_wait_lcore();
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
rte_eth_dev_close(portid);
|
||||
}
|
||||
|
||||
rte_event_dev_stop(evt_rsrc->event_d_id);
|
||||
rte_event_dev_close(evt_rsrc->event_d_id);
|
||||
|
||||
} else {
|
||||
rte_eal_mp_wait_lcore();
|
||||
|
||||
RTE_ETH_FOREACH_DEV(portid) {
|
||||
if ((enabled_port_mask & (1 << portid)) == 0)
|
||||
continue;
|
||||
printf("Closing port %d...", portid);
|
||||
rte_eth_dev_stop(portid);
|
||||
rte_eth_dev_close(portid);
|
||||
printf(" Done\n");
|
||||
}
|
||||
}
|
||||
printf("Bye...\n");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user