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 12 #ifdef CONFIG_MLX5_ESWITCH 13 extern const struct mlx5_ib_profile uplink_rep_profile; 14 15 u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw); 16 struct mlx5_ib_dev *mlx5_ib_get_rep_ibdev(struct mlx5_eswitch *esw, 17 int vport_index); 18 struct mlx5_ib_dev *mlx5_ib_get_uplink_ibdev(struct mlx5_eswitch *esw); 19 struct mlx5_eswitch_rep *mlx5_ib_vport_rep(struct mlx5_eswitch *esw, 20 int vport_index); 21 void mlx5_ib_register_vport_reps(struct mlx5_core_dev *mdev); 22 void mlx5_ib_unregister_vport_reps(struct mlx5_core_dev *mdev); 23 struct mlx5_flow_handle *create_flow_rule_vport_sq(struct mlx5_ib_dev *dev, 24 struct mlx5_ib_sq *sq, 25 u16 port); 26 struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw, 27 int vport_index); 28 #else /* CONFIG_MLX5_ESWITCH */ 29 static inline u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw) 30 { 31 return SRIOV_NONE; 32 } 33 34 static inline 35 struct mlx5_ib_dev *mlx5_ib_get_rep_ibdev(struct mlx5_eswitch *esw, 36 int vport_index) 37 { 38 return NULL; 39 } 40 41 static inline 42 struct mlx5_ib_dev *mlx5_ib_get_uplink_ibdev(struct mlx5_eswitch *esw) 43 { 44 return NULL; 45 } 46 47 static inline 48 struct mlx5_eswitch_rep *mlx5_ib_vport_rep(struct mlx5_eswitch *esw, 49 int vport_index) 50 { 51 return NULL; 52 } 53 54 static inline void mlx5_ib_register_vport_reps(struct mlx5_core_dev *mdev) {} 55 static inline void mlx5_ib_unregister_vport_reps(struct mlx5_core_dev *mdev) {} 56 static inline 57 struct 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 64 static inline 65 struct net_device *mlx5_ib_get_rep_netdev(struct mlx5_eswitch *esw, 66 int vport_index) 67 { 68 return NULL; 69 } 70 #endif 71 72 static inline 73 struct mlx5_ib_dev *mlx5_ib_rep_to_dev(struct mlx5_eswitch_rep *rep) 74 { 75 return (struct mlx5_ib_dev *)rep->rep_if[REP_IB].priv; 76 } 77 #endif /* __MLX5_IB_REP_H__ */ 78