diff mbox

Add 64 bit context to packet

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

Commit Message

Robbie King Aug. 19, 2014, 1:01 p.m. UTC
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]

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

Comments

Ola Liljedahl Aug. 19, 2014, 1:46 p.m. UTC | #1
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> 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]
> *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> wrote:
>
> Signed-off-by: Robbie King <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(-)
>
> 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;
> +}
>
> --
> 1.7.7.6
>
>
> _______________________________________________
> lng-odp mailing list
> lng-odp@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
>
> _______________________________________________
> lng-odp mailing list
> 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;
+}