DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] Fix loss of data stored in udata64 mbuf field
@ 2021-02-04  8:52 Michal Krawczyk
  2021-02-04  9:01 ` David Marchand
  2021-02-04 12:24 ` [dpdk-dev] [PATCH v2] " Michal Krawczyk
  0 siblings, 2 replies; 5+ messages in thread
From: Michal Krawczyk @ 2021-02-04  8:52 UTC (permalink / raw)
  To: dev, keith.wiles; +Cc: igorch, Michal Krawczyk

DPDK v20.11 removed udata64 field, and changed type of the dynfield1 to
uint32_t.

Due to define:
  lib/common/pg_compat.h:#define udata64                 dynfield1[0]
the copy of udata64 was in fact copying only the first 32 bits.

Using udata64 as an address is ok, as it will point to the beginning of
the dynfield1 array.

Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Igor Chauskin <igorch@amazon.com>
---
 lib/common/mbuf.h | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/common/mbuf.h b/lib/common/mbuf.h
index 2951454..07d97ad 100644
--- a/lib/common/mbuf.h
+++ b/lib/common/mbuf.h
@@ -30,7 +30,11 @@ pktmbuf_reset(struct rte_mbuf *m)
 {
 	union pktgen_data d;
 
-	d.udata = m->udata64;	/* Save the original value */
+	/* Save the original value. As udata64 can be either single field or the
+	 * first value of the 32-bit elements array, the whole memory chunk must
+	 * be converted directly to 64-bit.
+	 */
+	d.udata = *(uint64_t *)(&m->udata64);
 
 	rte_pktmbuf_reset(m);
 
-- 
2.25.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-02-04 12:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-04  8:52 [dpdk-dev] [PATCH] Fix loss of data stored in udata64 mbuf field Michal Krawczyk
2021-02-04  9:01 ` David Marchand
2021-02-04  9:17   ` Michał Krawczyk
2021-02-04  9:35     ` Thomas Monjalon
2021-02-04 12:24 ` [dpdk-dev] [PATCH v2] " Michal Krawczyk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).