xref: /dpdk/drivers/net/thunderx/nicvf_svf.c (revision 7be78d027918dbc846e502780faf94d5acdf5f75)
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 Rytarowski nicvf_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 Rytarowski nicvf_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 Rytarowski nicvf_svf_empty(void)
4818cc8354SKamil Rytarowski {
4918cc8354SKamil Rytarowski 	return nicvf_bsvf_empty();
5018cc8354SKamil Rytarowski }
51