DPDK  19.02.0
rte_bbdev_pmd.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2017 Intel Corporation
3  */
4 
5 #ifndef _RTE_BBDEV_PMD_H_
6 #define _RTE_BBDEV_PMD_H_
7 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #include <stdint.h>
25 #include <rte_log.h>
26 
27 #include "rte_bbdev.h"
28 
30 #define RTE_BBDEV_DEFAULT_MAX_NB_QUEUES RTE_MAX_LCORE
31 
33 #define RTE_BBDEV_QUEUE_SIZE_LIMIT 16384
34 
46 struct rte_bbdev * __rte_experimental
47 rte_bbdev_allocate(const char *name);
48 
58 int __rte_experimental
59 rte_bbdev_release(struct rte_bbdev *bbdev);
60 
72 struct rte_bbdev * __rte_experimental
73 rte_bbdev_get_named_dev(const char *name);
74 
82 typedef int (*rte_bbdev_setup_queues_t)(struct rte_bbdev *dev,
83  uint16_t num_queues, int socket_id);
84 
86 typedef int (*rte_bbdev_intr_enable_t)(struct rte_bbdev *dev);
87 
89 typedef int (*rte_bbdev_queue_setup_t)(struct rte_bbdev *dev,
90  uint16_t queue_id, const struct rte_bbdev_queue_conf *conf);
91 
92 /*
93  * @internal
94  * Function to release memory resources allocated for a device queue.
95  */
96 typedef int (*rte_bbdev_queue_release_t)(struct rte_bbdev *dev,
97  uint16_t queue_id);
98 
100 typedef int (*rte_bbdev_start_t)(struct rte_bbdev *dev);
101 
103 typedef void (*rte_bbdev_stop_t)(struct rte_bbdev *dev);
104 
106 typedef int (*rte_bbdev_close_t)(struct rte_bbdev *dev);
107 
109 typedef int (*rte_bbdev_queue_start_t)(struct rte_bbdev *dev,
110  uint16_t queue_id);
111 
113 typedef int (*rte_bbdev_queue_stop_t)(struct rte_bbdev *dev, uint16_t queue_id);
114 
116 typedef void (*rte_bbdev_stats_get_t)(struct rte_bbdev *dev,
117  struct rte_bbdev_stats *stats);
118 
120 typedef void (*rte_bbdev_stats_reset_t)(struct rte_bbdev *dev);
121 
123 typedef void (*rte_bbdev_info_get_t)(struct rte_bbdev *dev,
124  struct rte_bbdev_driver_info *dev_info);
125 
126 /*
127  * @internal
128  * Function to enable interrupt for next op on a queue of a device.
129  */
130 typedef int (*rte_bbdev_queue_intr_enable_t)(struct rte_bbdev *dev,
131  uint16_t queue_id);
132 
133 /*
134  * @internal
135  * Function to disable interrupt for next op on a queue of a device.
136  */
137 typedef int (*rte_bbdev_queue_intr_disable_t)(struct rte_bbdev *dev,
138  uint16_t queue_id);
139 
149  rte_bbdev_intr_enable_t intr_enable;
151  rte_bbdev_start_t start;
153  rte_bbdev_stop_t stop;
155  rte_bbdev_close_t close;
156 
158  rte_bbdev_info_get_t info_get;
160  rte_bbdev_stats_get_t stats_get;
162  rte_bbdev_stats_reset_t stats_reset;
163 
165  rte_bbdev_queue_setup_t queue_setup;
167  rte_bbdev_queue_release_t queue_release;
169  rte_bbdev_queue_start_t queue_start;
171  rte_bbdev_queue_stop_t queue_stop;
172 
174  rte_bbdev_queue_intr_enable_t queue_intr_enable;
176  rte_bbdev_queue_intr_disable_t queue_intr_disable;
177 };
178 
190 void __rte_experimental
191 rte_bbdev_pmd_callback_process(struct rte_bbdev *dev,
192  enum rte_bbdev_event_type event, void *ret_param);
193 
194 #ifdef __cplusplus
195 }
196 #endif
197 
198 #endif /* _RTE_BBDEV_PMD_H_ */