From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by dpdk.org (Postfix) with ESMTP id 73B153B5 for ; Mon, 8 Dec 2014 07:22:37 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 07 Dec 2014 22:22:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,536,1413270000"; d="scan'208";a="634270661" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga001.fm.intel.com with ESMTP; 07 Dec 2014 22:22:00 -0800 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id sB86LwIu019067; Mon, 8 Dec 2014 14:21:58 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id sB86LuOQ004995; Mon, 8 Dec 2014 14:21:58 +0800 Received: (from couyang@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id sB86LuPX004991; Mon, 8 Dec 2014 14:21:56 +0800 From: Ouyang Changchun To: dev@dpdk.org Date: Mon, 8 Dec 2014 14:21:39 +0800 Message-Id: <1418019716-4962-1-git-send-email-changchun.ouyang@intel.com> X-Mailer: git-send-email 1.7.12.2 Subject: [dpdk-dev] [RFC PATCH 00/17] Single virtio implementation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Dec 2014 06:22:39 -0000 This is RFC patch for single virtio implementation. Why we need single virtio? ============================ As we know currently there are at least 3 virtio PMD driver implementations: A) lib/librte_pmd_virtio(refer as virtio A); B) virtio_net_pmd by 6wind(refer as virtio B); C) virtio by Brocade/vyatta(refer as virtio C); Integrating 3 implementations into one could reduce the maintaining cost and time, in other hand, user don't need practice their application on 3 variant one by one to see which one is the best for them; What's the status? ==================== Currently virtio A has covered most features of virtio B, we could regard they have similar behavior as virtio driver. But there are some differences between virtio A and virtio C, so it need integrate features/codes from virtio C into virtio A. This patch set bases on two original RFC patch sets from Stephen Hemminger[stephen@networkplumber.org] Refer to [http://dpdk.org/ml/archives/dev/2014-August/004845.html ] for the original one. This patch set also resolves some conflict with latest codes and removed duplicated codes. What this patch set contains: =============================== 1) virtio: Rearrange resource initialization, it extracts a function to setup PCI resources; 2) virtio: Use weaker barriers, as DPDK driver only has to deal with the case of running on PCI and with SMP, In this case, the code can use the weaker barriers instead of using hard (fence) barriers. This may help performance a bit; 3) virtio: Allow starting with link down, other driver has similar behavior; 4) virtio: Add support for Link State interrupt; 5) ether: Add soft vlan encap/decap functions, it helps if HW don't support vlan strip; 6) virtio: Use software vlan stripping; 7) virtio: Remove unnecessary adapter structure; 8) virtio: Remove redundant vq_alignment, as vq alignment is always 4K, so use constant when needed; 9) virtio: Fix how states are handled during initialization, this is to match Linux kernel; 10) virtio: Make vtpci_get_status a local function as it is used in one file; 11) virtio: Check for packet headroom at compile time; 12) virtio: Move allocation before initialization to avoid being stuck in middle of virtio init; 13) virtio: Add support for vlan filtering; 14) virtio: Add support for multiple mac addresses; 15) virtio: Add ability to set MAC address; 16) virtio: Free mbuf's with threshold, this makes its behavior more like ixgbe; 17) virtio: Use port IO to get PCI resource for security reasons and match virtio-net-pmd. Any feedback and comments for this RFC are welcome. Changchun Ouyang (17): virtio: Rearrange resource initialization virtio: Use weaker barriers virtio: Allow starting with link down virtio: Add support for Link State interrupt ether: Add soft vlan encap/decap functions virtio: Use software vlan stripping virtio: Remove unnecessary adapter structure virtio: Remove redundant vq_alignment virtio: Fix how states are handled during initialization virtio: Make vtpci_get_status local virtio: Check for packet headroom at compile time virtio: Move allocation before initialization virtio: Add support for vlan filtering virtio: Add suport for multiple mac addresses virtio: Add ability to set MAC address virtio: Free mbuf's with threshold virtio: Use port IO to get PCI resource. lib/librte_eal/common/include/rte_pci.h | 2 + lib/librte_eal/linuxapp/eal/eal_pci.c | 3 +- lib/librte_ether/rte_ethdev.h | 8 + lib/librte_ether/rte_ether.h | 76 +++++ lib/librte_pmd_virtio/virtio_ethdev.c | 479 ++++++++++++++++++++++++-------- lib/librte_pmd_virtio/virtio_ethdev.h | 12 +- lib/librte_pmd_virtio/virtio_pci.c | 20 +- lib/librte_pmd_virtio/virtio_pci.h | 8 +- lib/librte_pmd_virtio/virtio_rxtx.c | 101 +++++-- lib/librte_pmd_virtio/virtqueue.h | 59 +++- 10 files changed, 614 insertions(+), 154 deletions(-) -- 1.8.4.2