From: Stephen Hemminger <stephen@networkplumber.org>
To: Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org
Subject: Re: [PATCH v4 2/2] ethdev: add sanity checks to functions
Date: Tue, 17 Nov 2015 07:53:09 -0800 [thread overview]
Message-ID: <20151117075309.7f05dc3a@samsung9> (raw)
In-Reply-To: <1447762867-32124-3-git-send-email-bruce.richardson@intel.com>
On Tue, 17 Nov 2015 12:21:07 +0000
Bruce Richardson <bruce.richardson@intel.com> wrote:
> The functions rte_eth_rx_queue_count and rte_eth_descriptor_done are
> supported by very few PMDs. Therefore, it is best to check for support
> for the functions in the ethdev library, so as to avoid run-time crashes
> at run-time if the application goes to use those APIs. Similarly, the
> port parameter should also be checked for validity.
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
>
> ---
> lib/librte_ether/rte_ethdev.h | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index a00cd46..028be59 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -2533,16 +2533,16 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id,
> * @param queue_id
> * The queue id on the specific port.
> * @return
> - * The number of used descriptors in the specific queue.
> + * The number of used descriptors in the specific queue, or:
> + * (-EINVAL) if *port_id* is invalid
> + * (-ENOTSUP) if the device does not support this function
> */
> -static inline uint32_t
> +static inline int
> rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)
> {
> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
> -#ifdef RTE_LIBRTE_ETHDEV_DEBUG
> - RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, 0);
> - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, 0);
> -#endif
> + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL);
> + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, -ENOTSUP);
> return (*dev->dev_ops->rx_queue_count)(dev, queue_id);
> }
>
> @@ -2559,15 +2559,14 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)
> * - (1) if the specific DD bit is set.
> * - (0) if the specific DD bit is not set.
> * - (-ENODEV) if *port_id* invalid.
> + * - (-ENOTSUP) if the device does not support this function
> */
> static inline int
> rte_eth_rx_descriptor_done(uint8_t port_id, uint16_t queue_id, uint16_t offset)
> {
> struct rte_eth_dev *dev = &rte_eth_devices[port_id];
> -#ifdef RTE_LIBRTE_ETHDEV_DEBUG
> RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);
> RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP);
> -#endif
> return (*dev->dev_ops->rx_descriptor_done)( \
> dev->data->rx_queues[queue_id], offset);
> }
This breaks ABI since older application built with debug will try
and find the shared library entry for the routine.
next prev parent reply other threads:[~2015-11-17 15:53 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-12 11:28 [PATCH 0/4] ethdev: Add checks for function support in driver Bruce Richardson
2015-06-12 11:28 ` [PATCH 1/4] ethdev: rename macros to have RTE_ETH prefix Bruce Richardson
2015-06-12 11:28 ` [PATCH 2/4] ethdev: move RTE_ETH_FPTR_OR_ERR macros to header Bruce Richardson
2015-06-12 11:28 ` [PATCH 3/4] ethdev: remove duplicated debug functions Bruce Richardson
2015-06-12 11:28 ` [PATCH 4/4] ethdev: check support for rx_queue_count and descriptor_done fns Bruce Richardson
2015-06-12 17:32 ` Roger B. Melton
2015-06-15 10:14 ` Bruce Richardson
2015-07-06 15:11 ` Thomas Monjalon
2015-07-26 20:44 ` Thomas Monjalon
2015-09-09 15:09 ` [PATCH v2 0/4] ethdev: minor cleanup Bruce Richardson
2015-09-09 15:09 ` [PATCH v2 1/4] ethdev: rename macros to have RTE_ETH prefix Bruce Richardson
2015-09-09 15:09 ` [PATCH v2 2/4] ethdev: move error checking macros to header Bruce Richardson
2015-09-09 15:09 ` [PATCH v2 3/4] ethdev: remove duplicated debug functions Bruce Richardson
2015-09-09 15:09 ` [PATCH v2 4/4] ethdev: check driver support for functions Bruce Richardson
2015-09-28 10:23 ` [PATCH v2 0/4] ethdev: minor cleanup Bruce Richardson
2015-11-03 1:11 ` Thomas Monjalon
2015-11-03 10:06 ` Bruce Richardson
2015-11-03 12:00 ` [PATCH v3 " Bruce Richardson
2015-11-03 12:00 ` [PATCH v3 1/4] ethdev: rename macros to have RTE_ETH prefix Bruce Richardson
2015-11-03 12:00 ` [PATCH v3 2/4] ethdev: move error checking macros to header Bruce Richardson
2015-11-04 1:19 ` Thomas Monjalon
2015-11-04 10:24 ` Adrien Mazarguil
2015-11-04 14:10 ` Bruce Richardson
2015-11-04 15:25 ` Adrien Mazarguil
2015-11-04 18:39 ` Stephen Hemminger
2015-11-05 15:09 ` Adrien Mazarguil
2015-11-05 15:17 ` Bruce Richardson
2015-11-06 11:49 ` Bruce Richardson
2015-11-06 17:10 ` Bruce Richardson
2015-11-06 17:22 ` Bruce Richardson
2015-11-09 13:39 ` Adrien Mazarguil
2015-11-09 13:50 ` Adrien Mazarguil
2015-11-09 14:02 ` Richardson, Bruce
2015-11-10 10:31 ` Declan Doherty
2015-11-10 16:08 ` Adrien Mazarguil
2015-11-10 16:21 ` Richardson, Bruce
2015-11-10 17:12 ` Adrien Mazarguil
2015-11-11 10:51 ` Bruce Richardson
2015-11-03 12:00 ` [PATCH v3 3/4] ethdev: remove duplicated debug functions Bruce Richardson
2015-11-03 12:00 ` [PATCH v3 4/4] ethdev: check driver support for functions Bruce Richardson
2015-11-03 22:00 ` Stephen Hemminger
2015-11-04 14:15 ` Bruce Richardson
2015-11-17 12:21 ` [PATCH v4 0/2] ethdev: debug code cleanup Bruce Richardson
2015-11-17 12:21 ` [PATCH v4 1/2] ethdev: remove duplicated debug functions Bruce Richardson
2015-11-17 12:21 ` [PATCH v4 2/2] ethdev: add sanity checks to functions Bruce Richardson
2015-11-17 15:53 ` Stephen Hemminger [this message]
2015-11-24 14:56 ` Bruce Richardson
2015-11-24 15:29 ` Thomas Monjalon
2015-11-24 15:45 ` Bruce Richardson
2015-11-24 15:48 ` Thomas Monjalon
2015-11-24 17:37 ` [PATCH v5 0/2] ethdev: debug code cleanup Bruce Richardson
2015-11-24 17:37 ` [PATCH v5 1/2] ethdev: remove duplicated debug functions Bruce Richardson
2015-11-25 18:14 ` Thomas Monjalon
2015-11-24 17:37 ` [PATCH v5 2/2] ethdev: add sanity checks to functions Bruce Richardson
2015-11-25 18:21 ` [PATCH v5 0/2] ethdev: debug code cleanup Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151117075309.7f05dc3a@samsung9 \
--to=stephen@networkplumber.org \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.