[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