ethdev: introduce available Rx descriptors threshold
[dpdk.git] / lib / ethdev / ethdev_private.h
index 3724429..cc98799 100644 (file)
@@ -5,12 +5,40 @@
 #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.
+ * 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);
@@ -26,4 +54,19 @@ eth_find_device(const struct rte_eth_dev *_start, rte_eth_cmp_t cmp,
 /* 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_ */