From patchwork Mon Jan 17 13:28:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Wang, YuanX" X-Patchwork-Id: 105893 X-Patchwork-Delegate: maxime.coquelin@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8A801A034F; Mon, 17 Jan 2022 06:37:18 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8EB19411B6; Mon, 17 Jan 2022 06:37:09 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 83E2F411B2 for ; Mon, 17 Jan 2022 06:37:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1642397828; x=1673933828; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=O1Rk/pRC5o9ICBojDDxl160eg3SsaGJX531FxpxRLmg=; b=Gosurg78q7hN3jc6RSBQfc0fvGgPNJ2UlFDxJ6U/8ehi62xb4kZ4cdKC C8/v5MnfzJKqexw4eP29R4b8IfAgMre8Rdv30ppn+y8xvDmFOr5i9BUgQ h3b88hvkmuJZ8NxKGiyppxrfK/eOzjND/avXvwn1RMKUrocGqOv2Exr1I wyTJru/tEft7OmZw3kcRXDiTLIphH8qYxwJuaifR6fTKkpvxEgJf2TvqC uIqzuqFOfO9DZs6PVQErk7v8qw3cMkkaNShhJtPt55wsjtcSOtwikjVaX A6z+UkOLxWed3kHs12Gs5Etf8pcj1Ju1u7qZxkuU7H1mMzOqNzOR7QsiQ g==; X-IronPort-AV: E=McAfee;i="6200,9189,10229"; a="268931125" X-IronPort-AV: E=Sophos;i="5.88,294,1635231600"; d="scan'208";a="268931125" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2022 21:37:08 -0800 X-IronPort-AV: E=Sophos;i="5.88,294,1635231600"; d="scan'208";a="531198012" Received: from dpdk.sh.intel.com (HELO localhost.localdomain) ([10.239.251.55]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2022 21:37:05 -0800 From: Yuan Wang To: maxime.coquelin@redhat.com, chenbo.xia@intel.com Cc: dev@dpdk.org, jiayu.hu@intel.com, xuan.ding@intel.com, wenwux.ma@intel.com, yvonnex.yang@intel.com, yuanx.wang@intel.com Subject: [RFC 2/2] example/vhost: support to clear in-flight packets for async dequeue Date: Mon, 17 Jan 2022 13:28:47 +0000 Message-Id: <20220117132847.884998-3-yuanx.wang@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220117132847.884998-1-yuanx.wang@intel.com> References: <20220117132847.884998-1-yuanx.wang@intel.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch allows vhost_clear_queue_thread_unsafe() to clear in-flight dequeue packets. Signed-off-by: Yuan Wang --- examples/vhost/main.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/vhost/main.c b/examples/vhost/main.c index 04a85262bc..050f983fd6 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -1495,6 +1495,7 @@ vhost_clear_queue_thread_unsafe(struct vhost_dev *vdev, uint16_t queue_id) uint16_t n_pkt = 0; uint16_t dma_id = dma_bind[vid2socketid[vdev->vid]].dmas[queue_id].dev_id; struct rte_mbuf *m_enq_cpl[vdev->pkts_enq_inflight]; + struct rte_mbuf *m_deq_cpl[vdev->pkts_deq_inflight]; if (queue_id % 2 == 0) { while (vdev->pkts_enq_inflight) { @@ -1503,6 +1504,13 @@ vhost_clear_queue_thread_unsafe(struct vhost_dev *vdev, uint16_t queue_id) free_pkts(m_enq_cpl, n_pkt); __atomic_sub_fetch(&vdev->pkts_enq_inflight, n_pkt, __ATOMIC_SEQ_CST); } + } else { + while (vdev->pkts_deq_inflight) { + n_pkt = rte_vhost_clear_queue_thread_unsafe(vdev->vid, + queue_id, m_deq_cpl, vdev->pkts_deq_inflight, dma_id, 0); + free_pkts(m_deq_cpl, n_pkt); + __atomic_sub_fetch(&vdev->pkts_deq_inflight, n_pkt, __ATOMIC_SEQ_CST); + } } }