From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id ADEEDA0A0E; Wed, 3 Feb 2021 15:40:40 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7B8BD24061A; Wed, 3 Feb 2021 15:40:40 +0100 (CET) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mails.dpdk.org (Postfix) with ESMTP id D9FB5240612 for ; Wed, 3 Feb 2021 15:40:38 +0100 (CET) IronPort-SDR: ssOsFMwtpeLj8NFLxZoYZgL4itRctbRMyz0Vzl2+LTRI5yEf1Dj/kiKCE6NEDeAjYggo98cc/7 VxMpBhDGHa+g== X-IronPort-AV: E=McAfee;i="6000,8403,9883"; a="168157967" X-IronPort-AV: E=Sophos;i="5.79,398,1602572400"; d="scan'208";a="168157967" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Feb 2021 06:40:37 -0800 IronPort-SDR: LKthaYEMiSf7imGVyzrRHxtjk4so9Nv9ecd8CneOa4EuZEYLFZss3z9pJ9XqfSYP0V8EESZFFb LAQ8C6QtCqdA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,398,1602572400"; d="scan'208";a="371502117" Received: from dpdk_jiangcheng.sh.intel.com ([10.67.119.112]) by fmsmga008.fm.intel.com with ESMTP; 03 Feb 2021 06:40:35 -0800 From: Cheng Jiang To: maxime.coquelin@redhat.com, chenbo.xia@intel.com Cc: dev@dpdk.org, jiayu.hu@intel.com, yvonnex.yang@intel.com, Cheng Jiang Date: Wed, 3 Feb 2021 14:29:04 +0000 Message-Id: <20210203142904.37625-1-Cheng1.jiang@intel.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210131123628.47883-1-Cheng1.jiang@intel.com> References: <20210131123628.47883-1-Cheng1.jiang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2] examples/vhost: add error propagation in ioat ops 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 Sender: "dev" It makes more sense to add error propagation for rte_ioat_completed_ops. And change the type of dev_id from int to uint16_t. Signed-off-by: Cheng Jiang --- v2: mentioned dev_id type changes in git log examples/vhost/ioat.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/examples/vhost/ioat.c b/examples/vhost/ioat.c index dbad28d43..60b73be93 100644 --- a/examples/vhost/ioat.c +++ b/examples/vhost/ioat.c @@ -22,7 +22,6 @@ struct packet_tracker { struct packet_tracker cb_tracker[MAX_VHOST_DEVICE]; - int open_ioat(const char *value) { @@ -129,7 +128,7 @@ ioat_transfer_data_cb(int vid, uint16_t queue_id, struct rte_vhost_async_status *opaque_data, uint16_t count) { uint32_t i_desc; - int dev_id = dma_bind[vid].dmas[queue_id * 2 + VIRTIO_RXQ].dev_id; + uint16_t dev_id = dma_bind[vid].dmas[queue_id * 2 + VIRTIO_RXQ].dev_id; struct rte_vhost_iov_iter *src = NULL; struct rte_vhost_iov_iter *dst = NULL; unsigned long i_seg; @@ -182,10 +181,17 @@ ioat_check_completed_copies_cb(int vid, uint16_t queue_id, unsigned short mask = MAX_ENQUEUED_SIZE - 1; unsigned short i; - int dev_id = dma_bind[vid].dmas[queue_id * 2 + uint16_t dev_id = dma_bind[vid].dmas[queue_id * 2 + VIRTIO_RXQ].dev_id; n_seg = rte_ioat_completed_ops(dev_id, 255, dump, dump); - if (n_seg <= 0) + if (n_seg < 0) { + RTE_LOG(ERR, + VHOST_DATA, + "fail to poll completed buf on IOAT device %u", + dev_id); + return 0; + } + if (n_seg == 0) return 0; cb_tracker[dev_id].ioat_space += n_seg; -- 2.29.2