linux/drivers/infiniband/hw/mlx5/ib_rep.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
   2/*
   3 * Copyright (c) 2018 Mellanox Technologies. All rights reserved.
   4 */
   5
   6#ifndef __MLX5_IB_REP_H__
   7#define __MLX5_IB_REP_H__
   8
   9#include <linux/mlx5/eswitch.h>
  10#include "mlx5_ib.h"
  11
  12extern const struct mlx5_ib_profile raw_eth_profile;
  13
  14#ifdef CONFIG_MLX5_ESWITCH
  15u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw);
  16struct mlx5_ib_dev *mlx5_ib_get_rep_ibdev(struct mlx5_eswitch *esw,
  17                                          u16 vport_num);
  18struct mlx5_ib_dev *mlx5_ib_get_uplink_ibdev(struct mlx5_eswitch *esw);
  19struct mlx5_eswitch_rep *mlx5_ib_vport_rep(struct mlx5_eswitch *esw,
  20                                           u16 vport_num);
  21void mlx5_ib_register_vport_reps(struct mlx5_core_dev *mdev);
  22void mlx5_ib_unregister_vport_reps(struct mlx5_core_dev *mdev);
  23struct mlx5_flow_handle *create_flow_rule_vport_sq(struct mlx5_ib_dev *dev,
  24                                                   struct mlx5_ib_sq *sq,
  25                                                   u16 port);
  26struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw,
  27                                          u16 vport_num);
  28#else /* CONFIG_MLX5_ESWITCH */
  29static inline u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw)
  30{
  31        return MLX5_ESWITCH_NONE;
  32}
  33
  34static inline
  35struct mlx5_ib_dev *mlx5_ib_get_rep_ibdev(struct mlx5_eswitch *esw,
  36                                          u16 vport_num)
  37{
  38        return NULL;
  39}
  40
  41static inline
  42struct mlx5_ib_dev *mlx5_ib_get_uplink_ibdev(struct mlx5_eswitch *esw)
  43{
  44        return NULL;
  45}
  46
  47static inline
  48struct mlx5_eswitch_rep *mlx5_ib_vport_rep(struct mlx5_eswitch *esw,
  49                                           u16 vport_num)
  50{
  51        return NULL;
  52}
  53
  54static inline void mlx5_ib_register_vport_reps(struct mlx5_core_dev *mdev) {}
  55static inline void mlx5_ib_unregister_vport_reps(struct mlx5_core_dev *mdev) {}
  56static inline
  57struct mlx5_flow_handle *create_flow_rule_vport_sq(struct mlx5_ib_dev *dev,
  58                                                   struct mlx5_ib_sq *sq,
  59                                                   u16 port)
  60{
  61        return NULL;
  62}
  63
  64static inline
  65struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw,
  66                                          u16 vport_num)
  67{
  68        return NULL;
  69}
  70#endif
  71
  72static inline
  73struct mlx5_ib_dev *mlx5_ib_rep_to_dev(struct mlx5_eswitch_rep *rep)
  74{
  75        return rep->rep_data[REP_IB].priv;
  76}
  77#endif /* __MLX5_IB_REP_H__ */
  78