Keep original logic but make function more clear.
Signed-off-by: Maxim Uvarov <[email protected]>
---
platform/linux-generic/odp_packet_io.c | 62 +++++++++++++++-------------------
1 file changed, 27 insertions(+), 35 deletions(-)
diff --git a/platform/linux-generic/odp_packet_io.c
b/platform/linux-generic/odp_packet_io.c
index f35193f..d4af13e 100644
--- a/platform/linux-generic/odp_packet_io.c
+++ b/platform/linux-generic/odp_packet_io.c
@@ -416,31 +416,24 @@ int pktin_enqueue(queue_entry_t *qentry, odp_buffer_hdr_t
*buf_hdr)
odp_buffer_hdr_t *pktin_dequeue(queue_entry_t *qentry)
{
odp_buffer_hdr_t *buf_hdr;
+ odp_buffer_t buf;
+ odp_packet_t pkt_tbl[QUEUE_MULTI_MAX];
+ odp_buffer_hdr_t *tmp_hdr_tbl[QUEUE_MULTI_MAX];
+ int pkts, i;
buf_hdr = queue_deq(qentry);
+ if (buf_hdr != NULL)
+ return buf_hdr;
- if (buf_hdr == NULL) {
- odp_packet_t pkt;
- odp_buffer_t buf;
- odp_packet_t pkt_tbl[QUEUE_MULTI_MAX];
- odp_buffer_hdr_t *tmp_hdr_tbl[QUEUE_MULTI_MAX];
- int pkts, i, j;
-
- pkts = odp_pktio_recv(qentry->s.pktin, pkt_tbl,
- QUEUE_MULTI_MAX);
-
- if (pkts > 0) {
- pkt = pkt_tbl[0];
- buf = odp_packet_to_buffer(pkt);
- buf_hdr = odp_buf_to_hdr(buf);
+ pkts = odp_pktio_recv(qentry->s.pktin, pkt_tbl, QUEUE_MULTI_MAX);
+ if (pkts <= 0)
+ return buf_hdr;
- for (i = 1, j = 0; i < pkts; ++i) {
- buf = odp_packet_to_buffer(pkt_tbl[i]);
- tmp_hdr_tbl[j++] = odp_buf_to_hdr(buf);
- }
- queue_enq_multi(qentry, tmp_hdr_tbl, j);
- }
+ for (i = 0; i < pkts; ++i) {
+ buf = odp_packet_to_buffer(pkt_tbl[i]);
+ tmp_hdr_tbl[i] = odp_buf_to_hdr(buf);
}
+ queue_enq_multi(qentry, tmp_hdr_tbl, i);
return buf_hdr;
}
@@ -454,25 +447,24 @@ int pktin_enq_multi(queue_entry_t *qentry,
odp_buffer_hdr_t *buf_hdr[], int num)
int pktin_deq_multi(queue_entry_t *qentry, odp_buffer_hdr_t *buf_hdr[], int
num)
{
int nbr;
+ odp_packet_t pkt_tbl[QUEUE_MULTI_MAX];
+ odp_buffer_hdr_t *tmp_hdr_tbl[QUEUE_MULTI_MAX];
+ odp_buffer_t buf;
+ int pkts, i;
nbr = queue_deq_multi(qentry, buf_hdr, num);
+ if (nbr >= num)
+ return nbr;
- if (nbr < num) {
- odp_packet_t pkt_tbl[QUEUE_MULTI_MAX];
- odp_buffer_hdr_t *tmp_hdr_tbl[QUEUE_MULTI_MAX];
- odp_buffer_t buf;
- int pkts, i;
-
- pkts = odp_pktio_recv(qentry->s.pktin, pkt_tbl,
- QUEUE_MULTI_MAX);
- if (pkts > 0) {
- for (i = 0; i < pkts; ++i) {
- buf = odp_packet_to_buffer(pkt_tbl[i]);
- tmp_hdr_tbl[i] = odp_buf_to_hdr(buf);
- }
- queue_enq_multi(qentry, tmp_hdr_tbl, pkts);
- }
+ pkts = odp_pktio_recv(qentry->s.pktin, pkt_tbl, QUEUE_MULTI_MAX);
+ if (pkts <= 0)
+ return nbr;
+
+ for (i = 0; i < pkts; ++i) {
+ buf = odp_packet_to_buffer(pkt_tbl[i]);
+ tmp_hdr_tbl[i] = odp_buf_to_hdr(buf);
}
+ queue_enq_multi(qentry, tmp_hdr_tbl, pkts);
return nbr;
}
--
1.8.5.1.163.gd7aced9
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp