DPDK  21.08.0
rte_kni.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4 
5 #ifndef _RTE_KNI_H_
6 #define _RTE_KNI_H_
7 
20 #include <rte_pci.h>
21 #include <rte_memory.h>
22 #include <rte_mempool.h>
23 #include <rte_ether.h>
24 
25 #include <rte_kni_common.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 struct rte_kni;
32 struct rte_mbuf;
33 
37 struct rte_kni_ops {
38  uint16_t port_id; /* Port ID */
39 
40  /* Pointer to function of changing MTU */
41  int (*change_mtu)(uint16_t port_id, unsigned int new_mtu);
42 
43  /* Pointer to function of configuring network interface */
44  int (*config_network_if)(uint16_t port_id, uint8_t if_up);
45 
46  /* Pointer to function of configuring mac address */
47  int (*config_mac_address)(uint16_t port_id, uint8_t mac_addr[]);
48 
49  /* Pointer to function of configuring promiscuous mode */
50  int (*config_promiscusity)(uint16_t port_id, uint8_t to_on);
51 
52  /* Pointer to function of configuring allmulticast mode */
53  int (*config_allmulticast)(uint16_t port_id, uint8_t to_on);
54 };
55 
59 struct rte_kni_conf {
60  /*
61  * KNI name which will be used in relevant network device.
62  * Let the name as short as possible, as it will be part of
63  * memzone name.
64  */
65  char name[RTE_KNI_NAMESIZE];
66  uint32_t core_id; /* Core ID to bind kernel thread on */
67  uint16_t group_id; /* Group ID */
68  unsigned mbuf_size; /* mbuf size */
69  struct rte_pci_addr addr; /* depreciated */
70  struct rte_pci_id id; /* depreciated */
71 
72  __extension__
73  uint8_t force_bind : 1; /* Flag to bind kernel thread */
74  uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; /* MAC address assigned to KNI */
75  uint16_t mtu;
76  uint16_t min_mtu;
77  uint16_t max_mtu;
78 };
79 
94 int rte_kni_init(unsigned int max_kni_ifaces);
95 
96 
120 struct rte_kni *rte_kni_alloc(struct rte_mempool *pktmbuf_pool,
121  const struct rte_kni_conf *conf, struct rte_kni_ops *ops);
122 
137 int rte_kni_release(struct rte_kni *kni);
138 
151 int rte_kni_handle_request(struct rte_kni *kni);
152 
169 unsigned rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
170  unsigned num);
171 
188 unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
189  unsigned num);
190 
201 struct rte_kni *rte_kni_get(const char *name);
202 
211 const char *rte_kni_get_name(const struct rte_kni *kni);
212 
226 int rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops);
227 
238 int rte_kni_unregister_handlers(struct rte_kni *kni);
239 
257 __rte_experimental
258 int
259 rte_kni_update_link(struct rte_kni *kni, unsigned int linkup);
260 
264 void rte_kni_close(void);
265 
266 #ifdef __cplusplus
267 }
268 #endif
269 
270 #endif /* _RTE_KNI_H_ */
__rte_experimental int rte_kni_update_link(struct rte_kni *kni, unsigned int linkup)
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
int rte_kni_init(unsigned int max_kni_ifaces)
int rte_kni_unregister_handlers(struct rte_kni *kni)
struct rte_kni * rte_kni_get(const char *name)
int rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops)
unsigned rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num)
void rte_kni_close(void)
int rte_kni_handle_request(struct rte_kni *kni)
unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num)
struct rte_kni * rte_kni_alloc(struct rte_mempool *pktmbuf_pool, const struct rte_kni_conf *conf, struct rte_kni_ops *ops)
const char * rte_kni_get_name(const struct rte_kni *kni)
int rte_kni_release(struct rte_kni *kni)