cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bridge.h (3009B)


      1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
      2/* Copyright (c) 2021 Mellanox Technologies. */
      3
      4#ifndef __MLX5_ESW_BRIDGE_H__
      5#define __MLX5_ESW_BRIDGE_H__
      6
      7#include <linux/notifier.h>
      8#include <linux/list.h>
      9#include <linux/workqueue.h>
     10#include <linux/xarray.h>
     11#include "eswitch.h"
     12
     13struct mlx5_flow_table;
     14struct mlx5_flow_group;
     15
     16struct mlx5_esw_bridge_offloads {
     17	struct mlx5_eswitch *esw;
     18	struct list_head bridges;
     19	struct xarray ports;
     20
     21	struct notifier_block netdev_nb;
     22	struct notifier_block nb_blk;
     23	struct notifier_block nb;
     24	struct workqueue_struct *wq;
     25	struct delayed_work update_work;
     26
     27	struct mlx5_flow_table *ingress_ft;
     28	struct mlx5_flow_group *ingress_vlan_fg;
     29	struct mlx5_flow_group *ingress_filter_fg;
     30	struct mlx5_flow_group *ingress_mac_fg;
     31
     32	struct mlx5_flow_table *skip_ft;
     33};
     34
     35struct mlx5_esw_bridge_offloads *mlx5_esw_bridge_init(struct mlx5_eswitch *esw);
     36void mlx5_esw_bridge_cleanup(struct mlx5_eswitch *esw);
     37int mlx5_esw_bridge_vport_link(int ifindex, u16 vport_num, u16 esw_owner_vhca_id,
     38			       struct mlx5_esw_bridge_offloads *br_offloads,
     39			       struct netlink_ext_ack *extack);
     40int mlx5_esw_bridge_vport_unlink(int ifindex, u16 vport_num, u16 esw_owner_vhca_id,
     41				 struct mlx5_esw_bridge_offloads *br_offloads,
     42				 struct netlink_ext_ack *extack);
     43int mlx5_esw_bridge_vport_peer_link(int ifindex, u16 vport_num, u16 esw_owner_vhca_id,
     44				    struct mlx5_esw_bridge_offloads *br_offloads,
     45				    struct netlink_ext_ack *extack);
     46int mlx5_esw_bridge_vport_peer_unlink(int ifindex, u16 vport_num, u16 esw_owner_vhca_id,
     47				      struct mlx5_esw_bridge_offloads *br_offloads,
     48				      struct netlink_ext_ack *extack);
     49void mlx5_esw_bridge_fdb_update_used(struct net_device *dev, u16 vport_num, u16 esw_owner_vhca_id,
     50				     struct mlx5_esw_bridge_offloads *br_offloads,
     51				     struct switchdev_notifier_fdb_info *fdb_info);
     52void mlx5_esw_bridge_fdb_create(struct net_device *dev, u16 vport_num, u16 esw_owner_vhca_id,
     53				struct mlx5_esw_bridge_offloads *br_offloads,
     54				struct switchdev_notifier_fdb_info *fdb_info);
     55void mlx5_esw_bridge_fdb_remove(struct net_device *dev, u16 vport_num, u16 esw_owner_vhca_id,
     56				struct mlx5_esw_bridge_offloads *br_offloads,
     57				struct switchdev_notifier_fdb_info *fdb_info);
     58void mlx5_esw_bridge_update(struct mlx5_esw_bridge_offloads *br_offloads);
     59int mlx5_esw_bridge_ageing_time_set(u16 vport_num, u16 esw_owner_vhca_id, unsigned long ageing_time,
     60				    struct mlx5_esw_bridge_offloads *br_offloads);
     61int mlx5_esw_bridge_vlan_filtering_set(u16 vport_num, u16 esw_owner_vhca_id, bool enable,
     62				       struct mlx5_esw_bridge_offloads *br_offloads);
     63int mlx5_esw_bridge_port_vlan_add(u16 vport_num, u16 esw_owner_vhca_id, u16 vid, u16 flags,
     64				  struct mlx5_esw_bridge_offloads *br_offloads,
     65				  struct netlink_ext_ack *extack);
     66void mlx5_esw_bridge_port_vlan_del(u16 vport_num, u16 esw_owner_vhca_id, u16 vid,
     67				   struct mlx5_esw_bridge_offloads *br_offloads);
     68
     69#endif /* __MLX5_ESW_BRIDGE_H__ */