4b4f810e47
ethdev has two interfaces, one interface between applications and library, these APIs are declared in the rte_ethdev.h public header. Other interface is between drivers and library, these functions are declared in ethdev_driver.h and marked as internal. But all functions are defined in rte_ethdev.c file. This patch moves functions for drivers to its own file, ethdev_driver.c for cleanup, no functional change in functions. Some public APIs and driver helpers call common internal functions, which were mostly static since both were in same file. To be able to move driver helpers, common functions are moved to ethdev_private.c. (ethdev_private.c is used for functions that are internal to the library and shared by multiple .c files in the ethdev library.) Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
73 lines
2.2 KiB
C
73 lines
2.2 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2018 Gaëtan Rivet
|
|
*/
|
|
|
|
#ifndef _ETH_PRIVATE_H_
|
|
#define _ETH_PRIVATE_H_
|
|
|
|
#include <sys/queue.h>
|
|
|
|
#include <rte_malloc.h>
|
|
#include <rte_os_shim.h>
|
|
|
|
#include "rte_ethdev.h"
|
|
|
|
struct eth_dev_shared {
|
|
uint64_t next_owner_id;
|
|
rte_spinlock_t ownership_lock;
|
|
struct rte_eth_dev_data data[RTE_MAX_ETHPORTS];
|
|
};
|
|
|
|
extern struct eth_dev_shared *eth_dev_shared_data;
|
|
|
|
/**
|
|
* The user application callback description.
|
|
*
|
|
* It contains callback address to be registered by user application,
|
|
* the pointer to the parameters for callback, and the event type.
|
|
*/
|
|
struct rte_eth_dev_callback {
|
|
TAILQ_ENTRY(rte_eth_dev_callback) next; /**< Callbacks list */
|
|
rte_eth_dev_cb_fn cb_fn; /**< Callback address */
|
|
void *cb_arg; /**< Parameter for callback */
|
|
void *ret_param; /**< Return parameter */
|
|
enum rte_eth_event_type event; /**< Interrupt event type */
|
|
uint32_t active; /**< Callback is executing */
|
|
};
|
|
|
|
extern rte_spinlock_t eth_dev_cb_lock;
|
|
|
|
/*
|
|
* Convert rte_eth_dev pointer to port ID.
|
|
* NULL will be translated to RTE_MAX_ETHPORTS.
|
|
*/
|
|
uint16_t eth_dev_to_id(const struct rte_eth_dev *dev);
|
|
|
|
/* Generic rte_eth_dev comparison function. */
|
|
typedef int (*rte_eth_cmp_t)(const struct rte_eth_dev *, const void *);
|
|
|
|
/* Generic rte_eth_dev iterator. */
|
|
struct rte_eth_dev *
|
|
eth_find_device(const struct rte_eth_dev *_start, rte_eth_cmp_t cmp,
|
|
const void *data);
|
|
|
|
/* Parse devargs value for representor parameter. */
|
|
int rte_eth_devargs_parse_representor_ports(char *str, void *data);
|
|
|
|
/* reset eth fast-path API to dummy values */
|
|
void eth_dev_fp_ops_reset(struct rte_eth_fp_ops *fpo);
|
|
|
|
/* setup eth fast-path API to ethdev values */
|
|
void eth_dev_fp_ops_setup(struct rte_eth_fp_ops *fpo,
|
|
const struct rte_eth_dev *dev);
|
|
|
|
|
|
void eth_dev_shared_data_prepare(void);
|
|
|
|
void eth_dev_rxq_release(struct rte_eth_dev *dev, uint16_t qid);
|
|
void eth_dev_txq_release(struct rte_eth_dev *dev, uint16_t qid);
|
|
int eth_dev_rx_queue_config(struct rte_eth_dev *dev, uint16_t nb_queues);
|
|
int eth_dev_tx_queue_config(struct rte_eth_dev *dev, uint16_t nb_queues);
|
|
|
|
#endif /* _ETH_PRIVATE_H_ */
|