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-06 15:14:43 +0300
commit44873a7965cd7d7a23906b830f24cf1f46ac0da3 (patch)
treee243dee7b1ccb21e0968a6622f3bfe19e910b429 /example
parent3b114bdd00e9994ee8ceac357a23e385ab8b979d (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 7430b09..7ff7d8f 100644
--- a/example/packet/odp_pktio.c
+++ b/example/packet/odp_pktio.c
@@ -299,9 +299,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))