aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/pktio/loop.c
diff options
context:
space:
mode:
authorJere Leppänen <jere.leppanen@nokia.com>2022-02-25 17:00:00 +0200
committerPetri Savolainen <petri.savolainen@nokia.com>2022-03-31 16:35:49 +0300
commit43e4ead4cd1149f956f13e9968679b424240948f (patch)
treef210dfc264495f730d007af2d3a24a1b3aa7a27e /platform/linux-generic/pktio/loop.c
parent76c8b7a1a90f1eb895944627c9f76c9ed03d7136 (diff)
linux-gen: drop error packets according to pktin configuration
When encountering a packet error in packet parser and pktin has been configured to drop on that kind of packet error, return an error, which causes pktio to drop the packet. 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/loop.c')
-rw-r--r--platform/linux-generic/pktio/loop.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index ed190904f..3e21efecd 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -164,6 +164,7 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
uint32_t octets = 0;
const odp_proto_chksums_t chksums = pktio_entry->s.in_chksums;
const odp_proto_layer_t layer = pktio_entry->s.parse_layer;
+ const odp_pktin_config_opt_t opt = pktio_entry->s.config.pktin;
if (odp_unlikely(num > QUEUE_MULTI_MAX))
num = QUEUE_MULTI_MAX;
@@ -173,8 +174,7 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
queue = pkt_priv(pktio_entry)->loopq;
nbr = odp_queue_deq_multi(queue, (odp_event_t *)hdr_tbl, num);
- if (pktio_entry->s.config.pktin.bit.ts_all ||
- pktio_entry->s.config.pktin.bit.ts_ptp) {
+ if (opt.bit.ts_all || opt.bit.ts_ptp) {
ts_val = odp_time_global();
ts = &ts_val;
}
@@ -207,7 +207,7 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
packet_parse_reset(pkt_hdr, 1);
ret = _odp_packet_parse_common(&pkt_hdr->p, pkt_addr, pkt_len,
seg_len, layer, chksums,
- &l4_part_sum);
+ &l4_part_sum, opt);
if (ret)
errors++;