xref: /dpdk/lib/ethdev/ethdev_profile.c (revision 0d9f56a857c6e1219636f3e75d8964d81083018a)
199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
299a2dd95SBruce Richardson  * Copyright(c) 2010-2018 Intel Corporation
399a2dd95SBruce Richardson  */
499a2dd95SBruce Richardson 
599a2dd95SBruce Richardson #include "ethdev_profile.h"
699a2dd95SBruce Richardson 
799a2dd95SBruce Richardson /**
899a2dd95SBruce Richardson  * This conditional block enables Ethernet device profiling with
999a2dd95SBruce Richardson  * Intel (R) VTune (TM) Amplifier.
1099a2dd95SBruce Richardson  */
1199a2dd95SBruce Richardson #ifdef RTE_ETHDEV_PROFILE_WITH_VTUNE
1299a2dd95SBruce Richardson 
1399a2dd95SBruce Richardson /**
1499a2dd95SBruce Richardson  * Hook callback to trace rte_eth_rx_burst() calls.
1599a2dd95SBruce Richardson  */
1699a2dd95SBruce Richardson uint16_t
profile_hook_rx_burst_cb(__rte_unused uint16_t port_id,__rte_unused uint16_t queue_id,__rte_unused struct rte_mbuf * pkts[],uint16_t nb_pkts,__rte_unused uint16_t max_pkts,__rte_unused void * user_param)1799a2dd95SBruce Richardson profile_hook_rx_burst_cb(
1899a2dd95SBruce Richardson 	__rte_unused uint16_t port_id, __rte_unused uint16_t queue_id,
1999a2dd95SBruce Richardson 	__rte_unused struct rte_mbuf *pkts[], uint16_t nb_pkts,
2099a2dd95SBruce Richardson 	__rte_unused uint16_t max_pkts, __rte_unused void *user_param)
2199a2dd95SBruce Richardson {
2299a2dd95SBruce Richardson 	return nb_pkts;
2399a2dd95SBruce Richardson }
2499a2dd95SBruce Richardson 
2599a2dd95SBruce Richardson /**
2609fd4227SAndrew Rybchenko  * Setting profiling Rx callback for a given Ethernet device.
27*0d9f56a8SAndrew Rybchenko  * This function must be invoked when Ethernet device is being configured.
2899a2dd95SBruce Richardson  *
2999a2dd95SBruce Richardson  * @param port_id
3099a2dd95SBruce Richardson  *  The port identifier of the Ethernet device.
3199a2dd95SBruce Richardson  * @param rx_queue_num
3209fd4227SAndrew Rybchenko  *  The number of Rx queues on specified port.
3399a2dd95SBruce Richardson  *
3499a2dd95SBruce Richardson  * @return
3599a2dd95SBruce Richardson  *  - On success, zero.
3699a2dd95SBruce Richardson  *  - On failure, a negative value.
3799a2dd95SBruce Richardson  */
3899a2dd95SBruce Richardson static inline int
vtune_profile_rx_init(uint16_t port_id,uint8_t rx_queue_num)3999a2dd95SBruce Richardson vtune_profile_rx_init(uint16_t port_id, uint8_t rx_queue_num)
4099a2dd95SBruce Richardson {
4199a2dd95SBruce Richardson 	uint16_t q_id;
4299a2dd95SBruce Richardson 
4399a2dd95SBruce Richardson 	for (q_id = 0; q_id < rx_queue_num; ++q_id) {
4499a2dd95SBruce Richardson 		if (!rte_eth_add_rx_callback(
4599a2dd95SBruce Richardson 			port_id, q_id, profile_hook_rx_burst_cb, NULL)) {
4699a2dd95SBruce Richardson 			return -rte_errno;
4799a2dd95SBruce Richardson 		}
4899a2dd95SBruce Richardson 	}
4999a2dd95SBruce Richardson 
5099a2dd95SBruce Richardson 	return 0;
5199a2dd95SBruce Richardson }
5299a2dd95SBruce Richardson #endif /* RTE_ETHDEV_PROFILE_WITH_VTUNE */
5399a2dd95SBruce Richardson 
5499a2dd95SBruce Richardson int
__rte_eth_dev_profile_init(__rte_unused uint16_t port_id,__rte_unused struct rte_eth_dev * dev)5599a2dd95SBruce Richardson __rte_eth_dev_profile_init(__rte_unused uint16_t port_id,
5699a2dd95SBruce Richardson 	__rte_unused struct rte_eth_dev *dev)
5799a2dd95SBruce Richardson {
5899a2dd95SBruce Richardson #ifdef RTE_ETHDEV_PROFILE_WITH_VTUNE
5999a2dd95SBruce Richardson 	return vtune_profile_rx_init(port_id, dev->data->nb_rx_queues);
6099a2dd95SBruce Richardson #endif
6199a2dd95SBruce Richardson 	return 0;
6299a2dd95SBruce Richardson }
63