[dpdk-dev] [PATCH 4/4] ethdev: check support for rx_queue_count and descriptor_done fns
Roger B. Melton
rmelton at cisco.com
Fri Jun 12 19:32:56 CEST 2015
Hi Bruce, Comment in-line. Regards, Roger
On 6/12/15 7:28 AM, Bruce Richardson 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 crashes
> at run-time if the application goes to use those APIs. The performance
> impact of this change should be very small as this is a predictable
> branch in the function.
>
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
> lib/librte_ether/rte_ethdev.h | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index 827ca3e..9ad1b6a 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -2496,6 +2496,8 @@ rte_eth_rx_burst(uint8_t port_id, uint16_t queue_id,
> * The queue id on the specific port.
> * @return
> * The number of used descriptors in the specific queue.
> + * NOTE: if function is not supported by device this call
> + * returns (uint32_t)-ENOTSUP
> */
> static inline uint32_t
Why not change the return type to int32_t?
In this way, the caller isn't required to make the assumption that a
large queue count indicates an error. < 0 means error, other wise it's
a valid queue count.
This approach would be consistent with other APIs.
> rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)
> @@ -2507,8 +2509,9 @@ rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id)
> RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
> return 0;
> }
> - RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, 0);
> #endif
> + RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, (uint32_t)-ENOTSUP);
> +
> return (*dev->dev_ops->rx_queue_count)(dev, queue_id);
> }
>
> @@ -2525,6 +2528,7 @@ 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)
> @@ -2536,8 +2540,8 @@ rte_eth_rx_descriptor_done(uint8_t port_id, uint16_t queue_id, uint16_t offset)
> RTE_PMD_DEBUG_TRACE("Invalid port_id=%d\n", port_id);
> return -ENODEV;
> }
> - RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP);
> #endif
> + RTE_ETH_FPTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP);
>
> return (*dev->dev_ops->rx_descriptor_done)( \
> dev->data->rx_queues[queue_id], offset);
--
____________________________________________________________________
|Roger B. Melton | | Cisco Systems |
|CPP Software :|: :|: 7100 Kit Creek Rd |
|+1.919.476.2332 phone :|||: :|||: RTP, NC 27709-4987 |
|+1.919.392.1094 fax .:|||||||:..:|||||||:. rmelton at cisco.com |
| |
| This email may contain confidential and privileged material for the|
| sole use of the intended recipient. Any review, use, distribution |
| or disclosure by others is strictly prohibited. If you are not the |
| intended recipient (or authorized to receive for the recipient), |
| please contact the sender by reply email and delete all copies of |
| this message. |
| |
| For corporate legal information go to: |
| http://www.cisco.com/web/about/doing_business/legal/cri/index.html |
|__________________________ http://www.cisco.com ____________________|
More information about the dev
mailing list