From: Zhiyong Yang <zhiyong.yang@intel.com>
To: dev@dpdk.org, yliu@fridaylinux.org, maxime.coquelin@redhat.com
Cc: wei.w.wang@intel.com, jianfeng.tan@intel.com,
Zhiyong Yang <zhiyong.yang@intel.com>
Subject: [dpdk-dev] [PATCH 02/11] net/vhostpci: public header files
Date: Thu, 30 Nov 2017 17:46:48 +0800 [thread overview]
Message-ID: <20171130094657.11470-3-zhiyong.yang@intel.com> (raw)
In-Reply-To: <20171130094657.11470-1-zhiyong.yang@intel.com>
add public/exported files for vhostpci PMD. The structures and
constants that define the method of operation of the device can be
visible by both the PMD and the DPDK application.
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
---
drivers/net/vhostpci/vhostpci_ethdev.h | 176 ++++++++++++++++++++++++
drivers/net/vhostpci/vhostpci_net.h | 74 ++++++++++
drivers/net/vhostpci/vhostpci_pci.h | 240 +++++++++++++++++++++++++++++++++
3 files changed, 490 insertions(+)
create mode 100644 drivers/net/vhostpci/vhostpci_ethdev.h
create mode 100644 drivers/net/vhostpci/vhostpci_net.h
create mode 100644 drivers/net/vhostpci/vhostpci_pci.h
diff --git a/drivers/net/vhostpci/vhostpci_ethdev.h b/drivers/net/vhostpci/vhostpci_ethdev.h
new file mode 100644
index 000000000..3ff67dbc6
--- /dev/null
+++ b/drivers/net/vhostpci/vhostpci_ethdev.h
@@ -0,0 +1,176 @@
+/*-
+ * BSD LICENSE
+ *
+ * Copyright(c) 2017 Intel Corporation. All rights reserved.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Intel Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _VHOSTPCI_ETHDEV_H_
+#define _VHOSTPCI_ETHDEV_H_
+
+#include <linux/virtio_ring.h>
+
+#include "vhostpci_pci.h"
+#include "vhostpci_net.h"
+
+#define VHOSTPCI_MAX_RX_QUEUES 128U
+#define VHOSTPCI_MAX_TX_QUEUES 128U
+#define VHOSTPCI_MAX_MAC_ADDRS 1
+#define VHOSTPCI_MIN_RX_BUFSIZE 64
+#define VHOSTPCI_MAX_RX_PKTLEN 9728U
+#define VHOSTPCI_NUM_DESCRIPTORS 256U
+#define VHOSTPCI_MAX_QUEUE_PAIRS 0x1
+
+/* Features supported by vhostpci PMD by default. */
+#define VHOSTPCI_PMD_DEFAULT_GUEST_FEATURES \
+ (1ULL << VIRTIO_NET_F_MRG_RXBUF | \
+ 1ULL << VIRTIO_F_VERSION_1)
+
+/**
+ * This is the first element of the scatter-gather list. If you don't
+ * specify GSO or CSUM features, you can simply ignore the header.
+ */
+struct virtio_net_hdr {
+#define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /**< Use csum_start,csum_offset*/
+#define VIRTIO_NET_HDR_F_DATA_VALID 2 /**< Checksum is valid */
+ uint8_t flags;
+#define VIRTIO_NET_HDR_GSO_NONE 0 /**< Not a GSO frame */
+#define VIRTIO_NET_HDR_GSO_TCPV4 1 /**< GSO frame, IPv4 TCP (TSO) */
+#define VIRTIO_NET_HDR_GSO_UDP 3 /**< GSO frame, IPv4 UDP (UFO) */
+#define VIRTIO_NET_HDR_GSO_TCPV6 4 /**< GSO frame, IPv6 TCP */
+#define VIRTIO_NET_HDR_GSO_ECN 0x80 /**< TCP has ECN set */
+ uint8_t gso_type;
+ uint16_t hdr_len; /**< Ethernet + IP + tcp/udp hdrs */
+ uint16_t gso_size; /**< Bytes to append to hdr_len per frame */
+ uint16_t csum_start; /**< Position to start checksumming from */
+ uint16_t csum_offset; /**< Offset after that to place checksum */
+};
+
+/**
+ * This is the version of the header to use when the MRG_RXBUF
+ * feature has been negotiated.
+ */
+struct virtio_net_hdr_mrg_rxbuf {
+ struct virtio_net_hdr hdr;
+ uint16_t num_buffers; /**< Number of merged rx buffers */
+};
+
+enum {VTNET_RXQ = 0, VTNET_TXQ, VTNET_QNUM};
+
+struct vhostpci_stats {
+ uint64_t pkts;
+ uint64_t bytes;
+ uint64_t missed_pkts;
+};
+
+struct vhostpci_queue {
+ rte_atomic32_t allow_queuing;
+ rte_atomic32_t while_queuing;
+ struct rte_mempool *mb_pool;
+ uint16_t port_id;
+ uint16_t virtqueue_id;
+ struct vhostpci_stats stats;
+ void *vpnet;
+};
+
+/**
+ * Information relating to memory regions including offsets to
+ * addresses in QEMUs memory file.
+ */
+struct vhostpci_mem_region {
+ uint64_t guest_phys_addr;
+ uint64_t guest_user_addr;
+ uint64_t host_user_addr;
+ uint64_t size;
+ void *mmap_addr;
+ uint64_t mmap_size;
+ uint64_t offset;
+ uint64_t start;
+ uint64_t end;
+};
+
+/**
+ * Memory structure includes region and mapping information.
+ */
+
+struct vhostpci_memory {
+ uint32_t nregions;
+ struct vhostpci_mem_region regions[MAX_REMOTE_REGION];
+};
+
+/**
+ * Structure contains the info for each batched memory copy.
+ */
+struct batch_copy_elem {
+ void *dst;
+ void *src;
+ uint32_t len;
+};
+
+/**
+ * Structure contains buffer address, length and descriptor index
+ * from vring to do scatter RX.
+ */
+struct buf_vector {
+ uint64_t buf_addr;
+ uint32_t buf_len;
+ uint32_t desc_idx;
+};
+
+/**
+ * Structure contains variables relevant to RX/TX virtqueues.
+ */
+struct vhostpci_virtqueue {
+ struct vring_desc *desc;
+ struct vring_avail *avail;
+ struct vring_used *used;
+ uint32_t size;
+ uint16_t last_avail_idx;
+ uint16_t last_used_idx;
+ int enabled;
+ struct vring_used_elem *shadow_used_ring;
+ uint16_t shadow_used_idx;
+ struct batch_copy_elem *batch_copy_elems;
+ uint16_t batch_copy_nb_elems;
+} __rte_cache_aligned;
+
+struct vhostpci_net {
+ uint64_t features;
+ uint64_t protocol_features;
+ uint64_t mem_base;
+ uint32_t flags;
+ uint32_t nr_vring;
+ struct vhostpci_memory mem;
+ struct vhostpci_virtqueue *virtqueue[VHOSTPCI_MAX_QUEUE_PAIRS * 2];
+ uint16_t vhost_hlen;
+};
+
+extern struct vhostpci_hw_internal vhostpci_hw_internal[RTE_MAX_ETHPORTS];
+
+#endif /* _VHOSTPCI_ETHDEV_H_ */
diff --git a/drivers/net/vhostpci/vhostpci_net.h b/drivers/net/vhostpci/vhostpci_net.h
new file mode 100644
index 000000000..0e6eef695
--- /dev/null
+++ b/drivers/net/vhostpci/vhostpci_net.h
@@ -0,0 +1,74 @@
+/*-
+ * BSD LICENSE
+ *
+ * Copyright(c) 2017 Intel Corporation. All rights reserved.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Intel Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _VHOSTPCI_NET_H_
+#define _VHOSTPCI_NET_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define VIRTIO_ID_VHOST_PCI_NET 21 /* vhost-pci-net */
+
+#define REMOTE_MEM_BAR_ID 2
+#define METADATA_SIZE 4096
+#define REMOTE_MEM_BAR_SIZE 0x1000000000
+
+#define MAX_REMOTE_REGION 8
+
+struct vpnet_remote_mem {
+ uint64_t gpa;
+ uint64_t size;
+};
+
+struct vpnet_remote_vq {
+ uint16_t last_avail_idx;
+ int32_t vring_enabled;
+ uint32_t vring_num;
+ uint64_t desc_gpa;
+ uint64_t avail_gpa;
+ uint64_t used_gpa;
+};
+
+struct vpnet_metadata {
+ uint32_t nregions;
+ uint32_t nvqs;
+ struct vpnet_remote_mem mem[MAX_REMOTE_REGION];
+ struct vpnet_remote_vq vq[0];
+};
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VHOSTPCI_NET_H_ */
diff --git a/drivers/net/vhostpci/vhostpci_pci.h b/drivers/net/vhostpci/vhostpci_pci.h
new file mode 100644
index 000000000..18ec72287
--- /dev/null
+++ b/drivers/net/vhostpci/vhostpci_pci.h
@@ -0,0 +1,240 @@
+/*-
+ * BSD LICENSE
+ *
+ * Copyright(c) 2017 Intel Corporation. All rights reserved.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Intel Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _VHOSTPCI_PCI_H_
+#define _VHOSTPCI_PCI_H_
+
+#include <stdint.h>
+
+#include <rte_pci.h>
+#include <rte_bus_pci.h>
+#include <rte_ethdev.h>
+
+struct virtqueue;
+
+/* VHOSTPCI vendor/device ID. */
+#define VHOST_PCI_VENDORID 0x1AF4
+#define VHOST_PCI_NET_MODERN_DEVICEID 0x1055
+
+/**
+ * VirtIO Header, located in BAR 0.
+ */
+#define VIRTIO_PCI_HOST_FEATURES 0 /* host's supported features (32bit, RO)*/
+#define VIRTIO_PCI_GUEST_FEATURES 4 /* guest's supported features (32, RW) */
+#define VIRTIO_PCI_QUEUE_PFN 8 /* physical address of VQ (32, RW) */
+#define VIRTIO_PCI_QUEUE_NUM 12 /* number of ring entries (16, RO) */
+#define VIRTIO_PCI_QUEUE_SEL 14 /* current VQ selection (16, RW) */
+#define VIRTIO_PCI_QUEUE_NOTIFY 16 /* notify host regarding VQ (16, RW) */
+#define VIRTIO_PCI_STATUS 18 /* device status register (8, RW) */
+#define VIRTIO_PCI_ISR 19 /* interrupt status register, reading
+ * also clears the register (8, RO)
+ */
+
+/* The bit of the ISR which indicates a device has an interrupt. */
+#define VIRTIO_PCI_ISR_INTR 0x1
+/* The bit of the ISR which indicates a device configuration change. */
+#define VIRTIO_PCI_ISR_CONFIG 0x2
+
+/* Status byte for guest to report progress. */
+#define VIRTIO_CONFIG_STATUS_RESET 0x00
+#define VIRTIO_CONFIG_STATUS_ACK 0x01
+#define VIRTIO_CONFIG_STATUS_DRIVER 0x02
+#define VIRTIO_CONFIG_STATUS_DRIVER_OK 0x04
+#define VIRTIO_CONFIG_STATUS_FEATURES_OK 0x08
+#define VIRTIO_CONFIG_STATUS_FAILED 0x80
+
+/* The feature bitmap for virtio net */
+#define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */
+#define VIRTIO_NET_F_MRG_RXBUF 15 /* Host can merge receive buffers. */
+
+/* Can the device handle any descriptor layout? */
+#define VIRTIO_F_ANY_LAYOUT 27
+
+#define VIRTIO_F_VERSION_1 32
+
+#define VHOSTPCI_NET_S_LINK_UP 1 /* Link is up */
+
+/**
+ * Maximum number of virtqueues per device.
+ */
+#define VHOSTPCI_MAX_VIRTQUEUE_PAIRS 8
+#define VHOSTPCI_MAX_VIRTQUEUES (VHOSTPCI_MAX_VIRTQUEUE_PAIRS * 2)
+
+/* Common configuration */
+#define VIRTIO_PCI_CAP_COMMON_CFG 1
+/* Notifications */
+#define VIRTIO_PCI_CAP_NOTIFY_CFG 2
+/* ISR Status */
+#define VIRTIO_PCI_CAP_ISR_CFG 3
+/* Device specific configuration */
+#define VIRTIO_PCI_CAP_DEVICE_CFG 4
+/* PCI configuration access */
+#define VIRTIO_PCI_CAP_PCI_CFG 5
+
+/* This is the PCI capability header: */
+struct vpnet_pci_cap {
+ uint8_t cap_vndr; /* Generic PCI field: PCI_CAP_ID_VNDR */
+ uint8_t cap_next; /* Generic PCI field: next ptr. */
+ uint8_t cap_len; /* Generic PCI field: capability length */
+ uint8_t cfg_type; /* Identifies the structure. */
+ uint8_t bar; /* Where to find it. */
+ uint8_t padding[3]; /* Pad to full dword. */
+ uint32_t offset; /* Offset within bar. */
+ uint32_t length; /* Length of the structure, in bytes. */
+};
+
+struct vpnet_notify_cap {
+ struct vpnet_pci_cap cap;
+ uint32_t notify_off_multiplier; /* Multiplier for queue_notify_off. */
+};
+
+/* Fields in VIRTIO_PCI_CAP_COMMON_CFG: */
+struct vpnet_pci_common_cfg {
+ /* About the whole device. */
+ uint32_t device_feature_select; /* read-write */
+ uint32_t device_feature; /* read-only */
+ uint32_t guest_feature_select; /* read-write */
+ uint32_t guest_feature; /* read-write */
+ uint16_t msix_config; /* read-write */
+ uint16_t num_queues; /* read-only */
+ uint8_t device_status; /* read-write */
+ uint8_t config_generation; /* read-only */
+
+ /* About a specific virtqueue. */
+ uint16_t queue_select; /* read-write */
+ uint16_t queue_size; /* read-write, power of 2. */
+ uint16_t queue_msix_vector; /* read-write */
+ uint16_t queue_enable; /* read-write */
+ uint16_t queue_notify_off; /* read-only */
+ uint32_t queue_desc_lo; /* read-write */
+ uint32_t queue_desc_hi; /* read-write */
+ uint32_t queue_avail_lo; /* read-write */
+ uint32_t queue_avail_hi; /* read-write */
+ uint32_t queue_used_lo; /* read-write */
+ uint32_t queue_used_hi; /* read-write */
+};
+
+struct vpnet_pci_config {
+ /* configure mac address */
+ uint8_t mac[ETHER_ADDR_LEN];
+ /* link up/down status */
+ uint16_t status;
+} __attribute__((packed));
+
+struct vhostpci_hw {
+ uint64_t req_guest_features;
+ uint64_t guest_features;
+ uint32_t max_queue_pairs;
+ uint16_t started;
+ uint16_t max_mtu;
+ uint16_t vtnet_hdr_size;
+ uint8_t modern;
+ uint16_t port_id;
+ uint8_t mac_addr[ETHER_ADDR_LEN];
+ uint32_t notify_off_multiplier;
+ uint8_t *isr;
+ uint16_t *notify_base;
+ struct vpnet_pci_common_cfg *common_cfg;
+ struct vpnet_pci_config *dev_cfg;
+ struct virtqueue **vqs;
+ struct vhostpci_net *vpnet;
+};
+
+struct vpnet_pci_ops {
+ void (*read_dev_cfg)(struct vhostpci_hw *hw, size_t offset,
+ void *dst, int len);
+ void (*write_dev_cfg)(struct vhostpci_hw *hw, size_t offset,
+ const void *src, int len);
+ void (*reset)(struct vhostpci_hw *hw);
+
+ uint8_t (*get_status)(struct vhostpci_hw *hw);
+ void (*set_status)(struct vhostpci_hw *hw, uint8_t status);
+
+ uint64_t (*get_features)(struct vhostpci_hw *hw);
+ void (*set_features)(struct vhostpci_hw *hw, uint64_t features);
+
+ uint8_t (*get_isr)(struct vhostpci_hw *hw);
+
+ uint16_t (*set_config_irq)(struct vhostpci_hw *hw, uint16_t vec);
+
+ uint16_t (*set_queue_irq)(struct vhostpci_hw *hw, struct virtqueue *vq,
+ uint16_t vec);
+
+ uint16_t (*get_queue_num)(struct vhostpci_hw *hw, uint16_t queue_id);
+
+ void (*notify_queue)(struct vhostpci_hw *hw, struct virtqueue *vq);
+};
+
+/**
+ * While vhostpci_hw is stored in shared memory, this structure stores
+ * some infos that may vary in the multiple process model locally.
+ * For example, the vtpci_ops pointer.
+ */
+struct vhostpci_hw_internal {
+ const struct vpnet_pci_ops *vtpci_ops;
+};
+
+#define VTPCI_OPS(hw) (vhostpci_hw_internal[(hw)->port_id].vtpci_ops)
+
+extern struct vhostpci_hw_internal vhostpci_hw_internal[RTE_MAX_ETHPORTS];
+
+/* The alignment to use between consumer and producer parts of vring. */
+#define VHOST_PCI_VRING_ALIGN 4096
+
+static inline int
+vtpci_with_feature(struct vhostpci_hw *hw, uint64_t bit)
+{
+ return (hw->guest_features & (1ULL << bit)) != 0;
+}
+
+/**
+ * Function declaration from vhostpci_pci.c
+ */
+
+uint8_t vhpci_isr(struct vhostpci_hw *hw);
+
+uint8_t vhpci_get_status(struct vhostpci_hw *hw);
+
+void vhpci_init_complete(struct vhostpci_hw *hw);
+
+void vhpci_set_status(struct vhostpci_hw *hw, uint8_t status);
+
+uint64_t vhpci_negotiate_features(struct vhostpci_hw *hw,
+ uint64_t host_features);
+
+int vhostpci_pci_init(struct rte_pci_device *dev, struct vhostpci_hw *hw);
+
+void vhpci_read_dev_config(struct vhostpci_hw *hw, size_t offset,
+ void *dst, int length);
+
+#endif /* _VHOSTPCI_PCI_H_ */
--
2.13.3
next prev parent reply other threads:[~2017-11-30 9:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-30 9:46 [dpdk-dev] [PATCH 00/11] net/vhostpci: A new vhostpci PMD supporting VM2VM scenario Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 01/11] drivers/net: add vhostpci PMD base files Zhiyong Yang
2017-11-30 9:46 ` Zhiyong Yang [this message]
2017-11-30 9:46 ` [dpdk-dev] [PATCH 03/11] net/vhostpci: add debugging log macros Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 04/11] net/vhostpci: add basic framework Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 05/11] net/vhostpci: add queue setup Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 06/11] net/vhostpci: add support for link status change Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 07/11] net/vhostpci: get remote memory region and vring info Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 08/11] net/vhostpci: add RX function Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 09/11] net/vhostpci: add TX function Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 10/11] net/vhostpci: support RX/TX packets statistics Zhiyong Yang
2017-11-30 9:46 ` [dpdk-dev] [PATCH 11/11] net/vhostpci: update release note Zhiyong Yang
2017-12-05 6:59 ` [dpdk-dev] [PATCH 00/11] net/vhostpci: A new vhostpci PMD supporting VM2VM scenario Yang, Zhiyong
2017-12-05 14:08 ` Yuanhan Liu
2017-12-06 3:00 ` Wei Wang
2017-12-07 6:07 ` Yang, Zhiyong
2017-12-19 11:14 ` Maxime Coquelin
2017-12-20 1:51 ` Yang, Zhiyong
2017-12-21 5:52 ` Tan, Jianfeng
2017-12-21 6:21 ` Yang, Zhiyong
2017-12-21 6:26 ` Yang, Zhiyong
2017-12-21 8:26 ` Maxime Coquelin
2017-12-21 8:40 ` Yang, Zhiyong
2018-01-11 11:13 ` Yang, Zhiyong
2018-01-18 9:04 ` Maxime Coquelin
2018-01-19 1:56 ` Yang, Zhiyong
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=20171130094657.11470-3-zhiyong.yang@intel.com \
--to=zhiyong.yang@intel.com \
--cc=dev@dpdk.org \
--cc=jianfeng.tan@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=wei.w.wang@intel.com \
--cc=yliu@fridaylinux.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).