drivers: update copyright for NXP files
[dpdk.git] / drivers / net / dpaa2 / rte_pmd_dpaa2.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2018-2019 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 enum pmd_dpaa2_ts {
21         PMD_DPAA2_DISABLE_TS,
22         PMD_DPAA2_ENABLE_TS
23 };
24
25 /**
26  * @warning
27  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
28  *
29  * Enable/Disable timestamping update in mbuf for LX2160 kind of devices.
30  * For LS2088/LS1088 devices, timestamping will be updated in mbuf without
31  * calling this API.
32  *
33  * @param pmd_dpaa2_ts
34  *    Enum to enable/disable timestamp update in mbuf for LX2160 devices.
35  */
36 __rte_experimental
37 void rte_pmd_dpaa2_set_timestamp(enum pmd_dpaa2_ts);
38
39 /**
40  * @warning
41  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
42  *
43  * Create a flow rule to demultiplex ethernet traffic to separate network
44  * interfaces.
45  *
46  * @param dpdmux_id
47  *    ID of the DPDMUX MC object.
48  * @param[in] pattern
49  *    Pattern specification.
50  * @param[in] actions
51  *    Associated actions.
52  *
53  * @return
54  *    A valid handle in case of success, NULL otherwise.
55  */
56 __rte_experimental
57 struct rte_flow *
58 rte_pmd_dpaa2_mux_flow_create(uint32_t dpdmux_id,
59                               struct rte_flow_item *pattern[],
60                               struct rte_flow_action *actions[]);
61
62 /**
63  * @warning
64  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
65  *
66  * Create a custom hash key on basis of offset of start of packet and size.
67  * for e.g. if we need GRE packets (non-vlan and without any extra headers)
68  * to be hashed on basis of inner IP header, we will provide offset as:
69  * 14 (eth) + 20 (IP) + 4 (GRE) + 12 (Inner Src offset) = 50 and size
70  * as 8 bytes.
71  *
72  * @param port_id
73  *    The port identifier of the Ethernet device.
74  * @param offset
75  *    Offset from the start of packet which needs to be included to
76  *    calculate hash
77  * @param size
78  *    Size of the hash input key
79  *
80  * @return
81  *   - 0 if successful.
82  *   - Negative in case of failure.
83  */
84 __rte_experimental
85 int
86 rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
87                               uint16_t offset,
88                               uint8_t size);
89
90 #endif /* _RTE_PMD_DPAA2_H */