xref: /dpdk/drivers/net/dpaa2/rte_pmd_dpaa2.h (revision 25e5845b5272764d8c2cbf64a9fc5989b34a932c)
1c1870f65SAkhil Goyal /* SPDX-License-Identifier: BSD-3-Clause
2274fd921SRohit Raj  * Copyright 2018-2024 NXP
3c1870f65SAkhil Goyal  */
4c1870f65SAkhil Goyal 
5c1870f65SAkhil Goyal #ifndef _RTE_PMD_DPAA2_H
6c1870f65SAkhil Goyal #define _RTE_PMD_DPAA2_H
7c1870f65SAkhil Goyal 
8c1870f65SAkhil Goyal /**
9c1870f65SAkhil Goyal  * @file rte_pmd_dpaa2.h
10c1870f65SAkhil Goyal  *
11c1870f65SAkhil Goyal  * NXP dpaa2 PMD specific functions.
12c1870f65SAkhil Goyal  */
13c1870f65SAkhil Goyal 
141094dd94SDavid Marchand #include <rte_compat.h>
15c1870f65SAkhil Goyal #include <rte_flow.h>
16c1870f65SAkhil Goyal 
171def64c2SNipun Gupta /**
181def64c2SNipun Gupta  * Create a flow rule to demultiplex ethernet traffic to separate network
191def64c2SNipun Gupta  * interfaces.
201def64c2SNipun Gupta  *
211def64c2SNipun Gupta  * @param dpdmux_id
221def64c2SNipun Gupta  *    ID of the DPDMUX MC object.
231def64c2SNipun Gupta  * @param[in] pattern
241def64c2SNipun Gupta  *    Pattern specification.
251def64c2SNipun Gupta  * @param[in] actions
261def64c2SNipun Gupta  *    Associated actions.
271def64c2SNipun Gupta  *
281def64c2SNipun Gupta  * @return
29*25e5845bSJun Yang  *    0 in case of success,  otherwise failure.
301def64c2SNipun Gupta  */
31*25e5845bSJun Yang int
321def64c2SNipun Gupta rte_pmd_dpaa2_mux_flow_create(uint32_t dpdmux_id,
33*25e5845bSJun Yang 	struct rte_flow_item pattern[],
34*25e5845bSJun Yang 	struct rte_flow_action actions[]);
35274fd921SRohit Raj int
36274fd921SRohit Raj rte_pmd_dpaa2_mux_flow_destroy(uint32_t dpdmux_id,
37274fd921SRohit Raj 	uint16_t entry_index);
38cfe96771SVanshika Shukla int
39cfe96771SVanshika Shukla rte_pmd_dpaa2_mux_flow_l2(uint32_t dpdmux_id,
40cfe96771SVanshika Shukla 	uint8_t mac_addr[6], uint16_t vlan_id, int dest_if);
411def64c2SNipun Gupta 
425f822962SNipun Gupta /**
435f822962SNipun Gupta  * @warning
445f822962SNipun Gupta  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
455f822962SNipun Gupta  *
4617eda10dSHemant Agrawal  * Dump demultiplex ethernet traffic counters
4717eda10dSHemant Agrawal  *
4817eda10dSHemant Agrawal  * @param f
4917eda10dSHemant Agrawal  *    output stream
5017eda10dSHemant Agrawal  * @param dpdmux_id
5117eda10dSHemant Agrawal  *    ID of the DPDMUX MC object.
5217eda10dSHemant Agrawal  * @param num_if
5317eda10dSHemant Agrawal  *    number of interface in dpdmux object
5417eda10dSHemant Agrawal  *
5517eda10dSHemant Agrawal  */
5617eda10dSHemant Agrawal __rte_experimental
5717eda10dSHemant Agrawal void
5817eda10dSHemant Agrawal rte_pmd_dpaa2_mux_dump_counter(FILE *f, uint32_t dpdmux_id, int num_if);
5917eda10dSHemant Agrawal 
6017eda10dSHemant Agrawal /**
6117eda10dSHemant Agrawal  * @warning
6217eda10dSHemant Agrawal  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
6317eda10dSHemant Agrawal  *
6466c64eb2SHemant Agrawal  * demultiplex interface max rx frame length configure
6566c64eb2SHemant Agrawal  *
6666c64eb2SHemant Agrawal  * @param dpdmux_id
6766c64eb2SHemant Agrawal  *    ID of the DPDMUX MC object.
6866c64eb2SHemant Agrawal  * @param max_rx_frame_len
6966c64eb2SHemant Agrawal  *    maximum receive frame length (will be checked to be minimux of all dpnis)
7066c64eb2SHemant Agrawal  *
7166c64eb2SHemant Agrawal  */
7266c64eb2SHemant Agrawal __rte_experimental
7366c64eb2SHemant Agrawal int
7466c64eb2SHemant Agrawal rte_pmd_dpaa2_mux_rx_frame_len(uint32_t dpdmux_id, uint16_t max_rx_frame_len);
7566c64eb2SHemant Agrawal 
7666c64eb2SHemant Agrawal /**
775f822962SNipun Gupta  * Create a custom hash key on basis of offset of start of packet and size.
785f822962SNipun Gupta  * for e.g. if we need GRE packets (non-vlan and without any extra headers)
795f822962SNipun Gupta  * to be hashed on basis of inner IP header, we will provide offset as:
805f822962SNipun Gupta  * 14 (eth) + 20 (IP) + 4 (GRE) + 12 (Inner Src offset) = 50 and size
815f822962SNipun Gupta  * as 8 bytes.
825f822962SNipun Gupta  *
835f822962SNipun Gupta  * @param port_id
845f822962SNipun Gupta  *    The port identifier of the Ethernet device.
855f822962SNipun Gupta  * @param offset
865f822962SNipun Gupta  *    Offset from the start of packet which needs to be included to
875f822962SNipun Gupta  *    calculate hash
885f822962SNipun Gupta  * @param size
895f822962SNipun Gupta  *    Size of the hash input key
905f822962SNipun Gupta  *
915f822962SNipun Gupta  * @return
925f822962SNipun Gupta  *   - 0 if successful.
935f822962SNipun Gupta  *   - Negative in case of failure.
945f822962SNipun Gupta  */
955f822962SNipun Gupta int
965f822962SNipun Gupta rte_pmd_dpaa2_set_custom_hash(uint16_t port_id,
975f822962SNipun Gupta 			      uint16_t offset,
985f822962SNipun Gupta 			      uint8_t size);
995f822962SNipun Gupta 
100a5b375edSNipun Gupta /**
101a5b375edSNipun Gupta  * @warning
102a5b375edSNipun Gupta  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
103a5b375edSNipun Gupta  *
104a5b375edSNipun Gupta  * Do thread specific initialization
105a5b375edSNipun Gupta  */
106a5b375edSNipun Gupta __rte_experimental
107a5b375edSNipun Gupta void
108a5b375edSNipun Gupta rte_pmd_dpaa2_thread_init(void);
109a5b375edSNipun Gupta 
1100b83e8b1SHemant Agrawal /**
1110b83e8b1SHemant Agrawal  * @warning
1120b83e8b1SHemant Agrawal  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
1130b83e8b1SHemant Agrawal  *
1140b83e8b1SHemant Agrawal  * Generate the DPAA2 WRIOP based hash value
1150b83e8b1SHemant Agrawal  *
1160b83e8b1SHemant Agrawal  * @param key
1170b83e8b1SHemant Agrawal  *    Array of key data
1180b83e8b1SHemant Agrawal  * @param size
1190b83e8b1SHemant Agrawal  *    Size of the hash input key in bytes
1200b83e8b1SHemant Agrawal  *
1210b83e8b1SHemant Agrawal  * @return
1220b83e8b1SHemant Agrawal  *   - 0 if successful.
1230b83e8b1SHemant Agrawal  *   - Negative in case of failure.
1240b83e8b1SHemant Agrawal  */
1250b83e8b1SHemant Agrawal 
1260b83e8b1SHemant Agrawal __rte_experimental
1270b83e8b1SHemant Agrawal uint32_t
1280b83e8b1SHemant Agrawal rte_pmd_dpaa2_get_tlu_hash(uint8_t *key, int size);
1292013e308SVanshika Shukla 
13072cd5a48SJun Yang __rte_experimental
13172cd5a48SJun Yang int
13272cd5a48SJun Yang rte_pmd_dpaa2_dev_is_dpaa2(uint32_t eth_id);
133a0f8ddc4SJun Yang __rte_experimental
134a0f8ddc4SJun Yang const char *
135a0f8ddc4SJun Yang rte_pmd_dpaa2_ep_name(uint32_t eth_id);
13672cd5a48SJun Yang 
1372013e308SVanshika Shukla #if defined(RTE_LIBRTE_IEEE1588)
1382013e308SVanshika Shukla __rte_experimental
1392013e308SVanshika Shukla int
1402013e308SVanshika Shukla rte_pmd_dpaa2_set_one_step_ts(uint16_t port_id, uint16_t offset, uint8_t ch_update);
1412013e308SVanshika Shukla 
1422013e308SVanshika Shukla __rte_experimental
1432013e308SVanshika Shukla int
1442013e308SVanshika Shukla rte_pmd_dpaa2_get_one_step_ts(uint16_t port_id, bool mc_query);
1452013e308SVanshika Shukla #endif
146c1870f65SAkhil Goyal #endif /* _RTE_PMD_DPAA2_H */
147