Bill Fischofer(Bill-Fischofer-Linaro) replied on github web page:

platform/linux-generic/odp_packet_io.c
line 50
@@ -638,8 +638,20 @@ static odp_buffer_hdr_t *pktin_dequeue(queue_t q_int)
        if (pkts <= 0)
                return NULL;
 
-       if (pkts > 1)
-               queue_fn->enq_multi(q_int, &hdr_tbl[1], pkts - 1);
+       if (pkts > 1) {
+               int num_enq;
+               int num = pkts - 1;
+
+               num_enq = queue_fn->enq_multi(q_int, &hdr_tbl[1], num);
+
+               if (odp_unlikely(num_enq < num)) {
+                       if (odp_unlikely(num_enq < 0))
+                               num_enq = 0;
+
+                       buffer_free_multi(&hdr_tbl[num_enq + 1], num - num_enq);


Comment:
Worth an `ODP_DBG()` here? At minimum I'd think we'd want to capture some sort 
of statistic for these drops.

Same comment for the rest of the similar drops in this commit.

> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
> If we relax this to cover atomic and parallel queues then this would simply 
> be:
> ```
> int use_stash = !queue_is_ordered(qi);
> ```


>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>> Is it really necessary to restrict this optimization to atomic queues? 
>> Ordered obviously cannot be stashed, but parallel queues make no ordering 
>> guarantees so accelerating them like this would also seem reasonable. In 
>> that case the `atomic` variable to this function would be better named 
>> something like `use_stash` .


>>> Bill Fischofer(Bill-Fischofer-Linaro) wrote:
>>> Might be nice to say which interface wasn't started here for debug purposes 
>>> since many could be in play.


https://github.com/Linaro/odp/pull/504#discussion_r171715495
updated_at 2018-03-01 22:37:20

Reply via email to