DPDK  22.11.7
rte_swx_table.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2020 Intel Corporation
3  */
4 #ifndef __INCLUDE_RTE_SWX_TABLE_H__
5 #define __INCLUDE_RTE_SWX_TABLE_H__
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
18 #include <stdint.h>
19 
20 #include <rte_os.h>
21 
22 #include "rte_swx_hash_func.h"
23 
28 
31 
34 };
35 
40 
42  uint32_t key_size;
43 
45  uint32_t key_offset;
46 
55  uint8_t *key_mask0;
56 
61  uint32_t action_data_size;
62 
68 
72  uint32_t n_keys_max;
73 };
74 
81 
85  uint8_t *key;
86 
92  uint8_t *key_mask;
93 
99  uint64_t key_signature;
100 
108  uint32_t key_priority;
109 
111  uint64_t action_id;
112 
119  uint8_t *action_data;
120 };
121 
123 RTE_TAILQ_HEAD(rte_swx_table_entry_list, rte_swx_table_entry);
124 
137 typedef uint64_t
139  struct rte_swx_table_entry_list *entries,
140  const char *args);
141 
152 typedef uint64_t
154 
169 typedef void *
170 (*rte_swx_table_create_t)(struct rte_swx_table_params *params,
171  struct rte_swx_table_entry_list *entries,
172  const char *args,
173  int numa_node);
174 
187 typedef int
188 (*rte_swx_table_add_t)(void *table,
189  struct rte_swx_table_entry *entry);
190 
204 typedef int
205 (*rte_swx_table_delete_t)(void *table,
206  struct rte_swx_table_entry *entry);
207 
269 typedef int
270 (*rte_swx_table_lookup_t)(void *table,
271  void *mailbox,
272  uint8_t **key,
273  uint64_t *action_id,
274  uint8_t **action_data,
275  size_t *entry_id,
276  int *hit);
277 
284 typedef void
285 (*rte_swx_table_free_t)(void *table);
286 
291 
294 
297 
303 
309 
312 
315 };
316 
317 #ifdef __cplusplus
318 }
319 #endif
320 
321 #endif
rte_swx_table_params::match_type
enum rte_swx_table_match_type match_type
Definition: rte_swx_table.h:39
rte_swx_table_params::n_keys_max
uint32_t n_keys_max
Definition: rte_swx_table.h:72
RTE_SWX_TABLE_MATCH_EXACT
@ RTE_SWX_TABLE_MATCH_EXACT
Definition: rte_swx_table.h:33
rte_swx_table_entry::key_priority
uint32_t key_priority
Definition: rte_swx_table.h:108
rte_swx_table_params::key_offset
uint32_t key_offset
Definition: rte_swx_table.h:45
RTE_TAILQ_HEAD
RTE_TAILQ_HEAD(rte_swx_table_entry_list, rte_swx_table_entry)
rte_swx_table_entry::key_mask
uint8_t * key_mask
Definition: rte_swx_table.h:92
rte_swx_table_ops::free
rte_swx_table_free_t free
Definition: rte_swx_table.h:314
rte_swx_table_params::hash_func
rte_swx_hash_func_t hash_func
Definition: rte_swx_table.h:67
rte_swx_table_ops::add
rte_swx_table_add_t add
Definition: rte_swx_table.h:302
rte_swx_hash_func_t
uint32_t(* rte_swx_hash_func_t)(const void *key, uint32_t length, uint32_t seed)
Definition: rte_swx_hash_func.h:31
rte_swx_table_footprint_get_t
uint64_t(* rte_swx_table_footprint_get_t)(struct rte_swx_table_params *params, struct rte_swx_table_entry_list *entries, const char *args)
Definition: rte_swx_table.h:138
RTE_SWX_TABLE_MATCH_LPM
@ RTE_SWX_TABLE_MATCH_LPM
Definition: rte_swx_table.h:30
rte_swx_table_ops::mailbox_size_get
rte_swx_table_mailbox_size_get_t mailbox_size_get
Definition: rte_swx_table.h:293
rte_swx_table_entry::key_signature
uint64_t key_signature
Definition: rte_swx_table.h:99
RTE_SWX_TABLE_MATCH_WILDCARD
@ RTE_SWX_TABLE_MATCH_WILDCARD
Definition: rte_swx_table.h:27
rte_swx_table_entry::RTE_TAILQ_ENTRY
RTE_TAILQ_ENTRY(rte_swx_table_entry) node
rte_swx_table_params
Definition: rte_swx_table.h:37
rte_swx_table_ops::del
rte_swx_table_delete_t del
Definition: rte_swx_table.h:308
rte_swx_table_params::key_size
uint32_t key_size
Definition: rte_swx_table.h:42
rte_swx_table_ops::lkp
rte_swx_table_lookup_t lkp
Definition: rte_swx_table.h:311
rte_swx_table_lookup_t
int(* rte_swx_table_lookup_t)(void *table, void *mailbox, uint8_t **key, uint64_t *action_id, uint8_t **action_data, size_t *entry_id, int *hit)
Definition: rte_swx_table.h:270
rte_swx_table_ops
Definition: rte_swx_table.h:288
rte_swx_table_create_t
void *(* rte_swx_table_create_t)(struct rte_swx_table_params *params, struct rte_swx_table_entry_list *entries, const char *args, int numa_node)
Definition: rte_swx_table.h:170
rte_swx_table_delete_t
int(* rte_swx_table_delete_t)(void *table, struct rte_swx_table_entry *entry)
Definition: rte_swx_table.h:205
rte_swx_table_params::key_mask0
uint8_t * key_mask0
Definition: rte_swx_table.h:55
rte_swx_table_match_type
rte_swx_table_match_type
Definition: rte_swx_table.h:25
rte_swx_table_free_t
void(* rte_swx_table_free_t)(void *table)
Definition: rte_swx_table.h:285
rte_swx_table_add_t
int(* rte_swx_table_add_t)(void *table, struct rte_swx_table_entry *entry)
Definition: rte_swx_table.h:188
rte_swx_table_entry::action_data
uint8_t * action_data
Definition: rte_swx_table.h:119
rte_swx_hash_func.h
rte_swx_table_params::action_data_size
uint32_t action_data_size
Definition: rte_swx_table.h:61
rte_swx_table_ops::footprint_get
rte_swx_table_footprint_get_t footprint_get
Definition: rte_swx_table.h:290
rte_swx_table_entry::action_id
uint64_t action_id
Definition: rte_swx_table.h:111
rte_swx_table_ops::create
rte_swx_table_create_t create
Definition: rte_swx_table.h:296
rte_swx_table_entry
Definition: rte_swx_table.h:76
rte_swx_table_entry::key
uint8_t * key
Definition: rte_swx_table.h:85
rte_swx_table_mailbox_size_get_t
uint64_t(* rte_swx_table_mailbox_size_get_t)(void)
Definition: rte_swx_table.h:153