aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/odp_traffic_mngr.c
diff options
context:
space:
mode:
authorPetri Savolainen <petri.savolainen@nokia.com>2021-04-07 11:52:14 +0300
committerPetri Savolainen <petri.savolainen@nokia.com>2021-04-07 16:51:21 +0300
commit90a9952616cec177b4f9df1e9a3443dd8f699ec1 (patch)
treedf7760562b21627173d23e13e75bb12a6b4068dc /platform/linux-generic/odp_traffic_mngr.c
parent4ef6808992011615551936198def770f334f6600 (diff)
linux-gen: tm: check function return value
Add missing function return value checks. Signed-off-by: Petri Savolainen <petri.savolainen@nokia.com> Reviewed-by: Janne Peltonen <janne.peltonen@nokia.com>
Diffstat (limited to 'platform/linux-generic/odp_traffic_mngr.c')
-rw-r--r--platform/linux-generic/odp_traffic_mngr.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c
index 0ae107509..1633bc454 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -2246,12 +2246,14 @@ static void tm_send_pkt(tm_system_t *tm_system, uint32_t max_sends)
tm_egress_marking(tm_system, odp_pkt);
tm_system->egress_pkt_desc = EMPTY_PKT_DESC;
- if (tm_system->egress.egress_kind == ODP_TM_EGRESS_PKT_IO)
- odp_pktout_send(tm_system->pktout, &odp_pkt, 1);
- else if (tm_system->egress.egress_kind == ODP_TM_EGRESS_FN)
+ if (tm_system->egress.egress_kind == ODP_TM_EGRESS_PKT_IO) {
+ if (odp_pktout_send(tm_system->pktout, &odp_pkt, 1) != 1)
+ odp_packet_free(odp_pkt);
+ } else if (tm_system->egress.egress_kind == ODP_TM_EGRESS_FN) {
tm_system->egress.egress_fcn(odp_pkt);
- else
+ } else {
return;
+ }
tm_queue_obj->sent_pkt = tm_queue_obj->pkt;
tm_queue_obj->sent_pkt_desc = tm_queue_obj->in_pkt_desc;
@@ -2515,7 +2517,9 @@ static void *tm_system_thread(void *arg)
}
odp_barrier_wait(&tm_system->tm_system_destroy_barrier);
- odp_term_local();
+ if (odp_term_local() < 0)
+ ODP_ERR("Term local failed\n");
+
return NULL;
}
@@ -3966,7 +3970,15 @@ odp_tm_queue_t odp_tm_queue_create(odp_tm_t odp_tm,
}
queue_obj->queue = queue;
- odp_queue_context_set(queue, queue_obj, sizeof(tm_queue_obj_t));
+ if (odp_queue_context_set(queue, queue_obj, sizeof(tm_queue_obj_t))) {
+ ODP_ERR("Queue context set failed\n");
+ if (odp_queue_destroy(queue))
+ ODP_ERR("Queue destroy failed\n");
+
+ odp_tm_queue = ODP_TM_INVALID;
+ break;
+ }
+
_odp_queue_fn->set_enq_deq_fn(queue, queue_tm_reenq,
queue_tm_reenq_multi, NULL, NULL);