From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id CFB395398 for ; Fri, 25 Mar 2016 11:16:11 +0100 (CET) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga104.fm.intel.com with ESMTP; 25 Mar 2016 03:16:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,390,1455004800"; d="scan'208";a="771260594" Received: from dpdk06.sh.intel.com ([10.239.128.225]) by orsmga003.jf.intel.com with ESMTP; 25 Mar 2016 03:16:10 -0700 From: Jianfeng Tan To: dev@dpdk.org Cc: Jianfeng Tan , konstantin.ananyev@intel.com, helin.zhang@intel.com, bruce.richardson@intel.com Date: Fri, 25 Mar 2016 11:15:35 +0800 Message-Id: <1458875736-56444-2-git-send-email-jianfeng.tan@intel.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1458875736-56444-1-git-send-email-jianfeng.tan@intel.com> References: <1458866867-39582-2-git-send-email-jianfeng.tan@intel.com> <1458875736-56444-1-git-send-email-jianfeng.tan@intel.com> Subject: [dpdk-dev] [PATCH 1/2] ethdev: refine new API to query supported ptypes 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: Fri, 25 Mar 2016 10:16:12 -0000 This change is to make user code simpler. For PMDs which do not fill any packet types, return 0 instead of -ENOTSUP as suggested by Bruce. Usually, users only care if the required (by ptype_mask) ptypes can be filled by the specified PMD. If the PMD implements dev_supported_ptypes_get func is not important. And the introduce of another return value (-ENOTSUP) would increase the complexity of user programs to check it. Besides, there are ways to know if a PMD implements the func: a. see doc/guides/nics/overview.rst. b. use (~1) as parameter ptype_mask, then check if return 0. Suggested-by: Bruce Richardson Signed-off-by: Jianfeng Tan --- lib/librte_ether/rte_ethdev.c | 3 +-- lib/librte_ether/rte_ethdev.h | 9 ++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c index a328027..1ee79d2 100644 --- a/lib/librte_ether/rte_ethdev.c +++ b/lib/librte_ether/rte_ethdev.c @@ -1636,8 +1636,7 @@ rte_eth_dev_get_supported_ptypes(uint8_t port_id, uint32_t ptype_mask, RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); dev = &rte_eth_devices[port_id]; - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_supported_ptypes_get, - -ENOTSUP); + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_supported_ptypes_get, 0); all_ptypes = (*dev->dev_ops->dev_supported_ptypes_get)(dev); if (!all_ptypes) diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index e7de34a..2d76849 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -2326,6 +2326,9 @@ void rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info); * @note * Better to invoke this API after the device is already started or rx burst * function is decided, to obtain correct supported ptypes. + * @note + * if a given PMD does not report what ptypes it supports, then the supported + * ptype count is reported as 0. * @param port_id * The port identifier of the Ethernet device. * @param ptype_mask @@ -2335,9 +2338,9 @@ void rte_eth_dev_info_get(uint8_t port_id, struct rte_eth_dev_info *dev_info); * @param num * Size of the array pointed by param ptypes. * @return - * - (>0) Number of supported ptypes. If it exceeds param num, exceeding - * packet types will not be filled in the given array. - * - (0 or -ENOTSUP) if PMD does not fill the specified ptype. + * - (>=0) Number of supported ptypes. If the number of types exceeds num, + * only num entries will be filled into the ptypes array, but the full + * count of supported ptypes will be returned. * - (-ENODEV) if *port_id* invalid. */ int rte_eth_dev_get_supported_ptypes(uint8_t port_id, uint32_t ptype_mask, -- 2.1.4