All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiaolong Ye <xiaolong.ye@intel.com>
To: dev@dpdk.org
Cc: Qi Zhang <qi.z.zhang@intel.com>,
	Karlsson Magnus <magnus.karlsson@intel.com>,
	Topel Bjorn <bjorn.topel@intel.com>,
	Xiaolong Ye <xiaolong.ye@intel.com>
Subject: [PATCH v4 5/5] net/af_xdp: enable zero copy
Date: Fri, 22 Mar 2019 21:01:29 +0800	[thread overview]
Message-ID: <20190322130129.109964-6-xiaolong.ye@intel.com> (raw)
In-Reply-To: <20190322130129.109964-1-xiaolong.ye@intel.com>

Try to check if external mempool (from rx_queue_setup) is fit for
af_xdp, if it is, it will be registered to af_xdp socket directly and
there will be no packet data copy on Rx and Tx.

Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
---
 drivers/net/af_xdp/rte_eth_af_xdp.c | 129 ++++++++++++++++++++--------
 1 file changed, 95 insertions(+), 34 deletions(-)

diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
index 6b1bc462a..124d341d0 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -67,6 +67,7 @@ struct xsk_umem_info {
 	struct xsk_umem *umem;
 	struct rte_mempool *mb_pool;
 	void *buffer;
+	uint8_t zc;
 };
 
 struct rx_stats {
@@ -85,6 +86,7 @@ struct pkt_rx_queue {
 
 	struct pkt_tx_queue *pair;
 	uint16_t queue_idx;
+	uint8_t zc;
 };
 
 struct tx_stats {
@@ -202,7 +204,8 @@ eth_af_xdp_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 	if (xsk_prod_nb_free(fq, free_thresh) >= free_thresh)
 		(void)reserve_fill_queue(umem, ETH_AF_XDP_RX_BATCH_SIZE);
 
-	if (rte_pktmbuf_alloc_bulk(rxq->mb_pool, mbufs, rcvd) != 0)
+	if (!rxq->zc &&
+		rte_pktmbuf_alloc_bulk(rxq->mb_pool, mbufs, rcvd) != 0)
 		return 0;
 
 	for (i = 0; i < rcvd; i++) {
@@ -216,13 +219,23 @@ eth_af_xdp_rx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 		len = desc->len;
 		pkt = xsk_umem__get_data(rxq->umem->buffer, addr);
 
-		rte_memcpy(rte_pktmbuf_mtod(mbufs[i], void *), pkt, len);
-		rte_pktmbuf_pkt_len(mbufs[i]) = len;
-		rte_pktmbuf_data_len(mbufs[i]) = len;
-		rx_bytes += len;
-		bufs[count++] = mbufs[i];
-
-		rte_pktmbuf_free(addr_to_mbuf(umem, addr));
+		if (rxq->zc) {
+			struct rte_mbuf *mbuf;
+			mbuf = addr_to_mbuf(rxq->umem, addr);
+			rte_pktmbuf_pkt_len(mbuf) = len;
+			rte_pktmbuf_data_len(mbuf) = len;
+			rx_bytes += len;
+			bufs[count++] = mbuf;
+		} else {
+			rte_memcpy(rte_pktmbuf_mtod(mbufs[i], void *),
+					pkt, len);
+			rte_pktmbuf_pkt_len(mbufs[i]) = len;
+			rte_pktmbuf_data_len(mbufs[i]) = len;
+			rx_bytes += len;
+			bufs[count++] = mbufs[i];
+
+			rte_pktmbuf_free(addr_to_mbuf(umem, addr));
+		}
 	}
 
 	xsk_ring_cons__release(rx, rcvd);
@@ -295,22 +308,29 @@ eth_af_xdp_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)
 					- ETH_AF_XDP_DATA_HEADROOM;
 		desc = xsk_ring_prod__tx_desc(&txq->tx, idx_tx + i);
 		mbuf = bufs[i];
-		if (mbuf->pkt_len <= buf_len) {
-			mbuf_to_tx = rte_pktmbuf_alloc(umem->mb_pool);
-			if (mbuf_to_tx == NULL) {
-				rte_pktmbuf_free(mbuf);
-				continue;
-			}
-			desc->addr = mbuf_to_addr(umem, mbuf_to_tx);
+		if (txq->pair->zc && mbuf->pool == umem->mb_pool) {
+			desc->addr = mbuf_to_addr(umem, mbuf);
 			desc->len = mbuf->pkt_len;
-			pkt = xsk_umem__get_data(umem->buffer,
-						 desc->addr);
-			rte_memcpy(pkt, rte_pktmbuf_mtod(mbuf, void *),
-			       desc->len);
 			valid++;
 			tx_bytes += mbuf->pkt_len;
+		} else {
+			if (mbuf->pkt_len <= buf_len) {
+				mbuf_to_tx = rte_pktmbuf_alloc(umem->mb_pool);
+				if (!mbuf_to_tx) {
+					rte_pktmbuf_free(mbuf);
+					continue;
+				}
+				desc->addr = mbuf_to_addr(umem, mbuf_to_tx);
+				desc->len = mbuf->pkt_len;
+				pkt = xsk_umem__get_data(umem->buffer,
+							 desc->addr);
+				memcpy(pkt, rte_pktmbuf_mtod(mbuf, void *),
+				       desc->len);
+				valid++;
+				tx_bytes += mbuf->pkt_len;
+			}
+			rte_pktmbuf_free(mbuf);
 		}
-		rte_pktmbuf_free(mbuf);
 	}
 
 	xsk_ring_prod__submit(&txq->tx, nb_pkts);
@@ -488,7 +508,7 @@ static inline uint64_t get_len(struct rte_mempool *mp)
 	return (uint64_t)(memhdr->len);
 }
 
