[dpdk-dev] [PATCH 1/4] rte_mbuf: add rte_pktmbuf_coalesce

Tomasz Kulasek tomaszx.kulasek at intel.com
Fri Dec 2 18:07:43 CET 2016


This patch adds function rte_pktmbuf_coalesce to let crypto PMD coalesce
chained mbuf before crypto operation and extend their capabilities to
support segmented mbufs when device cannot handle them natively.


Signed-off-by: Tomasz Kulasek <tomaszx.kulasek at intel.com>
---
 lib/librte_mbuf/rte_mbuf.h |   34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index ead7c6e..f048681 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -1647,6 +1647,40 @@ static inline int rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf *tail
 }
 
 /**
+ * Coalesce data from mbuf to the continuous buffer.
+ *
+ * @param mbuf_dst
+ *   Contiguous destination mbuf
+ * @param mbuf_src
+ *   Uncontiguous source mbuf
+ *
+ * @return
+ *   - 0, on success
+ *   - -EINVAL, on error
+ */
+
+#include <rte_hexdump.h>
+
+static inline int
+rte_pktmbuf_coalesce(struct rte_mbuf *mbuf_dst, struct rte_mbuf *mbuf_src)
+{
+	char *dst;
+
+	if (!rte_pktmbuf_is_contiguous(mbuf_dst) ||
+			rte_pktmbuf_data_len(mbuf_dst) >=
+			rte_pktmbuf_pkt_len(mbuf_src))
+		return -EINVAL;
+
+	dst = rte_pktmbuf_mtod(mbuf_dst, char *);
+
+	if (!__rte_pktmbuf_read(mbuf_src, 0, rte_pktmbuf_pkt_len(mbuf_src),
+			dst))
+		return -EINVAL;
+
+	return 0;
+}
+
+/**
  * Dump an mbuf structure to a file.
  *
  * Dump all fields for the given packet mbuf and all its associated
-- 
1.7.9.5



More information about the dev mailing list