pktio_entry already has a 'state' field, why not using that?
On 15/02/16 10:50, Matias Elo wrote:
Free/close open resources in odp_pktio_close(). Reviewed-by: Petri Savolainen <petri.savolai...@nokia.com> Signed-off-by: Matias Elo <matias....@nokia.com> --- platform/linux-generic/include/odp_packet_dpdk.h | 1 + platform/linux-generic/pktio/dpdk.c | 19 ++++++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/platform/linux-generic/include/odp_packet_dpdk.h b/platform/linux-generic/include/odp_packet_dpdk.h index 9c8f7be..a085582 100644 --- a/platform/linux-generic/include/odp_packet_dpdk.h +++ b/platform/linux-generic/include/odp_packet_dpdk.h @@ -54,6 +54,7 @@ typedef struct { uint16_t mtu; /**< maximum transmission unit */ /** DPDK packet pool name (pktpool_<ifname>) */ char pool_name[IF_NAMESIZE + 8]; + odp_bool_t started; /**< DPDK device has been started */ uint8_t port_id; /**< DPDK port identifier */ unsigned min_rx_burst; /**< minimum RX burst size */ odp_pktin_hash_proto_t hash; /**< Packet input hash protocol */ diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c index 1082c59..c81bb43 100644 --- a/platform/linux-generic/pktio/dpdk.c +++ b/platform/linux-generic/pktio/dpdk.c @@ -217,8 +217,23 @@ static int dpdk_setup_port(pktio_entry_t *pktio_entry) return 0; } -static int dpdk_close(pktio_entry_t *pktio_entry ODP_UNUSED) +static int dpdk_close(pktio_entry_t *pktio_entry) { + pkt_dpdk_t *pkt_dpdk = &pktio_entry->s.pkt_dpdk; + unsigned idx; + unsigned i, j; + + /* Free cache packets */ + for (i = 0; i < PKTIO_MAX_QUEUES; i++) { + idx = pkt_dpdk->rx_cache[i].s.idx; + + for (j = 0; j < pkt_dpdk->rx_cache[i].s.count; j++) + rte_pktmbuf_free(pkt_dpdk->rx_cache[i].s.pkt[idx++]); + } + + if (pkt_dpdk->started) + rte_eth_dev_close(pkt_dpdk->port_id); + return 0; } @@ -515,6 +530,8 @@ static int dpdk_start(pktio_entry_t *pktio_entry) ret, port_id); return -1; } + pkt_dpdk->started = 1; + return 0; }
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp