aboutsummaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorZoltan Kiss <zoltan.kiss@linaro.org>2015-07-01 18:06:13 +0100
committerMaxim Uvarov <maxim.uvarov@linaro.org>2015-07-08 17:09:13 +0300
commit561b327d1095ee11d09d58a0a63a6f8b62f7d416 (patch)
tree33e4bcb074a8481f4cbbbcf245238b5f30f4f763 /example
parent089c4e17f5053e2b1f313bd31b456ffe0090e6ef (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.c10
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))