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 u16 vport_num); 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 u16 vport_num); 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 u16 vport_num); 28 #else /* CONFIG_MLX5_ESWITCH */ 29 static inline u8 mlx5_ib_eswitch_mode(struct mlx5_eswitch *esw) 30 { 31 return MLX5_ESWITCH_NONE; 32 } 33 34 static inline 35 struct mlx5_ib_dev *mlx5_ib_get_rep_ibdev(struct mlx5_eswitch *esw, 36 u16 vport_num) 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 u16 vport_num) 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 u16 vport_num) 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 rep->rep_data[REP_IB].priv; 76 } 77 #endif /* __MLX5_IB_REP_H__ */ 78