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