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