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;
15c1e5da5dSWojciech Drewek #ifdef CONFIG_ICE_SWITCHDEV
16*0ef4479dSMichal Swiatkowski 	/* info about slow path rule */
17*0ef4479dSMichal Swiatkowski 	struct ice_rule_query_data sp_rule;
18c1e5da5dSWojciech Drewek #endif
1937165e3fSMichal Swiatkowski };
2037165e3fSMichal Swiatkowski 
2137165e3fSMichal Swiatkowski int ice_repr_add_for_all_vfs(struct ice_pf *pf);
2237165e3fSMichal Swiatkowski void ice_repr_rem_from_all_vfs(struct ice_pf *pf);
2337165e3fSMichal Swiatkowski 
24b3be918dSGrzegorz Nitka void ice_repr_start_tx_queues(struct ice_repr *repr);
25b3be918dSGrzegorz Nitka void ice_repr_stop_tx_queues(struct ice_repr *repr);
26b3be918dSGrzegorz Nitka 
271a1c40dfSGrzegorz Nitka void ice_repr_set_traffic_vsi(struct ice_repr *repr, struct ice_vsi *vsi);
281a1c40dfSGrzegorz Nitka 
2937165e3fSMichal Swiatkowski struct ice_repr *ice_netdev_to_repr(struct net_device *netdev);
3037165e3fSMichal Swiatkowski bool ice_is_port_repr_netdev(struct net_device *netdev);
3137165e3fSMichal Swiatkowski #endif
32