DPDK patches and discussions
 help / color / mirror / Atom feed
From: Ouyang Changchun <changchun.ouyang@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH 14/22] virtio: Add suport for multiple mac addresses
Date: Thu, 15 Jan 2015 13:15:22 +0800	[thread overview]
Message-ID: <1421298930-15210-15-git-send-email-changchun.ouyang@intel.com> (raw)
In-Reply-To: <1421298930-15210-1-git-send-email-changchun.ouyang@intel.com>

Virtio support multiple MAC addresses.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: Changchun Ouyang <changchun.ouyang@intel.com>
---
 lib/librte_pmd_virtio/virtio_ethdev.c | 94 ++++++++++++++++++++++++++++++++++-
 lib/librte_pmd_virtio/virtio_ethdev.h |  3 +-
 lib/librte_pmd_virtio/virtqueue.h     | 34 ++++++++++++-
 3 files changed, 127 insertions(+), 4 deletions(-)

diff --git a/lib/librte_pmd_virtio/virtio_ethdev.c b/lib/librte_pmd_virtio/virtio_ethdev.c
index ec5a51e..e469ac2 100644
--- a/lib/librte_pmd_virtio/virtio_ethdev.c
+++ b/lib/librte_pmd_virtio/virtio_ethdev.c
@@ -86,6 +86,10 @@ static void virtio_dev_stats_reset(struct rte_eth_dev *dev);
 static void virtio_dev_free_mbufs(struct rte_eth_dev *dev);
 static int virtio_vlan_filter_set(struct rte_eth_dev *dev,
 				uint16_t vlan_id, int on);
