Only call odp_pktio_close on opened pktio and output an error message if odp_pktio_close failed.
Fixes: https://bugs.linaro.org/show_bug.cgi?id=1854 Signed-off-by: Nicolas Morey-Chaisemartin <nmo...@kalray.eu> --- platform/linux-generic/odp_packet_io.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 1245745..3b9c963 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -37,6 +37,16 @@ static inline int entry_id_to_pktio_id(int entry_id) return entry_id + 1; } +static int is_free(pktio_entry_t *entry) +{ + return (entry->s.taken == 0); +} + +static void set_free(pktio_entry_t *entry) +{ + entry->s.taken = 0; +} + int odp_pktio_init_global(void) { char name[ODP_QUEUE_NAME_LEN]; @@ -101,7 +111,10 @@ int odp_pktio_term_global(void) for (id = 0; id < ODP_CONFIG_PKTIO_ENTRIES; ++id) { pktio_entry = &pktio_tbl->entries[id]; - odp_pktio_close(pktio_entry->s.handle); + if (!is_free(pktio_entry)) + if (odp_pktio_close(pktio_entry->s.handle)) + ODP_ERR("failed to close pktio %d", + entry_id_to_pktio_id(id)); odp_queue_destroy(pktio_entry->s.outq_default); } @@ -124,16 +137,6 @@ int odp_pktio_init_local(void) return 0; } -static int is_free(pktio_entry_t *entry) -{ - return (entry->s.taken == 0); -} - -static void set_free(pktio_entry_t *entry) -{ - entry->s.taken = 0; -} - static void set_taken(pktio_entry_t *entry) { entry->s.taken = 1; -- 2.6.1.3.g8d02103 _______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp