DPDK  19.11.1
rte_pmd_dpaa2_qdma.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2018-2019 NXP
3  */
4 
5 #ifndef __RTE_PMD_DPAA2_QDMA_H__
6 #define __RTE_PMD_DPAA2_QDMA_H__
7 
16 #define RTE_QDMA_BURST_NB_MAX 256
17 
19 enum {
34 };
35 
37 enum {
38  RTE_QDMA_LONG_FORMAT,
39  RTE_QDMA_ULTRASHORT_FORMAT,
40 };
41 
49 #define RTE_QDMA_VQ_EXCLUSIVE_PQ (1ULL)
50 
52 #define RTE_QDMA_JOB_SRC_PHY (1ULL)
53 
55 #define RTE_QDMA_JOB_DEST_PHY (1ULL << 1)
56 
58 struct rte_qdma_attr {
60  uint16_t num_hw_queues;
61 };
62 
68  uint16_t max_vqs;
70  uint8_t mode;
72  uint8_t format;
82 };
83 
84 struct rte_qdma_rbp {
85  uint32_t use_ultrashort:1;
86  uint32_t enable:1;
96  uint32_t dportid:4;
97  uint32_t dpfid:2;
98  uint32_t dvfid:6;
99  /*using route by port for destination */
100  uint32_t drbp:1;
110  uint32_t sportid:4;
111  uint32_t spfid:2;
112  uint32_t svfid:6;
113  /* using route by port for source */
114  uint32_t srbp:1;
115  uint32_t rsv:4;
116 };
117 
123  uint32_t lcore_id;
124  /* Total number of enqueues on this VQ */
125  uint64_t num_enqueues;
126  /* Total number of dequeues from this VQ */
127  uint64_t num_dequeues;
128  /* total number of pending jobs in this VQ */
129  uint64_t num_pending_jobs;
130 };
131 
133 struct rte_qdma_job {
135  uint64_t src;
137  uint64_t dest;
139  uint32_t len;
141  uint32_t flags;
146  uint64_t cnxt;
153  uint16_t status;
154  uint16_t vq_id;
155 };
156 
164 int
165 rte_qdma_init(void);
166 
173 void
174 rte_qdma_attr_get(struct rte_qdma_attr *qdma_attr);
175 
185 int
186 rte_qdma_reset(void);
187 
195 int
196 rte_qdma_configure(struct rte_qdma_config *qdma_config);
197 
205 int
206 rte_qdma_start(void);
207 
222 int
223 rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags);
224 
225 /*create vq for route-by-port*/
226 int
227 rte_qdma_vq_create_rbp(uint32_t lcore_id, uint32_t flags,
228  struct rte_qdma_rbp *rbp);
229 
246 int
247 rte_qdma_vq_enqueue_multi(uint16_t vq_id,
248  struct rte_qdma_job **job,
249  uint16_t nb_jobs);
250 
265 int
266 rte_qdma_vq_enqueue(uint16_t vq_id,
267  struct rte_qdma_job *job);
268 
284 int
285 rte_qdma_vq_dequeue_multi(uint16_t vq_id,
286  struct rte_qdma_job **job,
287  uint16_t nb_jobs);
288 
298 struct rte_qdma_job *
299 rte_qdma_vq_dequeue(uint16_t vq_id);
300 
309 void
310 rte_qdma_vq_stats(uint16_t vq_id,
311  struct rte_qdma_vq_stats *vq_stats);
312 
325 int
326 rte_qdma_vq_destroy(uint16_t vq_id);
327 
341 int
342 rte_qdma_vq_destroy_rbp(uint16_t vq_id);
346 void
347 rte_qdma_stop(void);
348 
352 void
353 rte_qdma_destroy(void);
354 
355 #endif /* __RTE_PMD_DPAA2_QDMA_H__*/
rte_qdma_vq_stats
Definition: rte_pmd_dpaa2_qdma.h:119
rte_qdma_job::status
uint16_t status
Definition: rte_pmd_dpaa2_qdma.h:153
rte_qdma_config::max_hw_queues_per_core
uint16_t max_hw_queues_per_core
Definition: rte_pmd_dpaa2_qdma.h:66
rte_qdma_vq_create
int rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags)
rte_qdma_vq_destroy_rbp
int rte_qdma_vq_destroy_rbp(uint16_t vq_id)
rte_qdma_job::dest
uint64_t dest
Definition: rte_pmd_dpaa2_qdma.h:137
rte_qdma_job::flags
uint32_t flags
Definition: rte_pmd_dpaa2_qdma.h:141
rte_qdma_attr
Definition: rte_pmd_dpaa2_qdma.h:58
rte_qdma_config::format
uint8_t format
Definition: rte_pmd_dpaa2_qdma.h:72
rte_qdma_job::cnxt
uint64_t cnxt
Definition: rte_pmd_dpaa2_qdma.h:146
rte_qdma_config::fle_pool_count
int fle_pool_count
Definition: rte_pmd_dpaa2_qdma.h:81
RTE_QDMA_MODE_HW
@ RTE_QDMA_MODE_HW
Definition: rte_pmd_dpaa2_qdma.h:24
rte_qdma_config::mode
uint8_t mode
Definition: rte_pmd_dpaa2_qdma.h:70
rte_qdma_vq_stats
void rte_qdma_vq_stats(uint16_t vq_id, struct rte_qdma_vq_stats *vq_stats)
rte_qdma_config::max_vqs
uint16_t max_vqs
Definition: rte_pmd_dpaa2_qdma.h:68
rte_qdma_vq_stats::exclusive_hw_queue
uint8_t exclusive_hw_queue
Definition: rte_pmd_dpaa2_qdma.h:121
rte_qdma_job
Definition: rte_pmd_dpaa2_qdma.h:133
rte_qdma_vq_enqueue
int rte_qdma_vq_enqueue(uint16_t vq_id, struct rte_qdma_job *job)
rte_qdma_init
int rte_qdma_init(void)
RTE_QDMA_MODE_VIRTUAL
@ RTE_QDMA_MODE_VIRTUAL
Definition: rte_pmd_dpaa2_qdma.h:33
rte_qdma_config
Definition: rte_pmd_dpaa2_qdma.h:64
rte_qdma_vq_stats::lcore_id
uint32_t lcore_id
Definition: rte_pmd_dpaa2_qdma.h:123
rte_qdma_vq_dequeue
struct rte_qdma_job * rte_qdma_vq_dequeue(uint16_t vq_id)
rte_qdma_job::src
uint64_t src
Definition: rte_pmd_dpaa2_qdma.h:135
rte_qdma_reset
int rte_qdma_reset(void)
rte_qdma_attr::num_hw_queues
uint16_t num_hw_queues
Definition: rte_pmd_dpaa2_qdma.h:60
rte_qdma_vq_dequeue_multi
int rte_qdma_vq_dequeue_multi(uint16_t vq_id, struct rte_qdma_job **job, uint16_t nb_jobs)
rte_qdma_vq_enqueue_multi
int rte_qdma_vq_enqueue_multi(uint16_t vq_id, struct rte_qdma_job **job, uint16_t nb_jobs)
rte_qdma_vq_destroy
int rte_qdma_vq_destroy(uint16_t vq_id)
rte_qdma_job::len
uint32_t len
Definition: rte_pmd_dpaa2_qdma.h:139
rte_qdma_stop
void rte_qdma_stop(void)
rte_qdma_attr_get
void rte_qdma_attr_get(struct rte_qdma_attr *qdma_attr)
rte_qdma_destroy
void rte_qdma_destroy(void)
rte_qdma_start
int rte_qdma_start(void)
rte_qdma_configure
int rte_qdma_configure(struct rte_qdma_config *qdma_config)