DPDK  22.03.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_ether.h>
22 
23 #include <rte_kni_common.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 struct rte_kni;
30 struct rte_mbuf;
31 
35 struct rte_kni_ops {
36  uint16_t port_id; /* Port ID */
37 
38  /* Pointer to function of changing MTU */
39  int (*change_mtu)(uint16_t port_id, unsigned int new_mtu);
40 
41  /* Pointer to function of configuring network interface */
42  int (*config_network_if)(uint16_t port_id, uint8_t if_up);
43 
44  /* Pointer to function of configuring mac address */
45  int (*config_mac_address)(uint16_t port_id, uint8_t mac_addr[]);
46 
47  /* Pointer to function of configuring promiscuous mode */
48  int (*config_promiscusity)(uint16_t port_id, uint8_t to_on);
49 
50  /* Pointer to function of configuring allmulticast mode */
51  int (*config_allmulticast)(uint16_t port_id, uint8_t to_on);
52 };
53 
57 struct rte_kni_conf {
58  /*
59  * KNI name which will be used in relevant network device.
60  * Let the name as short as possible, as it will be part of
61  * memzone name.
62  */
63  char name[RTE_KNI_NAMESIZE];
64  uint32_t core_id; /* Core ID to bind kernel thread on */
65  uint16_t group_id; /* Group ID */
66  unsigned mbuf_size; /* mbuf size */
67  struct rte_pci_addr addr; /* depreciated */
68  struct rte_pci_id id; /* depreciated */
69 
70  __extension__
71  uint8_t force_bind : 1; /* Flag to bind kernel thread */
72  uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; /* MAC address assigned to KNI */
73  uint16_t mtu;
74  uint16_t min_mtu;
75  uint16_t max_mtu;
76 };
77 
92 int rte_kni_init(unsigned int max_kni_ifaces);
93 
94 
118 struct rte_kni *rte_kni_alloc(struct rte_mempool *pktmbuf_pool,
119  const struct rte_kni_conf *conf, struct rte_kni_ops *ops);
120 
135 int rte_kni_release(struct rte_kni *kni);
136 
149 int rte_kni_handle_request(struct rte_kni *kni);
150 
167 unsigned rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
168  unsigned num);
169 
186 unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
187  unsigned num);
188 
199 struct rte_kni *rte_kni_get(const char *name);
200 
209 const char *rte_kni_get_name(const struct rte_kni *kni);
210 
224 int rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops);
225 
236 int rte_kni_unregister_handlers(struct rte_kni *kni);
237 
255 __rte_experimental
256 int
257 rte_kni_update_link(struct rte_kni *kni, unsigned int linkup);
258 
262 void rte_kni_close(void);
263 
264 #ifdef __cplusplus
265 }
266 #endif
267 
268 #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:25
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)