+static void virtio_mac_addr_add(struct rte_eth_dev *dev,
+				struct ether_addr *mac_addr,
+				uint32_t index, uint32_t vmdq __rte_unused);
+static void virtio_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index);
 
 static int virtio_dev_queue_stats_mapping_set(
 	__rte_unused struct rte_eth_dev *eth_dev,
@@ -503,8 +507,6 @@ static struct eth_dev_ops virtio_eth_dev_ops = {
 	.stats_get               = virtio_dev_stats_get,
 	.stats_reset             = virtio_dev_stats_reset,
 	.link_update             = virtio_dev_link_update,
-	.mac_addr_add            = NULL,
-	.mac_addr_remove         = NULL,
 	.rx_queue_setup          = virtio_dev_rx_queue_setup,
 	/* meaningfull only to multiple queue */
 	.rx_queue_release        = virtio_dev_rx_queue_release,
@@ -514,6 +516,8 @@ static struct eth_dev_ops virtio_eth_dev_ops = {
 	/* collect stats per queue */
 	.queue_stats_mapping_set = virtio_dev_queue_stats_mapping_set,
 	.vlan_filter_set         = virtio_vlan_filter_set,
+	.mac_addr_add            = virtio_mac_addr_add,
+	.mac_addr_remove         = virtio_mac_addr_remove,
 };
 
 static inline int
@@ -644,6 +648,92 @@ virtio_get_hwaddr(struct virtio_hw *hw)
 }
 
 static int
+virtio_mac_table_set(struct virtio_hw *hw,
+		     const struct virtio_net_ctrl_mac *uc,
+		     const struct virtio_net_ctrl_mac *mc)
+{
+	struct virtio_pmd_ctrl ctrl;
+	int err, len[2];
+
+	ctrl.hdr.class = VIRTIO_NET_CTRL_MAC;
+	ctrl.hdr.cmd = VIRTIO_NET_CTRL_MAC_TABLE_SET;
+
+	len[0] = uc->entries * ETHER_ADDR_LEN + sizeof(uc->entries);
+	memcpy(ctrl.data, uc, len[0]);
+
+	len[1] = mc->entries * ETHER_ADDR_LEN + sizeof(mc->entries);
+	memcpy(ctrl.data + len[0], mc, len[1]);
+
+	err = virtio_send_command(hw->cvq, &ctrl, len, 2);
+	if (err != 0)
+		PMD_DRV_LOG(NOTICE, "mac table set failed: %d", err);
+
+	return err;
+}
+
+static void
+virtio_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr,
+		    uint32_t index, uint32_t vmdq __rte_unused)
+{
+	struct virtio_hw *hw = dev->data->dev_private;
+	const struct ether_addr *addrs = dev->data->mac_addrs;
+	unsigned int i;
+	struct virtio_net_ctrl_mac *uc, *mc;
+
+	if (index >= VIRTIO_MAX_MAC_ADDRS) {
+		PMD_DRV_LOG(ERR, "mac address index %u out of range", index);
+		return;
+	}
+
+	uc = alloca(VIRTIO_MAX_MAC_ADDRS * ETHER_ADDR_LEN + sizeof(uc->entries));
+	uc->entries = 0;
+	mc = alloca(VIRTIO_MAX_MAC_ADDRS * ETHER_ADDR_LEN + sizeof(mc->entries));
+	mc->entries = 0;
+
+	for (i = 0; i < VIRTIO_MAX_MAC_ADDRS; i++) {
+		const struct ether_addr *addr
+			= (i == index) ? mac_addr : addrs + i;
+		struct virtio_net_ctrl_mac *tbl
+			= is_multicast_ether_addr(addr) ? mc : uc;
+
+		memcpy(&tbl->macs[tbl->entries++], addr, ETHER_ADDR_LEN);
+	}
+
+	virtio_mac_table_set(hw, uc, mc);
+}
+
+static void
+virtio_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index)
+{
+	struct virtio_hw *hw = dev->data->dev_private;
+	struct ether_addr *addrs = dev->data->mac_addrs;
+	struct virtio_net_ctrl_mac *uc, *mc;
+	unsigned int i;
+
+	if (index >= VIRTIO_MAX_MAC_ADDRS) {
+		PMD_DRV_LOG(ERR, "mac address index %u out of range", index);
+		return;
+	}
+
+	uc = alloca(VIRTIO_MAX_MAC_ADDRS * ETHER_ADDR_LEN + sizeof(uc->entries));
+	uc->entries = 0;
+	mc = alloca(VIRTIO_MAX_MAC_ADDRS * ETHER_ADDR_LEN + sizeof(mc->entries));
+	mc->entries = 0;
+
+	for (i = 0; i < VIRTIO_MAX_MAC_ADDRS; i++) {
+		struct virtio_net_ctrl_mac *tbl;
+
+		if (i == index || is_zero_ether_addr(addrs + i))
+			continue;
+
+		tbl = is_multicast_ether_addr(addrs + i) ? mc : uc;
+		memcpy(&tbl->macs[tbl->entries++], addrs + i, ETHER_ADDR_LEN);
+	}
+
+	virtio_mac_table_set(hw, uc, mc);
+}
+
+static int
 virtio_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 {
 	struct virtio_hw *hw = dev->data->dev_private;
diff --git a/lib/librte_pmd_virtio/virtio_ethdev.h b/lib/librte_pmd_virtio/virtio_ethdev.h
index 55c9749..74ac7e0 100644
--- a/lib/librte_pmd_virtio/virtio_ethdev.h
+++ b/lib/librte_pmd_virtio/virtio_ethdev.h
@@ -51,7 +51,7 @@
 
 #define VIRTIO_MAX_RX_QUEUES 128
 #define VIRTIO_MAX_TX_QUEUES 128
-#define VIRTIO_MAX_MAC_ADDRS 1
+#define VIRTIO_MAX_MAC_ADDRS 64
 #define VIRTIO_MIN_RX_BUFSIZE 64
 #define VIRTIO_MAX_RX_PKTLEN  9728
 
@@ -60,6 +60,7 @@
 	(VIRTIO_NET_F_MAC       | \
 	VIRTIO_NET_F_STATUS     | \
 	VIRTIO_NET_F_MQ         | \
+	VIRTIO_NET_F_CTRL_MAC_ADDR | \
 	VIRTIO_NET_F_CTRL_VQ    | \
 	VIRTIO_NET_F_CTRL_RX    | \
 	VIRTIO_NET_F_CTRL_VLAN  | \
diff --git a/lib/librte_pmd_virtio/virtqueue.h b/lib/librte_pmd_virtio/virtqueue.h
index 5b8a255..d210f4f 100644
--- a/lib/librte_pmd_virtio/virtqueue.h
+++ b/lib/librte_pmd_virtio/virtqueue.h
@@ -99,6 +99,34 @@ enum { VTNET_RQ = 0, VTNET_TQ = 1, VTNET_CQ = 2 };
 #define VIRTIO_NET_CTRL_RX_NOBCAST      5
 
 /**
+ * Control the MAC
+ *
+ * The MAC filter table is managed by the hypervisor, the guest should
+ * assume the size is infinite.  Filtering should be considered
+ * non-perfect, ie. based on hypervisor resources, the guest may
+ * received packets from sources not specified in the filter list.
+ *
+ * In addition to the class/cmd header, the TABLE_SET command requires
+ * two out scatterlists.  Each contains a 4 byte count of entries followed
+ * by a concatenated byte stream of the ETH_ALEN MAC addresses.  The
+ * first sg list contains unicast addresses, the second is for multicast.
+ * This functionality is present if the VIRTIO_NET_F_CTRL_RX feature
+ * is available.
+ *
+ * The ADDR_SET command requests one out scatterlist, it contains a
+ * 6 bytes MAC address. This functionality is present if the
+ * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available.
+ */
+struct virtio_net_ctrl_mac {
+	uint32_t entries;
+	uint8_t macs[][ETHER_ADDR_LEN];
+} __attribute__((__packed__));
+
+#define VIRTIO_NET_CTRL_MAC    1
+ #define VIRTIO_NET_CTRL_MAC_TABLE_SET        0
+ #define VIRTIO_NET_CTRL_MAC_ADDR_SET         1
+
+/**
  * Control VLAN filtering
  *
  * The VLAN filter table is controlled via a simple ADD/DEL interface.
@@ -121,7 +149,7 @@ typedef uint8_t virtio_net_ctrl_ack;
 #define VIRTIO_NET_OK     0
 #define VIRTIO_NET_ERR    1
 
-#define VIRTIO_MAX_CTRL_DATA 128
+#define VIRTIO_MAX_CTRL_DATA 2048
 
 struct virtio_pmd_ctrl {
 	struct virtio_net_ctrl_hdr hdr;
@@ -180,6 +208,10 @@ struct virtqueue {
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN        1
 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX        0x8000
 #endif
+#ifndef VIRTIO_NET_F_CTRL_MAC_ADDR
+#define VIRTIO_NET_F_CTRL_MAC_ADDR 0x800000
+#define VIRTIO_NET_CTRL_MAC_ADDR_SET         1
+#endif
 
 /**
  * This is the first element of the scatter-gather list.  If you don't
-- 
1.8.4.2

  parent reply	other threads:[~2015-01-15  5:16 UTC|newest]

Thread overview: 132+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-15  5:15 [dpdk-dev] [PATCH 00/22] Single virtio implementation Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 01/22] virtio: Rearrange resource initialization Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 02/22] virtio: Use weaker barriers Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 03/22] virtio: Allow starting with link down Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 04/22] virtio: Add support for Link State interrupt Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 05/22] ether: Add soft vlan encap/decap functions Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 06/22] virtio: Use software vlan stripping Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 07/22] virtio: Remove unnecessary adapter structure Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 08/22] virtio: Remove redundant vq_alignment Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 09/22] virtio: Fix how states are handled during initialization Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 10/22] virtio: Make vtpci_get_status local Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 11/22] virtio: Check for packet headroom at compile time Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 12/22] virtio: Move allocation before initialization Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 13/22] virtio: Add support for vlan filtering Ouyang Changchun
2015-01-15  5:15 ` Ouyang Changchun [this message]
2015-01-15  5:15 ` [dpdk-dev] [PATCH 15/22] virtio: Add ability to set MAC address Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 16/22] virtio: Free mbuf's with threshold Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 17/22] virtio: Use port IO to get PCI resource Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 18/22] virtio: Fix descriptor index issue Ouyang Changchun
2015-01-15 16:54   ` Stephen Hemminger
2015-01-16  0:55     ` Ouyang, Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 19/22] ether: Fix vlan strip/insert issue Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 20/22] example/vhost: Avoid inserting vlan twice Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 21/22] example/vhost: Add vlan-strip cmd line option Ouyang Changchun
2015-01-15  5:15 ` [dpdk-dev] [PATCH 22/22] virtio: Use soft vlan strip in mergeable Rx path Ouyang Changchun
2015-01-15 16:55   ` Stephen Hemminger
2015-01-16  0:56     ` Ouyang, Changchun
2015-01-27  2:35 ` [dpdk-dev] [PATCH v2 00/24] Single virtio implementation Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 01/24] virtio: Rearrange resource initialization Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 02/24] virtio: Use weaker barriers Ouyang Changchun
2015-01-27  7:03     ` Xie, Huawei
2015-01-27  9:58       ` Stephen Hemminger
2015-01-27 16:16         ` Xie, Huawei
2015-01-28  6:12           ` Ouyang, Changchun
2015-01-27  7:56     ` Xie, Huawei
2015-01-27  8:04       ` Ouyang, Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 03/24] virtio: Allow starting with link down Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 04/24] virtio: Add support for Link State interrupt Ouyang Changchun
2015-01-27  9:04     ` Xie, Huawei
2015-01-27 10:00       ` Stephen Hemminger
2015-01-28  3:03         ` Ouyang, Changchun
2015-01-28 15:11           ` Stephen Hemminger
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 05/24] ether: Add soft vlan encap/decap functions Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 06/24] virtio: Use software vlan stripping Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 07/24] virtio: Remove unnecessary adapter structure Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 08/24] virtio: Remove redundant vq_alignment Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 09/24] virtio: Fix how states are handled during initialization Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 10/24] virtio: Make vtpci_get_status local Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 11/24] virtio: Check for packet headroom at compile time Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 12/24] virtio: Move allocation before initialization Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 13/24] virtio: Add support for vlan filtering Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 14/24] virtio: Add suport for multiple mac addresses Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 15/24] virtio: Add ability to set MAC address Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 16/24] virtio: Free mbuf's with threshold Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 17/24] virtio: Use port IO to get PCI resource Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 18/24] virtio: Fix descriptor index issue Ouyang Changchun
2015-01-27  2:35   ` [dpdk-dev] [PATCH v2 19/24] ether: Fix vlan strip/insert issue Ouyang Changchun
2015-01-27  2:36   ` [dpdk-dev] [PATCH v2 20/24] example/vhost: Avoid inserting vlan twice Ouyang Changchun
2015-01-27  2:36   ` [dpdk-dev] [PATCH v2 21/24] example/vhost: Add vlan-strip cmd line option Ouyang Changchun
2015-01-27  2:36   ` [dpdk-dev] [PATCH v2 22/24] virtio: Use soft vlan strip in mergeable Rx path Ouyang Changchun
2015-01-27  2:36   ` [dpdk-dev] [PATCH v2 23/24] virtio: Fix zero copy break issue Ouyang Changchun
2015-01-27  2:36   ` [dpdk-dev] [PATCH v2 24/24] virtio: Remove hotspots Ouyang Changchun
2015-01-27  3:06   ` [dpdk-dev] [PATCH v2 00/24] Single virtio implementation Matthew Hall
2015-01-27  3:42     ` Wiles, Keith
2015-01-27  9:41       ` Matthew Hall
2015-01-27 10:02     ` Stephen Hemminger
2015-01-27 18:59       ` Matthew Hall
2015-01-29  7:23   ` [dpdk-dev] [PATCH v3 00/25] " Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 01/25] virtio: Rearrange resource initialization Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 02/25] virtio: Use weaker barriers Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 03/25] virtio: Allow starting with link down Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 04/25] virtio: Add support for Link State interrupt Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 05/25] ether: Add soft vlan encap/decap functions Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 06/25] virtio: Use software vlan stripping Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 07/25] virtio: Remove unnecessary adapter structure Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 08/25] virtio: Remove redundant vq_alignment Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 09/25] virtio: Fix how states are handled during initialization Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 10/25] virtio: Make vtpci_get_status local Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 11/25] virtio: Check for packet headroom at compile time Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 12/25] virtio: Move allocation before initialization Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 13/25] virtio: Add support for vlan filtering Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 14/25] virtio: Add suport for multiple mac addresses Ouyang Changchun
2015-01-29  7:23     ` [dpdk-dev] [PATCH v3 15/25] virtio: Add ability to set MAC address Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 16/25] virtio: Free mbuf's with threshold Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 17/25] virtio: Use port IO to get PCI resource Ouyang Changchun
2015-01-29 23:14       ` Thomas Monjalon
2015-02-04  1:31         ` Ouyang, Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 18/25] virtio: Fix descriptor index issue Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 19/25] ether: Fix vlan strip/insert issue Ouyang Changchun
2015-02-04 10:54       ` Xie, Huawei
2015-02-05  0:54         ` Ouyang, Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 20/25] example/vhost: Avoid inserting vlan twice Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 21/25] example/vhost: Add vlan-strip cmd line option Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 22/25] virtio: Use soft vlan strip in mergeable Rx path Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 23/25] virtio: Fix zero copy break issue Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 24/25] virtio: Remove hotspots Ouyang Changchun
2015-01-29  7:24     ` [dpdk-dev] [PATCH v3 25/25] virtio: Fix wmb issue Ouyang Changchun
2015-02-09  1:13     ` [dpdk-dev] [PATCH v4 00/26] Single virtio implementation Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 01/26] virtio: Rearrange resource initialization Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 02/26] virtio: Use weaker barriers Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 03/26] virtio: Allow starting with link down Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 04/26] virtio: Add support for Link State interrupt Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 05/26] ether: Add soft vlan encap/decap functions Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 06/26] virtio: Use software vlan stripping Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 07/26] virtio: Remove unnecessary adapter structure Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 08/26] virtio: Remove redundant vq_alignment Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 09/26] virtio: Fix how states are handled during initialization Ouyang Changchun
2015-02-09  1:13       ` [dpdk-dev] [PATCH v4 10/26] virtio: Make vtpci_get_status local Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 11/26] virtio: Check for packet headroom at compile time Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 12/26] virtio: Move allocation before initialization Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 13/26] virtio: Add support for vlan filtering Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 14/26] virtio: Add suport for multiple mac addresses Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 15/26] virtio: Add ability to set MAC address Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 16/26] virtio: Free mbuf's with threshold Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 17/26] virtio: Use port IO to get PCI resource Ouyang Changchun
2015-02-11  4:32         ` Stephen Hemminger
2015-02-11  4:50           ` Ouyang, Changchun
2015-02-11  7:29             ` Vincent JARDIN
2015-02-11 13:50               ` Stephen Hemminger
2015-02-11 14:16                 ` Thomas Monjalon
2015-02-12  0:52                   ` Ouyang, Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 18/26] virtio: Fix descriptor index issue Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 19/26] ether: Fix vlan strip/insert issue Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 20/26] example/vhost: Avoid inserting vlan twice Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 21/26] example/vhost: Add vlan-strip cmd line option Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 22/26] virtio: Use soft vlan strip in mergeable Rx path Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 23/26] virtio: Fix zero copy break issue Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 24/26] virtio: Remove hotspots Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 25/26] virtio: Fix wmb issue Ouyang Changchun
2015-02-09  1:14       ` [dpdk-dev] [PATCH v4 26/26] virtio: Fix updating vring descriptor index issue Ouyang Changchun
2015-02-17  6:04       ` [dpdk-dev] [PATCH v4 00/26] Single virtio implementation Xie, Huawei
2015-02-20 18:06         ` Thomas Monjalon

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=1421298930-15210-15-git-send-email-changchun.ouyang@intel.com \
    --to=changchun.ouyang@intel.com \
    --cc=dev@dpdk.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).