vhost: promote some APIs to stable
[dpdk.git] / drivers / net / dpaa2 / rte_pmd_dpaa2.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2018-2021 NXP
3  */
4
5 #ifndef _RTE_PMD_DPAA2_H
6 #define _RTE_PMD_DPAA2_H
7
8 /**
9  * @file rte_pmd_dpaa2.h
10  *
11  * NXP dpaa2 PMD specific functions.
12  *
13  * @warning
14  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
15  *
16  */
17
18 #include <rte_flow.h>
19
20 /**
21  * @warning
22  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
23  *
24  * Create a flow rule to demultiplex ethernet traffic to separate network
25  * interfaces.
26  *
27  * @param dpdmux_id
28  *    ID of the DPDMUX MC object.
29  * @param[in] pattern
30  *    Pattern specification.
31  * @param[in] actions
32  *    Associated actions.
33  *
34  * @return
35  *    A valid handle in case of success, NULL otherwise.
36  */
37 __rte_experimental
38 struct rte_flow *
39 rte_pmd_dpaa2_mux_flow_create(uint32_t dpdmux_id,
40                               struct rte_flow_item *pattern[],
41                               struct rte_flow_action *actions[]);
42
43 /**
44  * @warning
45  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
46  *
47  * demultiplex interface max rx frame length configure
48  *
49  * @param dpdmux_id
50  *    ID of the DPDMUX MC object.
51  * @param max_rx_frame_len
52  *    maximum receive frame length (will be checked to be minimux of all dpnis)
53  *
54  */
55 __rte_experimental
56 int
57 rte_pmd_dpaa2_mux_rx_frame_len(uint32_t dpdmux_id, uint16_t max_rx_frame_len);
58
59 /**
60  * @warning
61  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
62  *
63  * Create a custom hash key on basis of offset of start of packet and size.
64  * for e.g. if we need GRE packets (non-vlan and without any extra headers)
65  * to be hashed on basis of inner IP header, we will provide offset as:
66  * 14 (eth) + 20 (IP) + 4 (GRE) + 12 (Inner Src offset) = 50 and size
67  * as 8 bytes.
68  *
69  * @param port_id
70  *    The port identifier of the Ethernet device.
71  * @param offset
72  *    Offset from the start of packet which needs to be included to
73  *    calculate hash
74  * @param size
75  *    Size of the hash input key
76  *
77  * @return
78  *   - 0 if successful.
79  *   - Negative in case of failure.
80  */
81 __rte_experimental
82 int
83 rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
84                               uint16_t offset,
85                               uint8_t size);
86
87 /**
88  * @warning
89  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
90  *
91  * Do thread specific initialization
92  */
93 __rte_experimental
94 void
95 rte_pmd_dpaa2_thread_init(void);
96
97 #endif /* _RTE_PMD_DPAA2_H */