| /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ |
| /* Copyright (c) 2021 Mellanox Technologies. */ |
| |
| #ifndef _MLX5_ESW_BRIDGE_PRIVATE_ |
| #define _MLX5_ESW_BRIDGE_PRIVATE_ |
| |
| #include <linux/netdevice.h> |
| #include <linux/if_bridge.h> |
| #include <linux/if_vlan.h> |
| #include <linux/if_ether.h> |
| #include <linux/rhashtable.h> |
| #include <linux/xarray.h> |
| #include "fs_core.h" |
| |
| struct mlx5_esw_bridge_fdb_key { |
| unsigned char addr[ETH_ALEN]; |
| u16 vid; |
| }; |
| |
| enum { |
| MLX5_ESW_BRIDGE_FLAG_ADDED_BY_USER = BIT(0), |
| MLX5_ESW_BRIDGE_FLAG_PEER = BIT(1), |
| }; |
| |
| enum { |
| MLX5_ESW_BRIDGE_PORT_FLAG_PEER = BIT(0), |
| }; |
| |
| struct mlx5_esw_bridge_fdb_entry { |
| struct mlx5_esw_bridge_fdb_key key; |
| struct rhash_head ht_node; |
| struct net_device *dev; |
| struct list_head list; |
| struct list_head vlan_list; |
| u16 vport_num; |
| u16 esw_owner_vhca_id; |
| u16 flags; |
| |
| struct mlx5_flow_handle *ingress_handle; |
| struct mlx5_fc *ingress_counter; |
| unsigned long lastuse; |
| struct mlx5_flow_handle *egress_handle; |
| struct mlx5_flow_handle *filter_handle; |
| }; |
| |
| struct mlx5_esw_bridge_vlan { |
| u16 vid; |
| u16 flags; |
| struct list_head fdb_list; |
| struct mlx5_pkt_reformat *pkt_reformat_push; |
| struct mlx5_pkt_reformat *pkt_reformat_pop; |
| struct mlx5_modify_hdr *pkt_mod_hdr_push_mark; |
| }; |
| |
| struct mlx5_esw_bridge_port { |
| u16 vport_num; |
| u16 esw_owner_vhca_id; |
| u16 flags; |
| struct mlx5_esw_bridge *bridge; |
| struct xarray vlans; |
| }; |
| |
| #endif /* _MLX5_ESW_BRIDGE_PRIVATE_ */ |