aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/pktio
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2021-10-05 15:08:56 +0300
committerMatias Elo <matias.elo@nokia.com>2021-10-05 15:08:56 +0300
commitb616736e0bceda598fb9056e65d3206efd1ab50f (patch)
tree2c57374dd6f07c005c6509586fef37c0e323e05a /platform/linux-generic/pktio
parent54ca03915ddf070a3c67f6a3c89f442c202a1adb (diff)
parentec78e5305c387cef47be7479d2b9f85482e20b40 (diff)
Merge tag 'v1.32.0.0' of https://github.com/OpenDataPlane/odp into odp-dpdk
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Diffstat (limited to 'platform/linux-generic/pktio')
-rw-r--r--platform/linux-generic/pktio/dpdk.c2
-rw-r--r--platform/linux-generic/pktio/loop.c13
2 files changed, 11 insertions, 4 deletions
diff --git a/platform/linux-generic/pktio/dpdk.c b/platform/linux-generic/pktio/dpdk.c
index a98324ee4..9abba6292 100644
--- a/platform/linux-generic/pktio/dpdk.c
+++ b/platform/linux-generic/pktio/dpdk.c
@@ -288,7 +288,7 @@ static inline void mbuf_update(struct rte_mbuf *mbuf, odp_packet_hdr_t *pkt_hdr,
mbuf->refcnt = 1;
mbuf->ol_flags = 0;
- if (odp_unlikely(pkt_hdr->buf_hdr.base_data != pkt_hdr->seg_data))
+ if (odp_unlikely(((uint8_t *)mbuf->buf_addr + mbuf->data_off) != pkt_hdr->seg_data))
mbuf->data_off = mbuf_data_off(mbuf, pkt_hdr);
}
diff --git a/platform/linux-generic/pktio/loop.c b/platform/linux-generic/pktio/loop.c
index 437977771..889a270ea 100644
--- a/platform/linux-generic/pktio/loop.c
+++ b/platform/linux-generic/pktio/loop.c
@@ -172,9 +172,16 @@ static int loopback_recv(pktio_entry_t *pktio_entry, int index ODP_UNUSED,
pkt_hdr = packet_hdr(new_pkt);
}
} else {
- _odp_packet_parse_layer(pkt_hdr,
- pktio_entry->s.config.parser.layer,
- pktio_entry->s.in_chksums);
+ odp_packet_parse_param_t param;
+
+ /*
+ * Use odp_packet_parse() which can handle segmented
+ * packets.
+ */
+ param.proto = ODP_PROTO_ETH;
+ param.last_layer = pktio_entry->s.config.parser.layer;
+ param.chksums = pktio_entry->s.in_chksums;
+ odp_packet_parse(packet_handle(pkt_hdr), 0, &param);
}
packet_set_ts(pkt_hdr, ts);