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