diff mbox

Add 64 bit context to packet

Message ID C1BBCB674C57E643932FC661E0B0D466239CFA04@xmb-aln-x01.cisco.com
State New
Headers show

Commit Message

Robbie King Aug. 19, 2014, 2:07 p.m. UTC
Actually that is what I originally had (“ctx” as a void *).  For some reason I had it in my
head that there were folks that didn’t like that and would prefer the 64 bit opaque value
that the app was free to use as it saw fit.   I will submit the original.

From: Ola Liljedahl [mailto:ola.liljedahl@linaro.org]

Sent: Tuesday, August 19, 2014 9:47 AM
To: Robbie King (robking)
Cc: Bill Fischofer; lng-odp-forward
Subject: Re: [lng-odp] [PATCH] Add 64 bit context to packet

Better use a pointer than a 64 bit integer. On a 32 bit system, someone may use this to store both a pointer and a 32-bit value of some type. This won't port to a 64-bit system as the pointer alone will consume all reserved space.
As Bill writes, use intptr_t or why not just a "void *" if a pointer is what you want?

On 19 August 2014 15:01, Robbie King (robking) <robking@cisco.com<mailto:robking@cisco.com>> wrote:
Pointer is really all I’m looking for.  Just wanted to get as many ‘tidbits’ out of
the way before the IPsec application patch.

From: Bill Fischofer [mailto:bill.fischofer@linaro.org<mailto:bill.fischofer@linaro.org>]

Sent: Tuesday, August 19, 2014 8:58 AM
To: Robbie King (robking)
Cc: lng-odp-forward
Subject: Re: [lng-odp] [PATCH] Add 64 bit context to packet

Are you really wanting to define a 64-bit integer or are you looking for a pointer?  uint64_t is not portable to 32-bit systems, however intptr_t is guaranteed to be a native pointer type of appropriate size.

Bill

On Tue, Aug 19, 2014 at 7:46 AM, Robbie King <robking@cisco.com<mailto:robking@cisco.com>> wrote:
Signed-off-by: Robbie King <robking@cisco.com<mailto:robking@cisco.com>>

---
 include/odp_packet.h                               |   18 ++++++++++++++++++
 .../linux-generic/include/odp_packet_internal.h    |    2 ++
 platform/linux-generic/odp_packet.c                |   10 ++++++++++
 3 files changed, 30 insertions(+), 0 deletions(-)
--
1.7.7.6


_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org<mailto:lng-odp@lists.linaro.org>
http://lists.linaro.org/mailman/listinfo/lng-odp


_______________________________________________
lng-odp mailing list
lng-odp@lists.linaro.org<mailto:lng-odp@lists.linaro.org>
http://lists.linaro.org/mailman/listinfo/lng-odp
diff mbox

Patch

diff --git a/include/odp_packet.h b/include/odp_packet.h
index ef4be9e..db75540 100644
--- a/include/odp_packet.h
+++ b/include/odp_packet.h
@@ -98,6 +98,24 @@  void odp_packet_set_len(odp_packet_t pkt, size_t len);
 size_t odp_packet_get_len(odp_packet_t pkt);

 /**
+ * Set packet user context
+ *
+ * @param buf      Packet handle
+ * @param ctx      User context
+ *
+ */
+void odp_packet_set_ctx(odp_packet_t buf, uint64_t ctx);
+
+/**
+ * Get packet user context
+ *
+ * @param buf      Packet handle
+ *
+ * @return User context
+ */
+uint64_t odp_packet_get_ctx(odp_packet_t buf);
+
+/**
  * Get address to the start of the packet buffer
  *
  * The address of the packet buffer is not necessarily the same as the start
diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index 0ab3be2..49c59b2 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -112,6 +112,8 @@  typedef struct {

        uint32_t frame_len;

+       uint64_t user_ctx;        /* user context */
+
        odp_pktio_t input;

        uint32_t pad;
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 13e2471..bbfef49 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -386,3 +386,13 @@  int odp_packet_copy(odp_packet_t pkt_dst, odp_packet_t pkt_src)

        return 0;
 }
+
+void odp_packet_set_ctx(odp_packet_t pkt, uint64_t ctx)
+{
+       odp_packet_hdr(pkt)->user_ctx = ctx;
+}
+
+uint64_t odp_packet_get_ctx(odp_packet_t pkt)
+{
+       return odp_packet_hdr(pkt)->user_ctx;
+}