1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (C) 2019-2021, Intel Corporation. */ 3 4 #ifndef _ICE_ESWITCH_H_ 5 #define _ICE_ESWITCH_H_ 6 7 #include <net/devlink.h> 8 9 #ifdef CONFIG_ICE_SWITCHDEV 10 void ice_eswitch_detach(struct ice_pf *pf, struct ice_vf *vf); 11 int 12 ice_eswitch_attach(struct ice_pf *pf, struct ice_vf *vf); 13 int ice_eswitch_rebuild(struct ice_pf *pf); 14 15 int ice_eswitch_mode_get(struct devlink *devlink, u16 *mode); 16 int 17 ice_eswitch_mode_set(struct devlink *devlink, u16 mode, 18 struct netlink_ext_ack *extack); 19 bool ice_is_eswitch_mode_switchdev(struct ice_pf *pf); 20 21 void ice_eswitch_update_repr(unsigned long repr_id, struct ice_vsi *vsi); 22 23 void ice_eswitch_stop_all_tx_queues(struct ice_pf *pf); 24 25 void ice_eswitch_set_target_vsi(struct sk_buff *skb, 26 struct ice_tx_offload_params *off); 27 netdev_tx_t 28 ice_eswitch_port_start_xmit(struct sk_buff *skb, struct net_device *netdev); 29 void ice_eswitch_reserve_cp_queues(struct ice_pf *pf, int change); 30 #else /* CONFIG_ICE_SWITCHDEV */ 31 static inline void ice_eswitch_detach(struct ice_pf *pf, struct ice_vf *vf) { } 32 33 static inline int 34 ice_eswitch_attach(struct ice_pf *pf, struct ice_vf *vf) 35 { 36 return -EOPNOTSUPP; 37 } 38 39 static inline void ice_eswitch_stop_all_tx_queues(struct ice_pf *pf) { } 40 41 static inline void 42 ice_eswitch_set_target_vsi(struct sk_buff *skb, 43 struct ice_tx_offload_params *off) { } 44 45 static inline void 46 ice_eswitch_update_repr(unsigned long repr_id, struct ice_vsi *vsi) { } 47 48 static inline int ice_eswitch_configure(struct ice_pf *pf) 49 { 50 return 0; 51 } 52 53 static inline int ice_eswitch_rebuild(struct ice_pf *pf) 54 { 55 return -EOPNOTSUPP; 56 } 57 58 static inline int ice_eswitch_mode_get(struct devlink *devlink, u16 *mode) 59 { 60 return DEVLINK_ESWITCH_MODE_LEGACY; 61 } 62 63 static inline int 64 ice_eswitch_mode_set(struct devlink *devlink, u16 mode, 65 struct netlink_ext_ack *extack) 66 { 67 return -EOPNOTSUPP; 68 } 69 70 static inline bool ice_is_eswitch_mode_switchdev(struct ice_pf *pf) 71 { 72 return false; 73 } 74 75 static inline netdev_tx_t 76 ice_eswitch_port_start_xmit(struct sk_buff *skb, struct net_device *netdev) 77 { 78 return NETDEV_TX_BUSY; 79 } 80 81 static inline void 82 ice_eswitch_reserve_cp_queues(struct ice_pf *pf, int change) { } 83 #endif /* CONFIG_ICE_SWITCHDEV */ 84 #endif /* _ICE_ESWITCH_H_ */ 85