[dpdk-dev] [PATCH 1/2] ethdev: refine new API to query supported ptypes
Jianfeng Tan
jianfeng.tan at intel.com
Fri Mar 25 04:15:35 CET 2016
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 <bruce.richardson at intel.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan at intel.com>
---
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
More information about the dev
mailing list