1aaf4363eSJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 2aaf4363eSJerin Jacob * Copyright(c) 2016 Cavium, Inc 318cc8354SKamil Rytarowski */ 418cc8354SKamil Rytarowski 518cc8354SKamil Rytarowski #include <assert.h> 618cc8354SKamil Rytarowski #include <stddef.h> 718cc8354SKamil Rytarowski 818cc8354SKamil Rytarowski #include <rte_debug.h> 918cc8354SKamil Rytarowski #include <rte_malloc.h> 1018cc8354SKamil Rytarowski 1118cc8354SKamil Rytarowski #include "base/nicvf_bsvf.h" 1218cc8354SKamil Rytarowski 1318cc8354SKamil Rytarowski #include "nicvf_svf.h" 1418cc8354SKamil Rytarowski 1518cc8354SKamil Rytarowski void nicvf_svf_push(struct nicvf * vf)1618cc8354SKamil Rytarowskinicvf_svf_push(struct nicvf *vf) 1718cc8354SKamil Rytarowski { 1818cc8354SKamil Rytarowski struct svf_entry *entry = NULL; 1918cc8354SKamil Rytarowski 2018cc8354SKamil Rytarowski assert(vf != NULL); 2118cc8354SKamil Rytarowski 2218cc8354SKamil Rytarowski entry = rte_zmalloc("nicvf", sizeof(*entry), RTE_CACHE_LINE_SIZE); 2318cc8354SKamil Rytarowski if (entry == NULL) 24*7be78d02SJosh Soref rte_panic("Cannot allocate memory for svf_entry\n"); 2518cc8354SKamil Rytarowski 2618cc8354SKamil Rytarowski entry->vf = vf; 2718cc8354SKamil Rytarowski 2818cc8354SKamil Rytarowski nicvf_bsvf_push(entry); 2918cc8354SKamil Rytarowski } 3018cc8354SKamil Rytarowski 3118cc8354SKamil Rytarowski struct nicvf * nicvf_svf_pop(void)3218cc8354SKamil Rytarowskinicvf_svf_pop(void) 3318cc8354SKamil Rytarowski { 3418cc8354SKamil Rytarowski struct nicvf *vf; 3518cc8354SKamil Rytarowski struct svf_entry *entry; 3618cc8354SKamil Rytarowski 3718cc8354SKamil Rytarowski entry = nicvf_bsvf_pop(); 3818cc8354SKamil Rytarowski 3918cc8354SKamil Rytarowski vf = entry->vf; 4018cc8354SKamil Rytarowski 4118cc8354SKamil Rytarowski rte_free(entry); 4218cc8354SKamil Rytarowski 4318cc8354SKamil Rytarowski return vf; 4418cc8354SKamil Rytarowski } 4518cc8354SKamil Rytarowski 4618cc8354SKamil Rytarowski int nicvf_svf_empty(void)4718cc8354SKamil Rytarowskinicvf_svf_empty(void) 4818cc8354SKamil Rytarowski { 4918cc8354SKamil Rytarowski return nicvf_bsvf_empty(); 5018cc8354SKamil Rytarowski } 51