From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ferruh Yigit Subject: Re: [PATCH v5 7/9] net/virtio: support in-order Rx and Tx Date: Mon, 2 Jul 2018 17:41:29 +0100 Message-ID: <7ab59556-5719-e05b-ea1f-f94867d90b24@intel.com> References: <20180702135642.52577-1-yong.liu@intel.com> <20180702135642.52577-8-yong.liu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: zhihong.wang@intel.com, dev@dpdk.org To: Marvin Liu , maxime.coquelin@redhat.com, tiwei.bie@intel.com Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id DCC651B4BA for ; Mon, 2 Jul 2018 18:41:34 +0200 (CEST) In-Reply-To: <20180702135642.52577-8-yong.liu@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 7/2/2018 2:56 PM, Marvin Liu wrote: > IN_ORDER Rx function depends on merge-able feature. Descriptors > allocation and free will be done in bulk. > > Virtio dequeue logic: > dequeue_burst_rx(burst mbufs) > for (each mbuf b) { > if (b need merge) { > merge remained mbufs > add merged mbuf to return mbufs list > } else { > add mbuf to return mbufs list > } > } > if (last mbuf c need merge) { > dequeue_burst_rx(required mbufs) > merge last mbuf c > } > refill_avail_ring_bulk() > update_avail_ring() > return mbufs list > > IN_ORDER Tx function can support offloading features. Packets which > matched "can_push" option will be handled by simple xmit function. Those > packets can't match "can_push" will be handled by original xmit function > with in-order flag. > > Virtio enqueue logic: > xmit_cleanup(used descs) > for (each xmit mbuf b) { > if (b can inorder xmit) { > add mbuf b to inorder burst list > continue > } else { > xmit inorder burst list > xmit mbuf b by original function > } > } > if (inorder burst list not empty) { > xmit inorder burst list > } > update_avail_ring() > > Signed-off-by: Marvin Liu > Reviewed-by: Maxime Coquelin <...> > @@ -150,6 +188,83 @@ virtio_xmit_cleanup(struct virtqueue *vq, uint16_t num) > } > } > > +/* Cleanup from completed inorder transmits. */ > +static void > +virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num) > +{ > + uint16_t i, used_idx, desc_idx, last_idx; Getting following build error [1], from code it looks like false positive, but to get rid of the build error would it be OK to set initial value to "desc_idx"? [1] .../dpdk/drivers/net/virtio/virtio_rxtx.c:195:24: error: ‘desc_idx’ may be used uninitialized in this function [-Werror=maybe-uninitialized] uint16_t i, used_idx, desc_idx, last_idx; ^~~~~~~~