All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiaolong Ye <xiaolong.ye@intel.com>
To: dev@dpdk.org, David Marchand <david.marchand@redhat.com>,
	Andrew Rybchenko <arybchenko@solarflare.com>
Cc: Qi Zhang <qi.z.zhang@intel.com>,
	Karlsson Magnus <magnus.karlsson@intel.com>,
	Topel Bjorn <bjorn.topel@intel.com>,
	Maxime Coquelin <maxime.coquelin@redhat.com>,
	Stephen Hemminger <stephen@networkplumber.org>,
	Ferruh Yigit <ferruh.yigit@intel.com>,
	Luca Boccassi <bluca@debian.org>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Ananyev Konstantin <konstantin.ananyev@intel.com>,
	Xiaolong Ye <xiaolong.ye@intel.com>
Subject: [PATCH v7 2/5] lib/mbuf: introduce helper to create mempool with flags
Date: Wed, 27 Mar 2019 17:00:24 +0800	[thread overview]
Message-ID: <20190327090027.72170-3-xiaolong.ye@intel.com> (raw)
In-Reply-To: <20190327090027.72170-1-xiaolong.ye@intel.com>

This allows applications to create mbuf mempool with specific flags
such as MEMPOOL_F_NO_SPREAD if they want fixed size memory objects.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 lib/librte_mbuf/rte_mbuf.c           | 29 ++++++++++++++----
 lib/librte_mbuf/rte_mbuf.h           | 45 ++++++++++++++++++++++++++++
 lib/librte_mbuf/rte_mbuf_version.map |  1 +
 3 files changed, 70 insertions(+), 5 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c
index 21f6f7404..c1db9e298 100644
--- a/lib/librte_mbuf/rte_mbuf.c
+++ b/lib/librte_mbuf/rte_mbuf.c
@@ -106,11 +106,10 @@ rte_pktmbuf_init(struct rte_mempool *mp,
 	m->next = NULL;
 }
 
-/* Helper to create a mbuf pool with given mempool ops name*/
-struct rte_mempool *
-rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
+static struct rte_mempool *
+rte_pktmbuf_pool_create_by_ops_with_flags(const char *name, unsigned int n,
 	unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size,
-	int socket_id, const char *ops_name)
+	unsigned int flags, int socket_id, const char *ops_name)
 {
 	struct rte_mempool *mp;
 	struct rte_pktmbuf_pool_private mbp_priv;
@@ -130,7 +129,7 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
 	mbp_priv.mbuf_priv_size = priv_size;
 
 	mp = rte_mempool_create_empty(name, n, elt_size, cache_size,
-		 sizeof(struct rte_pktmbuf_pool_private), socket_id, 0);
+		 sizeof(struct rte_pktmbuf_pool_private), socket_id, flags);
 	if (mp == NULL)
 		return NULL;
 
@@ -157,6 +156,16 @@ rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
 	return mp;
 }
 
+/* Helper to create a mbuf pool with given mempool ops name*/
+struct rte_mempool *
+rte_pktmbuf_pool_create_by_ops(const char *name, unsigned int n,
+	unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size,
+	int socket_id, const char *ops_name)
+{
+	return rte_pktmbuf_pool_create_by_ops_with_flags(name, n, cache_size,
+			 priv_size, data_room_size, 0, socket_id, ops_name);
+}
+
 /* helper to create a mbuf pool */
 struct rte_mempool *
 rte_pktmbuf_pool_create(const char *name, unsigned int n,
@@ -167,6 +176,16 @@ rte_pktmbuf_pool_create(const char *name, unsigned int n,
 			data_room_size, socket_id, NULL);
 }
 
+/* helper to create a mbuf pool with flags (e.g. NO_SPREAD) */
+struct rte_mempool * __rte_experimental
+rte_pktmbuf_pool_create_with_flags(const char *name, unsigned int n,
+	unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size,
+	unsigned int flags, int socket_id)
+{
+	return rte_pktmbuf_pool_create_by_ops_with_flags(name, n, cache_size,
+			priv_size, data_room_size, flags, socket_id, NULL);
+}
+
 /* do some sanity checks on a mbuf: panic if it fails */
 void
 rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header)
diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index d961ccaf6..105ead6de 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -1266,6 +1266,51 @@ rte_pktmbuf_pool_create(const char *name, unsigned n,
 	unsigned cache_size, uint16_t priv_size, uint16_t data_room_size,
 	int socket_id);
 
