vCGNAPT: correcting to use default rte_ring_dequeue 23/35723/4
authorAnand B Jyoti <anand.b.jyoti@intel.com>
Fri, 2 Jun 2017 05:07:48 +0000 (10:37 +0530)
committerAnand B Jyoti <anand.b.jyoti@intel.com>
Tue, 27 Jun 2017 03:29:14 +0000 (08:59 +0530)
JIRA: SAMPLEVNF-19

The rte_ring_sc_dequeue returns ENOENT in DPDK16.04 while ENOBUFS in
DPDK17.05. This leads to error in return value checking and mis behaviour.

Using of rte_ring_sc_dequeue() to be avoided to use the default
configuration as set during the creation of the queue as per the
DPDK API documentation. Similarly corrected for mp_dequeue as well.

Change-Id: Iacee1349b26d6ab432be891fad12313a6d68ca4d
Signed-off-by: Anand B Jyoti <anand.b.jyoti@intel.com>
VNFs/vCGNAPT/pipeline/pipeline_timer_be.c

index bfe8f5c..7ba4964 100644 (file)
@@ -113,7 +113,7 @@ void timer_thread_enqueue(struct pipeline_cgnapt_entry_key *egress_key,
                                        sizeof(struct cgnapt_table_entry));
        }
 
-       if (rte_ring_mp_enqueue(timer_ring, (void *)tk_ptr) == -ENOBUFS)
+       if (rte_ring_enqueue(timer_ring, (void *)tk_ptr) == -ENOBUFS)
                printf("Ring enqueue failed: trying to enqueue\n");
 }
 
@@ -126,7 +126,7 @@ void timer_thread_dequeue(void)
        struct timer_key *tk_ptr;
        int ret;
 
-       ret = rte_ring_sc_dequeue(timer_ring, (void *)&tk_ptr);
+       ret = rte_ring_dequeue(timer_ring, (void *)&tk_ptr);
        if (ret == -ENOENT)
                return;
 
@@ -444,8 +444,8 @@ static void *pipeline_timer_init(struct pipeline_params *params, void *arg)
        if (timer_key_mempool == NULL)
                rte_panic("timer_key_mempool create error\n");
 
-       timer_ring = rte_ring_create("TIMER_RING",
-                                                timer_ring_alloc_cnt, rte_socket_id(), 0);
+       timer_ring = rte_ring_create("TIMER_RING", timer_ring_alloc_cnt,
+                       rte_socket_id(), RING_F_SC_DEQ);
 
        if (timer_ring == NULL)
                rte_panic("timer_ring creation failed");