DPDK 21.11.9
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
28extern "C" {
29#endif
30
31struct rte_kni;
32struct rte_mbuf;
33
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
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; /* deprecated */
70 struct rte_pci_id id; /* deprecated */
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
94int rte_kni_init(unsigned int max_kni_ifaces);
95
96
120struct rte_kni *rte_kni_alloc(struct rte_mempool *pktmbuf_pool,
121 const struct rte_kni_conf *conf, struct rte_kni_ops *ops);
122
137int rte_kni_release(struct rte_kni *kni);
138
151int rte_kni_handle_request(struct rte_kni *kni);
152
169unsigned rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
170 unsigned num);
171
188unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs,
189 unsigned num);
190
201struct rte_kni *rte_kni_get(const char *name);
202
211const char *rte_kni_get_name(const struct rte_kni *kni);
212
226int rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops);
227
238int rte_kni_unregister_handlers(struct rte_kni *kni);
239
257__rte_experimental
258int
259rte_kni_update_link(struct rte_kni *kni, unsigned int linkup);
260
264void rte_kni_close(void);
265
266#ifdef __cplusplus
267}
268#endif
269
270#endif /* _RTE_KNI_H_ */
#define RTE_ETHER_ADDR_LEN
Definition: rte_ether.h:26
unsigned rte_kni_rx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num)
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)
const char * rte_kni_get_name(const struct rte_kni *kni)
struct rte_kni * rte_kni_alloc(struct rte_mempool *pktmbuf_pool, const struct rte_kni_conf *conf, struct rte_kni_ops *ops)
void rte_kni_close(void)
__rte_experimental int rte_kni_update_link(struct rte_kni *kni, unsigned int linkup)
int rte_kni_release(struct rte_kni *kni)
int rte_kni_handle_request(struct rte_kni *kni)
unsigned rte_kni_tx_burst(struct rte_kni *kni, struct rte_mbuf **mbufs, unsigned num)
int rte_kni_register_handlers(struct rte_kni *kni, struct rte_kni_ops *ops)