| /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ |
| /* Copyright (c) 2019-2021 Marvell International Ltd. All rights reserved. */ |
| |
| #ifndef _PRESTERA_ROUTER_HW_H_ |
| #define _PRESTERA_ROUTER_HW_H_ |
| |
| struct prestera_vr { |
| struct list_head router_node; |
| unsigned int ref_cnt; |
| u32 tb_id; /* key (kernel fib table id) */ |
| u16 hw_vr_id; /* virtual router ID */ |
| u8 __pad[2]; |
| }; |
| |
| struct prestera_rif_entry { |
| struct prestera_rif_entry_key { |
| struct prestera_iface iface; |
| } key; |
| struct prestera_vr *vr; |
| unsigned char addr[ETH_ALEN]; |
| u16 hw_id; /* rif_id */ |
| struct list_head router_node; /* ht */ |
| }; |
| |
| struct prestera_rif_entry * |
| prestera_rif_entry_find(const struct prestera_switch *sw, |
| const struct prestera_rif_entry_key *k); |
| void prestera_rif_entry_destroy(struct prestera_switch *sw, |
| struct prestera_rif_entry *e); |
| struct prestera_rif_entry * |
| prestera_rif_entry_create(struct prestera_switch *sw, |
| struct prestera_rif_entry_key *k, |
| u32 tb_id, const unsigned char *addr); |
| int prestera_router_hw_init(struct prestera_switch *sw); |
| |
| #endif /* _PRESTERA_ROUTER_HW_H_ */ |