DPDK patches and discussions
 help / color / mirror / Atom feed
From: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 04/29] mbuf: added offset of packet meta-data in the packet buffer just after mbuf
Date: Tue, 27 May 2014 18:09:27 +0100	[thread overview]
Message-ID: <1401210592-19732-5-git-send-email-cristian.dumitrescu@intel.com> (raw)
In-Reply-To: <1401210592-19732-1-git-send-email-cristian.dumitrescu@intel.com>

Added zero-size field (offset in data structure) to specify the beginning of packet meta-data in the packet buffer just after the mbuf.

The size of the packet meta-data is application specific and the packet meta-data is managed by the application.

The packet meta-data should always be accessed through the provided macros.

This is used by the Packet Framework libraries (port, table, pipeline).

There is absolutely no performance impact due to this mbuf field, as it does not take any space in the mbuf structure (zero-size field).

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/librte_mbuf/rte_mbuf.h |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 4a9ab41..bf09618 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -201,8 +201,25 @@ struct rte_mbuf {
 		struct rte_ctrlmbuf ctrl;
 		struct rte_pktmbuf pkt;
 	};
+	
+	union {
+		uint8_t metadata[0];
+		uint16_t metadata16[0];
+		uint32_t metadata32[0];
+		uint64_t metadata64[0];
+	};
 } __rte_cache_aligned;
 
+#define RTE_MBUF_METADATA_UINT8(mbuf, offset)       (mbuf->metadata[offset])
+#define RTE_MBUF_METADATA_UINT16(mbuf, offset)      (mbuf->metadata16[offset/sizeof(uint16_t)])
+#define RTE_MBUF_METADATA_UINT32(mbuf, offset)      (mbuf->metadata32[offset/sizeof(uint32_t)])
+#define RTE_MBUF_METADATA_UINT64(mbuf, offset)      (mbuf->metadata64[offset/sizeof(uint64_t)])
+
+#define RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset)   (&mbuf->metadata[offset])
+#define RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset)  (&mbuf->metadata16[offset/sizeof(uint16_t)])
+#define RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset)  (&mbuf->metadata32[offset/sizeof(uint32_t)])
+#define RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset)  (&mbuf->metadata64[offset/sizeof(uint64_t)])
+
 /**
  * Given the buf_addr returns the pointer to corresponding mbuf.
  */
-- 
1.7.7.6

  parent reply	other threads:[~2014-05-27 17:09 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-27 17:09 [dpdk-dev] [PATCH 00/29] Packet Framework Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 01/29] librte_lpm: rule_is_present Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 02/29] hexdump: fixed minor build issue Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 03/29] log: added log IDs for Packet Framework libraries Cristian Dumitrescu
2014-05-27 17:09 ` Cristian Dumitrescu [this message]
2014-05-28 12:03   ` [dpdk-dev] [PATCH 04/29] mbuf: added offset of packet meta-data in the packet buffer just after mbuf Ivan Boule
2014-05-29 22:28     ` Dumitrescu, Cristian
2014-06-02 12:24       ` Ivan Boule
2014-06-05 13:22         ` Dumitrescu, Cristian
2014-05-29 22:37     ` Dumitrescu, Cristian
2014-05-27 17:09 ` [dpdk-dev] [PATCH 05/29] Packet Framework librte_port: Port API Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 06/29] Packet Framework librte_port: ethdev ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 07/29] Packet Framework librte_port: ring ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 08/29] Packet Framework librte_port: IPv4 frag port Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 09/29] Packet Framework librte_port: IPv4 reassembly Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 10/29] Packet Framework librte_port: hierarchical scheduler port Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 11/29] Packet Framework librte_port: Source/Sink ports Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 12/29] Packet Framework librte_port: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 13/29] Packet Framework librte_table: Table API Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 14/29] Packet Framework librte_table: LPM IPv4 table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 15/29] Packet Framework librte_table: LPM IPv6 table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 16/29] Packet Framework librte_table: ACL table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 17/29] Packet Framework librte_table: Hash tables Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 18/29] Packet Framework librte_table: array table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 19/29] Packet Framework librte_table: Stub table Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 20/29] Packet Framework librte_table: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 21/29] Packet Framework librte_pipeline: Pipeline Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 22/29] Packet Framework librte_pipeline: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 23/29] librte_cfgfile: interpret config files Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 24/29] librte_cfgfile: Makefile Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 25/29] Packet Framework: build infrastructure Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 26/29] Packet Framework performance application Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 27/29] Packet Framework IPv4 pipeline sample app Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 28/29] app/Makefile: enable app/test-pipeline Cristian Dumitrescu
2014-05-27 17:09 ` [dpdk-dev] [PATCH 29/29] Packet Framework unit tests Cristian Dumitrescu
2014-05-27 19:47 ` [dpdk-dev] [PATCH 00/29] Packet Framework Neil Horman
2014-05-29 20:06   ` Dumitrescu, Cristian
2014-06-04 14:16 ` Cao, Waterman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1401210592-19732-5-git-send-email-cristian.dumitrescu@intel.com \
    --to=cristian.dumitrescu@intel.com \
    --cc=dev@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).