diff options
author | Zoltan Kiss <zoltan.kiss@linaro.org> | 2015-07-01 18:06:13 +0100 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2015-07-08 17:09:13 +0300 |
commit | 561b327d1095ee11d09d58a0a63a6f8b62f7d416 (patch) | |
tree | 33e4bcb074a8481f4cbbbcf245238b5f30f4f763 /example | |
parent | 089c4e17f5053e2b1f313bd31b456ffe0090e6ef (diff) |
packet_io: release unsent packets after odp_pktio_send()
Signed-off-by: Zoltan Kiss <zoltan.kiss@linaro.org>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org>
Diffstat (limited to 'example')
-rw-r--r-- | example/packet/odp_pktio.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/example/packet/odp_pktio.c b/example/packet/odp_pktio.c index f08d9f4..0b4a8f1 100644 --- a/example/packet/odp_pktio.c +++ b/example/packet/odp_pktio.c @@ -282,9 +282,17 @@ static void *pktio_ifburst_thread(void *arg) /* Drop packets with errors */ pkts_ok = drop_err_pkts(pkt_tbl, pkts); if (pkts_ok > 0) { + int sent; + /* Swap Eth MACs and IP-addrs */ swap_pkt_addrs(pkt_tbl, pkts_ok); - odp_pktio_send(pktio, pkt_tbl, pkts_ok); + sent = odp_pktio_send(pktio, pkt_tbl, pkts_ok); + if (odp_unlikely(sent < pkts_ok)) { + err_cnt += pkts_ok - sent; + do + odp_packet_free(pkt_tbl[sent]); + while (++sent < pkts_ok); + } } if (odp_unlikely(pkts_ok != pkts)) |