[v2,1/4] mbuf: add accessor function for private data area

Message ID 20180618233534.21611-1-dg@adax.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series mbuf: Add new private data area accessor function. |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation fail Compilation issues

Commit Message

Dan Gora June 18, 2018, 11:35 p.m. UTC
  Add an inline accessor function to return the starting address of
the private data area in the supplied mbuf.

This allows applications to easily access the private data area between
the struct rte_mbuf and the data buffer in the specified mbuf without
creating private macros or accessor functions.

No checks are made to ensure that a private data area actually exists
in the buffer.

Signed-off-by: Dan Gora <dg@adax.com>
---
 lib/librte_mbuf/rte_mbuf.h | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
  

Comments

Andrew Rybchenko June 19, 2018, 12:56 p.m. UTC | #1
On 06/19/2018 02:35 AM, Dan Gora wrote:
> Add an inline accessor function to return the starting address of
> the private data area in the supplied mbuf.
>
> This allows applications to easily access the private data area between
> the struct rte_mbuf and the data buffer in the specified mbuf without
> creating private macros or accessor functions.
>
> No checks are made to ensure that a private data area actually exists
> in the buffer.
>
> Signed-off-by: Dan Gora <dg@adax.com>

Reviewed-by: Andrew Rybchenko <arybchenko@solarflare.com>
  
Olivier Matz June 26, 2018, 7:39 a.m. UTC | #2
Hi Dan,

On Mon, Jun 18, 2018 at 04:35:34PM -0700, Dan Gora wrote:
> Add an inline accessor function to return the starting address of
> the private data area in the supplied mbuf.
> 
> This allows applications to easily access the private data area between
> the struct rte_mbuf and the data buffer in the specified mbuf without
> creating private macros or accessor functions.
> 
> No checks are made to ensure that a private data area actually exists
> in the buffer.
> 
> Signed-off-by: Dan Gora <dg@adax.com>

Thank you for this patch.

Few (late) comments to your previous questions:

- about rte_mbuf vs rte_pktmbuf, as Andrew said pktmbuf was used in
  the past when there was a ctrlmbuf. This one has been removed now, so
  mbuf should be used.

- I agree that removing the test (m->priv_size == 0) is better for
  the reasons mentionned, and also because it would add a test in the
  dataplane area, which would sometimes be useless: the application create
  the mbuf pools, so it can know that all mbufs have a priv area.


Acked-by: Olivier Matz <olivier.matz@6wind.com>
  
Thomas Monjalon July 13, 2018, 9:10 p.m. UTC | #3
26/06/2018 09:39, Olivier Matz:
> Hi Dan,
> 
> On Mon, Jun 18, 2018 at 04:35:34PM -0700, Dan Gora wrote:
> > Add an inline accessor function to return the starting address of
> > the private data area in the supplied mbuf.
> > 
> > This allows applications to easily access the private data area between
> > the struct rte_mbuf and the data buffer in the specified mbuf without
> > creating private macros or accessor functions.
> > 
> > No checks are made to ensure that a private data area actually exists
> > in the buffer.
> > 
> > Signed-off-by: Dan Gora <dg@adax.com>
> 
> Thank you for this patch.
> 
> Few (late) comments to your previous questions:
> 
> - about rte_mbuf vs rte_pktmbuf, as Andrew said pktmbuf was used in
>   the past when there was a ctrlmbuf. This one has been removed now, so
>   mbuf should be used.
> 
> - I agree that removing the test (m->priv_size == 0) is better for
>   the reasons mentionned, and also because it would add a test in the
>   dataplane area, which would sometimes be useless: the application create
>   the mbuf pools, so it can know that all mbufs have a priv area.
> 
> 
> Acked-by: Olivier Matz <olivier.matz@6wind.com>

Series applied
  

Patch

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 8e6b4d292..08c58335d 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -728,6 +728,24 @@  rte_mbuf_to_baddr(struct rte_mbuf *md)
 	return buffer_addr;
 }
 
+/**
+ * Return the starting address of the private data area embedded in
+ * the given mbuf.
+ *
+ * Note that no check is made to ensure that a private data area
+ * actually exists in the supplied mbuf.
+ *
+ * @param md
+ *   The pointer to the mbuf.
+ * @return
+ *   The starting address of the private data area of the given mbuf.
+ */
+static inline void * __rte_experimental
+rte_mbuf_to_priv(struct rte_mbuf *m)
+{
+	return RTE_PTR_ADD(m, sizeof(struct rte_mbuf));
+}
+
 /**
  * Returns TRUE if given mbuf is cloned by mbuf indirection, or FALSE
  * otherwise.