137165e3fSMichal Swiatkowski /* SPDX-License-Identifier: GPL-2.0 */ 237165e3fSMichal Swiatkowski /* Copyright (C) 2019-2021, Intel Corporation. */ 337165e3fSMichal Swiatkowski 437165e3fSMichal Swiatkowski #ifndef _ICE_REPR_H_ 537165e3fSMichal Swiatkowski #define _ICE_REPR_H_ 637165e3fSMichal Swiatkowski 737165e3fSMichal Swiatkowski #include <net/dst_metadata.h> 837165e3fSMichal Swiatkowski 937165e3fSMichal Swiatkowski struct ice_repr { 1037165e3fSMichal Swiatkowski struct ice_vsi *src_vsi; 1137165e3fSMichal Swiatkowski struct ice_vf *vf; 1237165e3fSMichal Swiatkowski struct ice_q_vector *q_vector; 1337165e3fSMichal Swiatkowski struct net_device *netdev; 1437165e3fSMichal Swiatkowski struct metadata_dst *dst; 15*f6e8fb55SWojciech Drewek struct ice_esw_br_port *br_port; 16c1e5da5dSWojciech Drewek #ifdef CONFIG_ICE_SWITCHDEV 170ef4479dSMichal Swiatkowski /* info about slow path rule */ 180ef4479dSMichal Swiatkowski struct ice_rule_query_data sp_rule; 19c1e5da5dSWojciech Drewek #endif 2037165e3fSMichal Swiatkowski }; 2137165e3fSMichal Swiatkowski 2237165e3fSMichal Swiatkowski int ice_repr_add_for_all_vfs(struct ice_pf *pf); 2337165e3fSMichal Swiatkowski void ice_repr_rem_from_all_vfs(struct ice_pf *pf); 2437165e3fSMichal Swiatkowski 25b3be918dSGrzegorz Nitka void ice_repr_start_tx_queues(struct ice_repr *repr); 26b3be918dSGrzegorz Nitka void ice_repr_stop_tx_queues(struct ice_repr *repr); 27b3be918dSGrzegorz Nitka 281a1c40dfSGrzegorz Nitka void ice_repr_set_traffic_vsi(struct ice_repr *repr, struct ice_vsi *vsi); 291a1c40dfSGrzegorz Nitka 3037165e3fSMichal Swiatkowski struct ice_repr *ice_netdev_to_repr(struct net_device *netdev); 31*f6e8fb55SWojciech Drewek bool ice_is_port_repr_netdev(const struct net_device *netdev); 3237165e3fSMichal Swiatkowski #endif 33