From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id A49E1A04B0; Thu, 13 Aug 2020 13:28:33 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6DF621C0C1; Thu, 13 Aug 2020 13:28:21 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 49E371C0BE for ; Thu, 13 Aug 2020 13:28:19 +0200 (CEST) IronPort-SDR: 6O6eBi0fHlcW4o2MFM57EMGNeYPQIQcYkAF1bUunyo6w/vm3CpETWk9xmzFX7jN9WHupoGxHGG QF8/ldxAIXlg== X-IronPort-AV: E=McAfee;i="6000,8403,9711"; a="141827882" X-IronPort-AV: E=Sophos;i="5.76,308,1592895600"; d="scan'208";a="141827882" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Aug 2020 04:28:18 -0700 IronPort-SDR: MJbW24FDjLHmWnO8uiCchNY1wn+jPn1JBiLIO3LaTKjkz+dY/S/nq4aOkBh2Zs7aVkhMl4C30H hSvAfD3Ukvlw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,308,1592895600"; d="scan'208";a="495832596" Received: from silpixa00399126.ir.intel.com ([10.237.222.56]) by fmsmga005.fm.intel.com with ESMTP; 13 Aug 2020 04:28:16 -0700 From: Bruce Richardson To: Nipun Gupta , Hemant Agrawal Cc: dev@dpdk.org, Bruce Richardson , Rosen Xu , Tianfei zhang , Xiaoyun Li , Jingjing Wu Date: Thu, 13 Aug 2020 12:28:00 +0100 Message-Id: <20200813112806.164578-3-bruce.richardson@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200813112806.164578-1-bruce.richardson@intel.com> References: <20200709152047.167730-1-bruce.richardson@intel.com> <20200813112806.164578-1-bruce.richardson@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH v2 2/7] rawdev: allow drivers to return error from info function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Since we now allow some parameter checking inside the driver info_get() functions, it makes sense to allow error return from those functions to the caller. Therefore we change the driver callback return type from void to int. Signed-off-by: Bruce Richardson Reviewed-by: Rosen Xu --- drivers/raw/ifpga/ifpga_rawdev.c | 15 ++++++++------- drivers/raw/ioat/ioat_rawdev.c | 9 ++++++--- drivers/raw/ntb/ntb.c | 8 +++++--- drivers/raw/skeleton/skeleton_rawdev.c | 6 ++++-- lib/librte_rawdev/rte_rawdev.c | 6 ++++-- lib/librte_rawdev/rte_rawdev_pmd.h | 4 ++-- 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c index 47cfa38778..32a2b96c90 100644 --- a/drivers/raw/ifpga/ifpga_rawdev.c +++ b/drivers/raw/ifpga/ifpga_rawdev.c @@ -603,7 +603,7 @@ ifpga_fill_afu_dev(struct opae_accelerator *acc, return 0; } -static void +static int ifpga_rawdev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, size_t dev_info_size) @@ -620,12 +620,12 @@ ifpga_rawdev_info_get(struct rte_rawdev *dev, if (!dev_info || dev_info_size != sizeof(*afu_dev)) { IFPGA_RAWDEV_PMD_ERR("Invalid request"); - return; + return -EINVAL; } adapter = ifpga_rawdev_get_priv(dev); if (!adapter) - return; + return -ENOENT; afu_dev = dev_info; afu_dev->rawdev = dev; @@ -637,7 +637,7 @@ ifpga_rawdev_info_get(struct rte_rawdev *dev, if (ifpga_fill_afu_dev(acc, afu_dev)) { IFPGA_RAWDEV_PMD_ERR("cannot get info\n"); - return; + return -ENOENT; } } @@ -647,21 +647,21 @@ ifpga_rawdev_info_get(struct rte_rawdev *dev, /* get LineSide BAR Index */ if (opae_manager_get_eth_group_region_info(mgr, 0, &opae_lside_eth_info)) { - return; + return -ENOENT; } lside_bar_idx = opae_lside_eth_info.mem_idx; /* get NICSide BAR Index */ if (opae_manager_get_eth_group_region_info(mgr, 1, &opae_nside_eth_info)) { - return; + return -ENOENT; } nside_bar_idx = opae_nside_eth_info.mem_idx; if (lside_bar_idx >= PCI_MAX_RESOURCE || nside_bar_idx >= PCI_MAX_RESOURCE || lside_bar_idx == nside_bar_idx) - return; + return -ENOENT; /* fill LineSide BAR Index */ afu_dev->mem_resource[lside_bar_idx].phys_addr = @@ -679,6 +679,7 @@ ifpga_rawdev_info_get(struct rte_rawdev *dev, afu_dev->mem_resource[nside_bar_idx].addr = opae_nside_eth_info.addr; } + return 0; } static int diff --git a/drivers/raw/ioat/ioat_rawdev.c b/drivers/raw/ioat/ioat_rawdev.c index a5c0452d7e..e2fc787263 100644 --- a/drivers/raw/ioat/ioat_rawdev.c +++ b/drivers/raw/ioat/ioat_rawdev.c @@ -110,15 +110,18 @@ ioat_dev_stop(struct rte_rawdev *dev) RTE_SET_USED(dev); } -static void +static int ioat_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, size_t dev_info_size) { struct rte_ioat_rawdev_config *cfg = dev_info; struct rte_ioat_rawdev *ioat = dev->dev_private; - if (cfg != NULL && dev_info_size == sizeof(*cfg)) - cfg->ring_size = ioat->ring_size; + if (dev_info == NULL || dev_info_size != sizeof(*cfg)) + return -EINVAL; + + cfg->ring_size = ioat->ring_size; + return 0; } static const char * const xstat_names[] = { diff --git a/drivers/raw/ntb/ntb.c b/drivers/raw/ntb/ntb.c index c890c43a32..ced5b6d624 100644 --- a/drivers/raw/ntb/ntb.c +++ b/drivers/raw/ntb/ntb.c @@ -800,7 +800,7 @@ ntb_dequeue_bufs(struct rte_rawdev *dev, return nb_rx; } -static void +static int ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, size_t dev_info_size) { @@ -809,7 +809,7 @@ ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, if (dev_info_size != sizeof(*info)) { NTB_LOG(ERR, "Invalid size parameter to %s", __func__); - return; + return -EINVAL; } info->mw_cnt = hw->mw_cnt; @@ -824,7 +824,7 @@ ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, if (!hw->queue_size || !hw->queue_pairs) { NTB_LOG(ERR, "No queue size and queue num assigned."); - return; + return -EAGAIN; } hw->hdr_size_per_queue = RTE_ALIGN(sizeof(struct ntb_header) + @@ -832,6 +832,8 @@ ntb_dev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, hw->queue_size * sizeof(struct ntb_used), RTE_CACHE_LINE_SIZE); info->ntb_hdr_size = hw->hdr_size_per_queue * hw->queue_pairs; + + return 0; } static int diff --git a/drivers/raw/skeleton/skeleton_rawdev.c b/drivers/raw/skeleton/skeleton_rawdev.c index dc05f3ecf8..dce300c358 100644 --- a/drivers/raw/skeleton/skeleton_rawdev.c +++ b/drivers/raw/skeleton/skeleton_rawdev.c @@ -41,7 +41,7 @@ struct queue_buffers { static struct queue_buffers queue_buf[SKELETON_MAX_QUEUES] = {}; static void clear_queue_bufs(int queue_id); -static void skeleton_rawdev_info_get(struct rte_rawdev *dev, +static int skeleton_rawdev_info_get(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, size_t dev_info_size) { @@ -52,7 +52,7 @@ static void skeleton_rawdev_info_get(struct rte_rawdev *dev, if (!dev_info || dev_info_size != sizeof(*skeldev_conf)) { SKELETON_PMD_ERR("Invalid request"); - return; + return -EINVAL; } skeldev = skeleton_rawdev_get_priv(dev); @@ -63,6 +63,8 @@ static void skeleton_rawdev_info_get(struct rte_rawdev *dev, skeldev_conf->capabilities = skeldev->capabilities; skeldev_conf->device_state = skeldev->device_state; skeldev_conf->firmware_state = skeldev->fw.firmware_state; + + return 0; } static int skeleton_rawdev_configure(const struct rte_rawdev *dev, diff --git a/lib/librte_rawdev/rte_rawdev.c b/lib/librte_rawdev/rte_rawdev.c index a576890356..bde33763ee 100644 --- a/lib/librte_rawdev/rte_rawdev.c +++ b/lib/librte_rawdev/rte_rawdev.c @@ -82,6 +82,7 @@ rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info, size_t dev_private_size) { struct rte_rawdev *rawdev; + int ret = 0; RTE_RAWDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); RTE_FUNC_PTR_OR_ERR_RET(dev_info, -EINVAL); @@ -90,7 +91,8 @@ rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info, if (dev_info->dev_private != NULL) { RTE_FUNC_PTR_OR_ERR_RET(*rawdev->dev_ops->dev_info_get, -ENOTSUP); - (*rawdev->dev_ops->dev_info_get)(rawdev, dev_info->dev_private, + ret = (*rawdev->dev_ops->dev_info_get)(rawdev, + dev_info->dev_private, dev_private_size); } @@ -98,7 +100,7 @@ rte_rawdev_info_get(uint16_t dev_id, struct rte_rawdev_info *dev_info, dev_info->device = rawdev->device; dev_info->socket_id = rawdev->socket_id; - return 0; + return ret; } int diff --git a/lib/librte_rawdev/rte_rawdev_pmd.h b/lib/librte_rawdev/rte_rawdev_pmd.h index 0e72a92058..89e46412a3 100644 --- a/lib/librte_rawdev/rte_rawdev_pmd.h +++ b/lib/librte_rawdev/rte_rawdev_pmd.h @@ -142,9 +142,9 @@ rte_rawdev_pmd_is_valid_dev(uint8_t dev_id) * The size of the structure pointed to by dev_info->dev_private * * @return - * Returns 0 on success + * Returns 0 on success, negative error code on failure */ -typedef void (*rawdev_info_get_t)(struct rte_rawdev *dev, +typedef int (*rawdev_info_get_t)(struct rte_rawdev *dev, rte_rawdev_obj_t dev_info, size_t dev_private_size); -- 2.25.1