eal: remove sys/queue.h from public headers
[dpdk.git] / drivers / net / bnxt / tf_core / ll.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2019-2021 Broadcom
3  * All rights reserved.
4  */
5
6 /* Linked List Functions */
7
8 #include <stdio.h>
9 #include "ll.h"
10
11 /* init linked list */
12 void ll_init(struct ll *ll)
13 {
14         ll->head = NULL;
15         ll->tail = NULL;
16         ll->cnt = 0;
17 }
18
19 /* insert entry in linked list */
20 void ll_insert(struct ll *ll,
21                struct ll_entry *entry)
22 {
23         if (ll->head == NULL) {
24                 ll->head = entry;
25                 ll->tail = entry;
26                 entry->next = NULL;
27                 entry->prev = NULL;
28         } else {
29                 entry->next = ll->head;
30                 entry->prev = NULL;
31                 entry->next->prev = entry;
32                 ll->head = entry->next->prev;
33         }
34         ll->cnt++;
35 }
36
37 /* delete entry from linked list */
38 void ll_delete(struct ll *ll,
39                struct ll_entry *entry)
40 {
41         if (ll->head == entry && ll->tail == entry) {
42                 ll->head = NULL;
43                 ll->tail = NULL;
44         } else if (ll->head == entry) {
45                 ll->head = entry->next;
46                 ll->head->prev = NULL;
47         } else if (ll->tail == entry) {
48                 ll->tail = entry->prev;
49                 ll->tail->next = NULL;
50         } else {
51                 entry->prev->next = entry->next;
52                 entry->next->prev = entry->prev;
53         }
54         ll->cnt--;
55 }