-static struct xsk_umem_info *xdp_umem_configure(void)
+static struct xsk_umem_info *xdp_umem_configure(struct rte_mempool *mb_pool)
 {
 	struct xsk_umem_info *umem;
 	struct xsk_umem_config usr_config = {
@@ -505,16 +525,23 @@ static struct xsk_umem_info *xdp_umem_configure(void)
 		return NULL;
 	}
 
-	umem->mb_pool = rte_pktmbuf_pool_create_with_flags("af_xdp_mempool",
-			ETH_AF_XDP_NUM_BUFFERS,
-			250, 0,
-			ETH_AF_XDP_FRAME_SIZE -
-			ETH_AF_XDP_MBUF_OVERHEAD,
-			MEMPOOL_F_NO_SPREAD | MEMPOOL_F_PAGE_ALIGN,
-			SOCKET_ID_ANY);
-	if (umem->mb_pool == NULL || umem->mb_pool->nb_mem_chunks != 1) {
-		AF_XDP_LOG(ERR, "Failed to create mempool\n");
-		goto err;
+	if (!mb_pool) {
+		umem->mb_pool = rte_pktmbuf_pool_create_with_flags("af_xdp_mempool",
+				ETH_AF_XDP_NUM_BUFFERS,
+				250, 0,
+				ETH_AF_XDP_FRAME_SIZE -
+				ETH_AF_XDP_MBUF_OVERHEAD,
+				MEMPOOL_F_NO_SPREAD | MEMPOOL_F_PAGE_ALIGN,
+				SOCKET_ID_ANY);
+
+		if (umem->mb_pool == NULL ||
+				umem->mb_pool->nb_mem_chunks != 1) {
+			AF_XDP_LOG(ERR, "Failed to create mempool\n");
+			goto err;
+		}
+	} else {
+		umem->mb_pool = mb_pool;
+		umem->zc = 1;
 	}
 	base_addr = (void *)get_base_addr(umem->mb_pool);
 
@@ -536,16 +563,43 @@ static struct xsk_umem_info *xdp_umem_configure(void)
 	return NULL;
 }
 
+static uint8_t
+check_mempool_zc(struct rte_mempool *mp)
+{
+	RTE_ASSERT(mp);
+
+	/* must continues */
+	if (mp->nb_mem_chunks > 1)
+		return 0;
+
+	/* check header size */
+	if (mp->header_size != RTE_CACHE_LINE_SIZE)
+		return 0;
+
+	/* check base address */
+	if ((uint64_t)get_base_addr(mp) % getpagesize() != 0)
+		return 0;
+
+	/* check chunk size */
+	if ((mp->elt_size + mp->header_size + mp->trailer_size) %
+	    ETH_AF_XDP_FRAME_SIZE != 0)
+		return 0;
+
+	return 1;
+}
+
 static int
 xsk_configure(struct pmd_internals *internals, struct pkt_rx_queue *rxq,
-	      int ring_size)
+	      int ring_size, struct rte_mempool *mb_pool)
 {
 	struct xsk_socket_config cfg;
 	struct pkt_tx_queue *txq = rxq->pair;
+	struct rte_mempool *mp;
 	int ret = 0;
 	int reserve_size;
 
-	rxq->umem = xdp_umem_configure();
+	mp = check_mempool_zc(mb_pool) ? mb_pool : NULL;
+	rxq->umem = xdp_umem_configure(mp);
 	if (rxq->umem == NULL) {
 		ret = -ENOMEM;
 		goto err;
@@ -631,7 +685,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev,
 
 	rxq->mb_pool = mb_pool;
 
-	if (xsk_configure(internals, rxq, nb_rx_desc)) {
+	if (xsk_configure(internals, rxq, nb_rx_desc, mb_pool)) {
 		AF_XDP_LOG(ERR, "Failed to configure xdp socket\n");
 		ret = -EINVAL;
 		goto err;
@@ -639,6 +693,13 @@ eth_rx_queue_setup(struct rte_eth_dev *dev,
 
 	internals->umem = rxq->umem;
 
+	if (mb_pool == internals->umem->mb_pool)
+		rxq->zc = internals->umem->zc;
+
+	if (rxq->zc)
+		AF_XDP_LOG(INFO,
+			"zero copy enabled on rx queue %d\n", rx_queue_id);
+
 	dev->data->rx_queues[rx_queue_id] = rxq;
 	return 0;
 
-- 
2.17.1

  parent reply	other threads:[~2019-03-22 13: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   ` Xiaolong Ye [this message]
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   ` [PATCH v7 2/5] lib/mbuf: introduce helper to create mempool with flags Xiaolong Ye
2019-03-28 19:30     ` 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=20190322130129.109964-6-xiaolong.ye@intel.com \
    --to=xiaolong.ye@intel.com \
    --cc=bjorn.topel@intel.com \
    --cc=dev@dpdk.org \
    --cc=magnus.karlsson@intel.com \
    --cc=qi.z.zhang@intel.com \
    /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.