xref: /dpdk/drivers/common/cnxk/roc_eswitch.h (revision 29a8df5cb664feb6f182c07868c49c0f5c9a4c46)
1df29c91cSHarman Kalra /* SPDX-License-Identifier: BSD-3-Clause
2df29c91cSHarman Kalra  * Copyright(C) 2024 Marvell.
3df29c91cSHarman Kalra  */
4df29c91cSHarman Kalra 
5df29c91cSHarman Kalra #ifndef __ROC_ESWITCH_H__
6df29c91cSHarman Kalra #define __ROC_ESWITCH_H__
7df29c91cSHarman Kalra 
8df29c91cSHarman Kalra #define ROC_ESWITCH_VLAN_TPID 0x8100
9df29c91cSHarman Kalra #define ROC_ESWITCH_LBK_CHAN  63
10df29c91cSHarman Kalra 
11d85c80b4SHarman Kalra typedef enum roc_eswitch_repte_notify_msg_type {
12d85c80b4SHarman Kalra 	ROC_ESWITCH_REPTE_STATE = 0,
13e66a6e54SAnkur Dwivedi 	ROC_ESWITCH_LINK_STATE,
14d85c80b4SHarman Kalra 	ROC_ESWITCH_REPTE_MTU,
15d85c80b4SHarman Kalra } roc_eswitch_repte_notify_msg_type_t;
16d85c80b4SHarman Kalra 
17d85c80b4SHarman Kalra struct roc_eswitch_repte_state {
18d85c80b4SHarman Kalra 	bool enable;
19d85c80b4SHarman Kalra 	uint16_t hw_func;
20d85c80b4SHarman Kalra };
21d85c80b4SHarman Kalra 
22e66a6e54SAnkur Dwivedi struct roc_eswitch_link_state {
23e66a6e54SAnkur Dwivedi 	bool enable;
24e66a6e54SAnkur Dwivedi 	uint16_t hw_func;
25e66a6e54SAnkur Dwivedi };
26e66a6e54SAnkur Dwivedi 
27d85c80b4SHarman Kalra struct roc_eswitch_repte_mtu {
28d85c80b4SHarman Kalra 	uint16_t mtu;
29d85c80b4SHarman Kalra 	uint16_t rep_id;
30d85c80b4SHarman Kalra 	uint16_t hw_func;
31d85c80b4SHarman Kalra };
32d85c80b4SHarman Kalra 
33d85c80b4SHarman Kalra struct roc_eswitch_repte_notify_msg {
34d85c80b4SHarman Kalra 	roc_eswitch_repte_notify_msg_type_t type;
35d85c80b4SHarman Kalra 	union {
36d85c80b4SHarman Kalra 		struct roc_eswitch_repte_state state;
37e66a6e54SAnkur Dwivedi 		struct roc_eswitch_link_state link;
38d85c80b4SHarman Kalra 		struct roc_eswitch_repte_mtu mtu;
39d85c80b4SHarman Kalra 	};
40d85c80b4SHarman Kalra };
41d85c80b4SHarman Kalra 
42d85c80b4SHarman Kalra /* Process representee notification callback */
43d85c80b4SHarman Kalra typedef int (*process_repte_notify_t)(void *roc_nix,
44d85c80b4SHarman Kalra 				      struct roc_eswitch_repte_notify_msg *notify_msg);
45d85c80b4SHarman Kalra 
46*29a8df5cSHarman Kalra /* Generic */
47*29a8df5cSHarman Kalra int __roc_api roc_eswitch_is_repte_pfs_vf(uint16_t rep_pffunc, uint16_t pf_pffunc);
48*29a8df5cSHarman Kalra 
49df29c91cSHarman Kalra /* NPC */
50df29c91cSHarman Kalra int __roc_api roc_eswitch_npc_mcam_rx_rule(struct roc_npc *roc_npc, struct roc_npc_flow *flow,
51df29c91cSHarman Kalra 					   uint16_t pcifunc, uint16_t vlan_tci,
52df29c91cSHarman Kalra 					   uint16_t vlan_tci_mask);
53df29c91cSHarman Kalra int __roc_api roc_eswitch_npc_mcam_tx_rule(struct roc_npc *roc_npc, struct roc_npc_flow *flow,
54df29c91cSHarman Kalra 					   uint16_t pcifunc, uint32_t vlan_tci);
55df29c91cSHarman Kalra int __roc_api roc_eswitch_npc_mcam_delete_rule(struct roc_npc *roc_npc, struct roc_npc_flow *flow,
56df29c91cSHarman Kalra 					       uint16_t pcifunc);
57df29c91cSHarman Kalra int __roc_api roc_eswitch_npc_rss_action_configure(struct roc_npc *roc_npc,
58df29c91cSHarman Kalra 						   struct roc_npc_flow *flow, uint32_t flowkey_cfg,
59df29c91cSHarman Kalra 						   uint16_t *reta_tbl);
608ae147acSHarman Kalra 
618ae147acSHarman Kalra /* NIX */
628ae147acSHarman Kalra int __roc_api roc_eswitch_nix_vlan_tpid_set(struct roc_nix *nix, uint32_t type, uint16_t tpid,
638ae147acSHarman Kalra 					    bool is_vf);
64d921b1bbSHarman Kalra int __roc_api roc_eswitch_nix_repte_stats(struct roc_nix *roc_nix, uint16_t pf_func,
65d921b1bbSHarman Kalra 					  struct roc_nix_stats *stats);
66d85c80b4SHarman Kalra int __roc_api roc_eswitch_nix_process_repte_notify_cb_register(struct roc_nix *roc_nix,
67d85c80b4SHarman Kalra 						    process_repte_notify_t proc_repte_nt);
68d85c80b4SHarman Kalra void __roc_api roc_eswitch_nix_process_repte_notify_cb_unregister(struct roc_nix *roc_nix);
69df29c91cSHarman Kalra #endif /* __ROC_ESWITCH_H__ */
70