xref: /dpdk/drivers/net/thunderx/base/nicvf_bsvf.h (revision aaf4363e1e9e518c034c7ff9938a2faefde9854d)
1*aaf4363eSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
2*aaf4363eSJerin Jacob  * Copyright(c) 2016 Cavium, Inc
3f2546f8eSKamil Rytarowski  */
4f2546f8eSKamil Rytarowski 
5f2546f8eSKamil Rytarowski #ifndef __THUNDERX_NICVF_BSVF_H__
6f2546f8eSKamil Rytarowski #define __THUNDERX_NICVF_BSVF_H__
7f2546f8eSKamil Rytarowski 
8f2546f8eSKamil Rytarowski #include <sys/queue.h>
9f2546f8eSKamil Rytarowski 
10f2546f8eSKamil Rytarowski struct nicvf;
11f2546f8eSKamil Rytarowski 
12f2546f8eSKamil Rytarowski /**
13f2546f8eSKamil Rytarowski  * The base queue structure to hold secondary qsets.
14f2546f8eSKamil Rytarowski  */
15f2546f8eSKamil Rytarowski struct svf_entry {
16fc2c8014SJerin Jacob 	STAILQ_ENTRY(svf_entry) next; /**< Next element's pointer */
17f2546f8eSKamil Rytarowski 	struct nicvf *vf;              /**< Holder of a secondary qset */
18f2546f8eSKamil Rytarowski };
19f2546f8eSKamil Rytarowski 
20f2546f8eSKamil Rytarowski /**
21f2546f8eSKamil Rytarowski  * Enqueue new entry to secondary qsets.
22f2546f8eSKamil Rytarowski  *
23f2546f8eSKamil Rytarowski  * @param entry
24f2546f8eSKamil Rytarowski  *   Entry to be enqueued.
25f2546f8eSKamil Rytarowski  */
26f2546f8eSKamil Rytarowski void
27f2546f8eSKamil Rytarowski nicvf_bsvf_push(struct svf_entry *entry);
28f2546f8eSKamil Rytarowski 
29f2546f8eSKamil Rytarowski /**
30f2546f8eSKamil Rytarowski  * Dequeue an entry from secondary qsets.
31f2546f8eSKamil Rytarowski  *
32f2546f8eSKamil Rytarowski  * @return
33f2546f8eSKamil Rytarowski  *   Dequeued entry.
34f2546f8eSKamil Rytarowski  */
35f2546f8eSKamil Rytarowski struct svf_entry *
36f2546f8eSKamil Rytarowski nicvf_bsvf_pop(void);
37f2546f8eSKamil Rytarowski 
38f2546f8eSKamil Rytarowski /**
39f2546f8eSKamil Rytarowski  * Check if the queue of secondary qsets is empty.
40f2546f8eSKamil Rytarowski  *
41f2546f8eSKamil Rytarowski  * @return
42f2546f8eSKamil Rytarowski  *   0 on non-empty
43f2546f8eSKamil Rytarowski  *   otherwise empty
44f2546f8eSKamil Rytarowski  */
45f2546f8eSKamil Rytarowski int
46f2546f8eSKamil Rytarowski nicvf_bsvf_empty(void);
47f2546f8eSKamil Rytarowski 
48f2546f8eSKamil Rytarowski #endif /* __THUNDERX_NICVF_BSVF_H__  */
49