DPDK  21.08.0
rte_swx_table_selector.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2021 Intel Corporation
3  */
4 #ifndef __INCLUDE_RTE_SWX_TABLE_SELECTOR_H__
5 #define __INCLUDE_RTE_SWX_TABLE_SELECTOR_H__
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
18 #include <stdint.h>
19 #include <sys/queue.h>
20 
21 #include <rte_compat.h>
22 
23 #include "rte_swx_table.h"
24 
28  uint32_t group_id_offset;
29 
31  uint32_t selector_size;
32 
34  uint32_t selector_offset;
35 
44  uint8_t *selector_mask;
45 
47  uint32_t member_id_offset;
48 
50  uint32_t n_groups_max;
51 
54 };
55 
59  TAILQ_ENTRY(rte_swx_table_selector_member) node;
60 
62  uint32_t member_id;
63 
65  uint32_t member_weight;
66 };
67 
69 TAILQ_HEAD(rte_swx_table_selector_member_list, rte_swx_table_selector_member);
70 
74  struct rte_swx_table_selector_member_list members;
75 };
76 
87 __rte_experimental
88 uint64_t
90 
101 __rte_experimental
102 uint64_t
104 
119 __rte_experimental
120 void *
122  struct rte_swx_table_selector_group **groups,
123  int numa_node);
124 
139 __rte_experimental
140 int
142  uint32_t group_id,
143  struct rte_swx_table_selector_group *group);
144 
181 __rte_experimental
182 int
184  void *mailbox,
185  uint8_t **group_id_buffer,
186  uint8_t **selector_buffer,
187  uint8_t **member_id_buffer);
188 
195 __rte_experimental
196 void
197 rte_swx_table_selector_free(void *table);
198 
199 #ifdef __cplusplus
200 }
201 #endif
202 
203 #endif
__rte_experimental int rte_swx_table_selector_select(void *table, void *mailbox, uint8_t **group_id_buffer, uint8_t **selector_buffer, uint8_t **member_id_buffer)
__rte_experimental int rte_swx_table_selector_group_set(void *table, uint32_t group_id, struct rte_swx_table_selector_group *group)
__rte_experimental uint64_t rte_swx_table_selector_footprint_get(uint32_t n_groups_max, uint32_t n_members_per_group_max)
__rte_experimental uint64_t rte_swx_table_selector_mailbox_size_get(void)
__rte_experimental void rte_swx_table_selector_free(void *table)
TAILQ_HEAD(rte_swx_table_selector_member_list, rte_swx_table_selector_member)
__rte_experimental void * rte_swx_table_selector_create(struct rte_swx_table_selector_params *params, struct rte_swx_table_selector_group **groups, int numa_node)