From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 85A576CBD for ; Tue, 11 Oct 2016 07:31:28 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP; 10 Oct 2016 22:31:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,476,1473145200"; d="scan'208";a="1043027875" Received: from yliu-dev.sh.intel.com (HELO yliu-dev) ([10.239.67.162]) by orsmga001.jf.intel.com with ESMTP; 10 Oct 2016 22:31:25 -0700 Date: Tue, 11 Oct 2016 13:32:18 +0800 From: Yuanhan Liu To: Thomas Monjalon Cc: "O'Driscoll, Tim" , dev@dpdk.org, Maxime Coquelin , "Harris, James R" , "Liu, Changpeng" Message-ID: <20161011053218.GL1597@yliu-dev.sh.intel.com> References: <26FA93C7ED1EAA44AB77D62FBE1D27BA675F11C5@IRSMSX108.ger.corp.intel.com> <1998191.9HGrB6oKr3@xps13> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1998191.9HGrB6oKr3@xps13> User-Agent: Mutt/1.5.23 (2014-03-12) Subject: Re: [dpdk-dev] 17.02 Roadmap 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: Tue, 11 Oct 2016 05:31:29 -0000 On Mon, Oct 10, 2016 at 10:42:58PM +0200, Thomas Monjalon wrote: > > Support New Device Types in Vhost-User: Support will be added to vhost-user for new device types including vhost-scsi and vhost-blk. > > Great! > Is it only related to networking or should we expect some storage-related > code or drivers to come up? It's not only netowrking related. It just introduces few more APIs to export those buf infos (virt addr, phys addr, len, etc) to applications, so that they can handle/parse the data in the way they want. For example, for SPDK (https://01.org/spdk), they can use those APIs to fetch guest data and parse it following virtio-SCSI spec. The dequeue path (guest Tx) might look like something below: rte_vhost_dequeue_vring_desc_burst(vid, queue_id, iov, count) { for (i = 0; i < count; i++) { desc_idx = get_next_desc(); iov[i]->addr = desc_virt_addr(desc[desc_idx]->addr); iov[i]->phys_addr = desc_phys_addr(desc[desc_idx]->addr); iov[i]->len = desc[desc_idx]->len; iov[i]->desc = desc_idx; } return i; } rte_vhost_update_used_ring(vid, queue_id, descs, count) { for (i = 0; i < count; i++) { used_idx = get_next_used_idx(); vq->used->ring[used_idx] = descs[i]; } vq->used->idx += i; } And we introduce similar APIs to the enqueue path. --yliu