aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/thunderx/nicvf_svf.c
blob: bccf290599b7e5a40be9d0647d7a3e93dde073a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/* SPDX-License-Identifier: BSD-3-Clause
 * Copyright(c) 2016 Cavium, Inc
 */

#include <assert.h>
#include <stddef.h>

#include <rte_debug.h>
#include <rte_malloc.h>

#include "base/nicvf_bsvf.h"

#include "nicvf_svf.h"

void
nicvf_svf_push(struct nicvf *vf)
{
	struct svf_entry *entry = NULL;

	assert(vf != NULL);

	entry = rte_zmalloc("nicvf", sizeof(*entry), RTE_CACHE_LINE_SIZE);
	if (entry == NULL)
		rte_panic("Cannoc allocate memory for svf_entry\n");

	entry->vf = vf;

	nicvf_bsvf_push(entry);
}

struct nicvf *
nicvf_svf_pop(void)
{
	struct nicvf *vf;
	struct svf_entry *entry;

	entry = nicvf_bsvf_pop();

	vf = entry->vf;

	rte_free(entry);

	return vf;
}

int
nicvf_svf_empty(void)
{
	return nicvf_bsvf_empty();
}