+/**
+ * Create a mbuf pool with flags.
+ *
+ * This function creates and initializes a packet mbuf pool. It is
+ * a wrapper to rte_mempool functions.
+ *
+ * @warning
+ * @b EXPERIMENTAL: This API may change without prior notice.
+ *
+ * @param name
+ *   The name of the mbuf pool.
+ * @param n
+ *   The number of elements in the mbuf pool. The optimum size (in terms
+ *   of memory usage) for a mempool is when n is a power of two minus one:
+ *   n = (2^q - 1).
+ * @param cache_size
+ *   Size of the per-core object cache. See rte_mempool_create() for
+ *   details.
+ * @param priv_size
+ *   Size of application private are between the rte_mbuf structure
+ *   and the data buffer. This value must be aligned to RTE_MBUF_PRIV_ALIGN.
+ * @param data_room_size
+ *   Size of data buffer in each mbuf, including RTE_PKTMBUF_HEADROOM.
+ * @param flags
+ *   Flags controlling the behavior of the mempool. See
+ *   rte_mempool_create() for details.
+ * @param socket_id
+ *   The socket identifier where the memory should be allocated. The
+ *   value can be *SOCKET_ID_ANY* if there is no NUMA constraint for the
+ *   reserved zone.
+ * @return
+ *   The pointer to the new allocated mempool, on success. NULL on error
+ *   with rte_errno set appropriately. Possible rte_errno values include:
+ *    - E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
+ *    - E_RTE_SECONDARY - function was called from a secondary process instance
+ *    - EINVAL - cache size provided is too large, or priv_size is not aligned.
+ *    - ENOSPC - the maximum number of memzones has already been allocated
+ *    - EEXIST - a memzone with the same name already exists
+ *    - ENOMEM - no appropriate memory area found in which to create memzone
+ */
+struct rte_mempool * __rte_experimental
+rte_pktmbuf_pool_create_with_flags(const char *name, unsigned int n,
+	unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size,
+	unsigned int flags, int socket_id);
+
 /**
  * Create a mbuf pool with a given mempool ops name
  *
diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map
index 2662a37bf..2579538e0 100644
--- a/lib/librte_mbuf/rte_mbuf_version.map
+++ b/lib/librte_mbuf/rte_mbuf_version.map
@@ -50,4 +50,5 @@ EXPERIMENTAL {
 	global:
 
 	rte_mbuf_check;
+	rte_pktmbuf_pool_create_with_flags;
 } DPDK_18.08;
-- 
2.17.1

  parent reply	other threads:[~2019-03-27  9:05 UTC|newest]

Thread overview: 214+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-01  8:09 [PATCH v1 0/6] Introduce AF_XDP PMD Xiaolong Ye
2019-03-01  8:09 ` [PATCH v1 1/6] net/af_xdp: introduce AF_XDP PMD driver Xiaolong Ye
2019-03-01 15:38   ` Luca Boccassi
2019-03-02  8:14     ` Ye Xiaolong
2019-03-17  3:34       ` Ye Xiaolong
2019-03-24 12:07         ` Luca Boccassi
2019-03-25  2:45           ` Ye Xiaolong
2019-03-25 10:42             ` Luca Boccassi
2019-03-25 12:22               ` Ye Xiaolong
2019-03-26  2:18               ` Ye Xiaolong
2019-03-26 10:14                 ` Luca Boccassi
2019-03-26 12:12                   ` Ye Xiaolong
2019-03-01 18:31   ` Stephen Hemminger
2019-03-02  8:08     ` Ye Xiaolong
2019-03-01 18:32   ` Stephen Hemminger
2019-03-02  8:07     ` Ye Xiaolong
2019-03-05  8:25   ` David Marchand
2019-03-07  3:19     ` Ye Xiaolong
2019-03-11 16:20   ` Ferruh Yigit
2019-03-12 15:54     ` Ye Xiaolong
2019-03-13 10:54       ` Ferruh Yigit
2019-03-13 11:12         ` Ye Xiaolong
2019-03-17  3:35       ` Ye Xiaolong
2019-03-01  8:09 ` [PATCH v1 2/6] lib/mbuf: enable parse flags when create mempool Xiaolong Ye
2019-03-05  8:30   ` David Marchand
2019-03-07  3:07     ` Ye Xiaolong
2019-03-01  8:09 ` [PATCH v1 3/6] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-01  8:09 ` [PATCH v1 4/6] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-01  8:09 ` [PATCH v1 5/6] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-01  8:09 ` [PATCH v1 6/6] app/testpmd: add mempool flags parameter Xiaolong Ye
2019-03-01 18:34   ` Stephen Hemminger
2019-03-02  8:06     ` Ye Xiaolong
2019-03-11 16:46   ` Ferruh Yigit
2019-03-12 15:10     ` Ye Xiaolong
2019-03-11 16:43 ` [PATCH v1 0/6] Introduce AF_XDP PMD Ferruh Yigit
2019-03-11 17:19   ` Thomas Monjalon
2019-03-12  1:51     ` Zhang, Qi Z
2019-03-12  7:55       ` Karlsson, Magnus
2019-03-19  7:12 ` [PATCH v2 " Xiaolong Ye
2019-03-19  7:12   ` [PATCH v2 1/6] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-19  9:07     ` Mattias Rönnblom
2019-03-19  9:49       ` Ye Xiaolong
2019-03-19 16:14     ` Stephen Hemminger
2019-03-20  2:32       ` Ye Xiaolong
2019-03-19 16:16     ` Stephen Hemminger
2019-03-19 16:33       ` Bruce Richardson
2019-03-20  2:07         ` Ye Xiaolong
2019-03-20  2:05       ` Ye Xiaolong
2019-03-20  9:23     ` David Marchand
2019-03-20 15:20       ` Ye Xiaolong
2019-03-19  7:12   ` [PATCH v2 2/6] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-19  7:12   ` [PATCH v2 3/6] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-19  7:12   ` [PATCH v2 4/6] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-19  7:12   ` [PATCH v2 5/6] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-19  8:12     ` Mattias Rönnblom
2019-03-19  8:39       ` Ye Xiaolong
2019-03-20  9:22     ` David Marchand
2019-03-20  9:48       ` Zhang, Qi Z
2019-03-19  7:12   ` [PATCH v2 6/6] app/testpmd: add mempool flags parameter Xiaolong Ye
2019-03-19 23:36     ` Jerin Jacob Kollanukkaran
2019-03-20  2:08       ` Ye Xiaolong
2019-03-20  9:23       ` David Marchand
2019-03-20 15:22         ` Ye Xiaolong
2019-03-21  9:18 ` [PATCH v3 0/5] Introduce AF_XDP PMD Xiaolong Ye
2019-03-21  9:18   ` [PATCH v3 1/5] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-21 15:24     ` Stephen Hemminger
2019-03-22  2:05       ` Ye Xiaolong
2019-03-21 15:25     ` Stephen Hemminger
2019-03-22  2:05       ` Ye Xiaolong
2019-03-21 15:27     ` Stephen Hemminger
2019-03-22  2:04       ` Ye Xiaolong
2019-03-21 15:28     ` Stephen Hemminger
2019-03-22  2:15       ` Ye Xiaolong
2019-03-22 15:38         ` Stephen Hemminger
2019-03-22 23:20           ` Ye Xiaolong
2019-03-21 15:30     ` Stephen Hemminger
2019-03-22  2:01       ` Ye Xiaolong
2019-03-22 15:37         ` Stephen Hemminger
2019-03-22 23:19           ` Ye Xiaolong
2019-03-21 15:31     ` Stephen Hemminger
2019-03-22  1:55       ` Ye Xiaolong
2019-03-21 15:32     ` Stephen Hemminger
2019-03-22  1:54       ` Ye Xiaolong
2019-03-21 15:36     ` Stephen Hemminger
2019-03-22  1:49       ` Ye Xiaolong
2019-03-22  9:32         ` Bruce Richardson
2019-03-21  9:18   ` [PATCH v3 2/5] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-21  9:18   ` [PATCH v3 3/5] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-21 14:00     ` Ananyev, Konstantin
2019-03-21 14:23       ` Zhang, Qi Z
2019-03-21  9:18   ` [PATCH v3 4/5] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-21  9:18   ` [PATCH v3 5/5] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-22 13:01 ` [PATCH v4 0/5] Introduce AF_XDP PMD Xiaolong Ye
2019-03-22 13:01   ` [PATCH v4 1/5] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-22 14:32     ` Maxime Coquelin
2019-03-24  9:32       ` Ye Xiaolong
2019-03-24 12:10     ` Luca Boccassi
2019-03-24 16:27       ` Thomas Monjalon
2019-03-22 13:01   ` [PATCH v4 2/5] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-22 14:36     ` Maxime Coquelin
2019-03-24  9:08       ` Ye Xiaolong
2019-03-22 13:01   ` [PATCH v4 3/5] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-22 13:01   ` [PATCH v4 4/5] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-22 14:51     ` Maxime Coquelin
2019-03-24  9:08       ` Ye Xiaolong
2019-03-24 11:52         ` Ye Xiaolong
2019-03-22 13:01   ` [PATCH v4 5/5] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-25  6:03 ` [PATCH v5 0/5] Introduce AF_XDP PMD Xiaolong Ye
2019-03-25  6:03   ` [PATCH v5 1/5] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-25 15:58     ` Stephen Hemminger
2019-03-26  2:13       ` Ye Xiaolong
2019-03-25  6:03   ` [PATCH v5 2/5] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-25  6:03   ` [PATCH v5 3/5] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-25  9:04     ` Andrew Rybchenko
2019-03-26  3:27       ` Ye Xiaolong
2019-03-25  6:03   ` [PATCH v5 4/5] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-25  6:04   ` [PATCH v5 5/5] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-26 12:20 ` [PATCH v6 0/5] Introduce AF_XDP PMD Xiaolong Ye
2019-03-26 12:20   ` [PATCH v6 1/5] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-26 19:08     ` Stephen Hemminger
2019-03-27  5:33       ` Ye Xiaolong
2019-03-26 12:20   ` [PATCH v6 2/5] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-26 12:20   ` [PATCH v6 3/5] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-26 12:20   ` [PATCH v6 4/5] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-29 17:42     ` Olivier Matz
2019-03-31 12:38       ` Ye Xiaolong
2019-04-01  5:47         ` Zhang, Qi Z
2019-03-26 12:20   ` [PATCH v6 5/5] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-27  9:00 ` [PATCH v7 0/5] Introduce AF_XDP PMD Xiaolong Ye
2019-03-27  9:00   ` [PATCH v7 1/5] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-03-28 17:51     ` Ferruh Yigit
2019-03-28 18:52       ` Luca Boccassi
2019-04-02 19:55         ` Ferruh Yigit
2019-03-29  2:05       ` Ye Xiaolong
2019-03-29  8:10         ` Ferruh Yigit
2019-03-27  9:00   ` Xiaolong Ye [this message]
2019-03-28 19:30     ` [PATCH v7 2/5] lib/mbuf: introduce helper to create mempool with flags Ferruh Yigit
2019-03-27  9:00   ` [PATCH v7 3/5] lib/mempool: allow page size aligned mempool Xiaolong Ye
2019-03-28 19:34     ` Ferruh Yigit
2019-03-29 10:37     ` Andrew Rybchenko
2019-03-29 17:42       ` Olivier Matz
2019-03-27  9:00   ` [PATCH v7 4/5] net/af_xdp: use mbuf mempool for buffer management Xiaolong Ye
2019-03-27  9:00   ` [PATCH v7 5/5] net/af_xdp: enable zero copy Xiaolong Ye
2019-03-28 18:44     ` Ferruh Yigit
2019-03-29  1:53       ` Ye Xiaolong
2019-04-02 10:45 ` [PATCH v8 0/1] AF_XDP PMD Xiaolong Ye
2019-04-02 10:45   ` [PATCH v8 1/1] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-04-02 14:58     ` Stephen Hemminger
2019-04-02 15:10       ` Ye Xiaolong
2019-04-02 15:46 ` [PATCH v9 0/1] Introduce AF_XDP PMD Xiaolong Ye
2019-04-02 15:46   ` [PATCH v9 1/1] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-04-02 18:56     ` Stephen Hemminger
2019-04-02 23:01       ` Ye Xiaolong
2019-04-02 19:19     ` Luca Boccassi
2019-04-03  9:59       ` Ye Xiaolong
2019-04-03 10:36         ` Luca Boccassi
2019-04-03 10:42           ` Luca Boccassi
2019-04-03 11:18             ` Ferruh Yigit
2019-04-03 11:35               ` Luca Boccassi
2019-04-03 12:16                 ` Luca Boccassi
2019-04-03 12:33                   ` Ferruh Yigit
2019-04-03 13:09                 ` Ferruh Yigit
2019-04-03 13:29                   ` Luca Boccassi
2019-04-03 14:43                     ` Ye Xiaolong
2019-04-03 14:51                       ` Luca Boccassi
2019-04-03 15:14                         ` Ye Xiaolong
2019-04-03 15:23                           ` Bruce Richardson
2019-04-03 15:34                             ` Ye Xiaolong
2019-04-03 14:22                   ` Ye Xiaolong
2019-04-03 15:52                     ` Ferruh Yigit
2019-04-03 15:57                       ` Ye Xiaolong
2019-04-17 12:30                         ` [dpdk-dev] [BUG] net/af_xdp: Current code can only create one af_xdp device Markus Theil
2019-04-18  1:05                           ` Ye Xiaolong
2019-04-23 16:23                             ` Markus Theil
2019-04-24  6:35                               ` Ye Xiaolong
2019-04-24  9:21                                 ` Markus Theil
2019-04-24 14:47                                   ` Ye Xiaolong
2019-04-24 20:33                                     ` Markus Theil
2019-04-25  5:43                                   ` Ye Xiaolong
2019-04-18 15:20                           ` [dpdk-dev] [PATCH v1 1/2] net/af_xdp: name the buf ring dynamically Xiaolong Ye
2019-04-18 15:20                             ` [dpdk-dev] [PATCH v1 2/2] net/af_xdp: name the umem memzone dynamically Xiaolong Ye
2019-04-19  9:47                               ` David Marchand
2019-04-19 12:33                                 ` Ferruh Yigit
2019-04-19 15:05                                   ` Ye Xiaolong
2019-04-19  9:46                             ` [dpdk-dev] [PATCH v1 1/2] net/af_xdp: name the buf ring dynamically David Marchand
2019-04-19 12:47                             ` [dpdk-dev] [PATCH v2] net/af_xdp: fix creating multiple instance Ferruh Yigit
2019-04-19 12:51                               ` Ferruh Yigit
2019-04-02 19:43     ` [PATCH v9 1/1] net/af_xdp: introduce AF XDP PMD driver Ferruh Yigit
2019-04-03 13:22       ` Bruce Richardson
2019-04-03 13:34         ` Ferruh Yigit
2019-04-03 16:59 ` [PATCH v10 0/1] Introduce AF_XDP PMD Xiaolong Ye
2019-04-03 16:59   ` [PATCH v10 1/1] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-04-03 17:32     ` Luca Boccassi
2019-04-03 17:44     ` Ferruh Yigit
2019-04-03 18:52       ` Luca Boccassi
2019-04-04  5:36         ` Ye Xiaolong
2019-04-04  5:55         ` Ye Xiaolong
2019-04-04  7:01           ` Phil Yang (Arm Technology China)
2019-04-04  8:39           ` Luca Boccassi
2019-04-04  8:40             ` Ye Xiaolong
2019-04-04  5:29       ` Ye Xiaolong
2019-04-04  8:51 ` [PATCH v11 0/1] Introduce AF_XDP PMD Xiaolong Ye
2019-04-04  8:51   ` [PATCH v11 1/1] net/af_xdp: introduce AF XDP PMD driver Xiaolong Ye
2019-04-04 16:20     ` Luca Boccassi
2019-04-04 16:41       ` Stephen Hemminger
2019-04-04 17:05         ` Ferruh Yigit
2019-04-04 23:39     ` [dpdk-dev] " Ferruh Yigit
2019-04-05 15:05       ` Ye Xiaolong
2019-04-05 15:17         ` Ferruh Yigit
2019-04-05 15:22           ` Ye Xiaolong
2019-04-05 15:23         ` Bruce Richardson
2019-04-05 15:31           ` Ferruh Yigit
2019-04-05 15:35             ` Bruce Richardson
2019-04-04 16:13   ` [PATCH v11 0/1] Introduce AF_XDP PMD Ferruh Yigit

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=20190327090027.72170-3-xiaolong.ye@intel.com \
    --to=xiaolong.ye@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=bjorn.topel@intel.com \
    --cc=bluca@debian.org \
    --cc=bruce.richardson@intel.com \
    --cc=david.marchand@redhat.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=magnus.karlsson@intel.com \
    --cc=maxime.coquelin@redhat.com \
    --cc=qi.z.zhang@intel.com \
    --cc=stephen@networkplumber.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.