aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/pktio
diff options
context:
space:
mode:
authorJere Leppänen <jere.leppanen@nokia.com>2022-02-18 17:18:57 +0200
committerPetri Savolainen <petri.savolainen@nokia.com>2022-03-10 09:33:44 +0200
commitdc7f5007df02313cae586cc70271f051136957f1 (patch)
treef8a1546af3e42617281f380353826e74ba67b3b0 /platform/linux-generic/pktio
parentaf031b28a9db982103a596fece368272079d9623 (diff)
linux-gen: pktio: loop: fix counters
Increment in_errors only on parse errors, and in_packets and in_octets only on successfully parsed and classified errorless packets. Signed-off-by: Jere Leppänen <jere.leppanen@nokia.com> Reviewed-by: Matias Elo <matias.elo@nokia.com> Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform/linux-generic/pktio')
-rw-r--r--platform/linux-generic/pktio/loop.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index 6b56d9dff..4611c6d5b 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -159,7 +159,8 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_time_t ts_val;
odp_time_t *ts = NULL;
int num_rx = 0;
- int failed = 0;
+ int packets = 0, errors = 0;
+ uint32_t octets = 0;
if (odp_unlikely(num > QUEUE_MULTI_MAX))
num = QUEUE_MULTI_MAX;
@@ -207,8 +208,10 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
ret = _odp_packet_parse_common(&pkt_hdr->p, pkt_addr, pkt_len,
seg_len, ODP_PROTO_LAYER_ALL,
pktio_entry->s.in_chksums);
+ if (ret)
+ errors++;
+
if (ret < 0) {
- failed++;
odp_packet_free(pkt);
continue;
}
@@ -216,7 +219,6 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
ret = _odp_cls_classify_packet(pktio_entry, pkt_addr,
&new_pool, pkt_hdr);
if (ret) {
- failed++;
odp_packet_free(pkt);
continue;
}
@@ -256,12 +258,17 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
odp_packet_has_ipsec(pkt))
_odp_ipsec_try_inline(&pkt);
- pktio_entry->s.stats.in_octets += pkt_len;
+ if (!pkt_hdr->p.flags.all.error) {
+ octets += pkt_len;
+ packets++;
+ }
+
pkts[num_rx++] = pkt;
}
- pktio_entry->s.stats.in_errors += failed;
- pktio_entry->s.stats.in_packets += num_rx;
+ pktio_entry->s.stats.in_octets += octets;
+ pktio_entry->s.stats.in_packets += packets;
+ pktio_entry->s.stats.in_errors += errors;
odp_ticketlock_unlock(&pktio_entry->s.rxl);