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